From 8bd0fac913d9ac9753fd5daf118add8d444c0b1b Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Wed, 11 Dec 2019 21:41:15 +0100 Subject: [PATCH 01/15] sha256 testing --- test/circuits/in.json | 1 + test/circuits/out.json | 62307 +++++++++++++++++++++++++++++++++++++++ test/sha256.js | 50 +- 3 files changed, 62344 insertions(+), 14 deletions(-) create mode 100644 test/circuits/in.json create mode 100644 test/circuits/out.json diff --git a/test/circuits/in.json b/test/circuits/in.json new file mode 100644 index 0000000..fba610b --- /dev/null +++ b/test/circuits/in.json @@ -0,0 +1 @@ +{"in":[0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1]} diff --git a/test/circuits/out.json b/test/circuits/out.json new file mode 100644 index 0000000..a32aae5 --- /dev/null +++ b/test/circuits/out.json @@ -0,0 +1,62307 @@ +[ + "1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"1" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"1" +,"1" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +] diff --git a/test/sha256.js b/test/sha256.js index 5214687..78df6aa 100644 --- a/test/sha256.js +++ b/test/sha256.js @@ -3,12 +3,12 @@ const path = require("path"); const snarkjs = require("snarkjs"); const crypto = require("crypto"); -const compiler = require("circom"); - const assert = chai.assert; const sha256 = require("./helpers/sha256"); +const c_tester = require("circom").c_tester; + // const printSignal = require("./helpers/printsignal"); @@ -34,9 +34,10 @@ function bitArray2buffer(a) { } -describe("SHA256 test", () => { - +describe("SHA256 test", function () { + this.timeout(100000); +/* it("Should work bits to array and array to bits", async () => { const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { @@ -80,11 +81,9 @@ describe("SHA256 test", () => { console.log("Vars: "+circuit.nVars); console.log("Constraints: "+circuit.nConstraints); -/* - const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + // const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - const b = Buffer.from(testStr, 'utf8'); -*/ + // const b = Buffer.from(testStr, 'utf8'); const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { b[i] = i+1; @@ -95,7 +94,7 @@ describe("SHA256 test", () => { .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn } /*, {logOutput: true} */); + const witness = circuit.calculateWitness({ "in": arrIn } , {logOutput: false} ); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); @@ -116,16 +115,16 @@ describe("SHA256 test", () => { const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; const b = Buffer.from(testStr, 'utf8'); -/* for (let i=0; i<64; i++) { - b[i] = i+1; - } -*/ + // for (let i=0; i<64; i++) { + // b[i] = i+1; + // } + const hash = crypto.createHash("sha256") .update(b) .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn } /*, {logOutput: true} */); + const witness = circuit.calculateWitness({ "in": arrIn }, {logOutput: false}); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); @@ -133,4 +132,27 @@ describe("SHA256 test", () => { assert.equal(hash, hash2); }).timeout(1000000); +*/ + it ("Should calculate a hash of 2 compressor", async () => { + const cir = await c_tester(path.join(__dirname, "circuits", "sha256_test448.circom")); + + const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; + + const b = Buffer.from(testStr, "utf8"); + + const hash = crypto.createHash("sha256") + .update(b) + .digest("hex"); + + const arrIn = buffer2bitArray(b); + + console.log(JSON.stringify({ "in": arrIn })); + const witness = await cir.calculateWitness({ "in": arrIn }); + + const arrOut = witness.slice(1, 257); + const hash2 = bitArray2buffer(arrOut).toString("hex"); + + assert.equal(hash, hash2); + }); + }); From d5bca9feb69536d28a7ea6d472885edf0fd912de Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 12 Dec 2019 13:04:02 +0100 Subject: [PATCH 02/15] sha256 tests updated to c --- circuits/sha256/sha256compression.circom | 3 + circuits/sha256/sigma.circom | 22 +- circuits/sha256/sigmaplus.circom | 10 +- circuits/sha256/t1.circom | 13 +- circuits/sha256/t2.circom | 13 +- test/circuits/out.json | 62307 --------------------- test/sha256.js | 53 +- 7 files changed, 47 insertions(+), 62374 deletions(-) delete mode 100644 test/circuits/out.json diff --git a/circuits/sha256/sha256compression.circom b/circuits/sha256/sha256compression.circom index 4ec62dc..e8ac441 100644 --- a/circuits/sha256/sha256compression.circom +++ b/circuits/sha256/sha256compression.circom @@ -74,6 +74,9 @@ template Sha256compression() { sigmaPlus[t-16].in7[k] <== w[t-7][k]; sigmaPlus[t-16].in15[k] <== w[t-15][k]; sigmaPlus[t-16].in16[k] <== w[t-16][k]; + } + + for (k=0; k<32; k++) { w[t][k] <== sigmaPlus[t-16].out[k]; } } diff --git a/circuits/sha256/sigma.circom b/circuits/sha256/sigma.circom index 3baa646..0661e53 100644 --- a/circuits/sha256/sigma.circom +++ b/circuits/sha256/sigma.circom @@ -24,22 +24,26 @@ include "shift.circom"; template SmallSigma(ra, rb, rc) { signal input in[32]; signal output out[32]; - - component xor3 = Xor3(32); + var k; component rota = RotR(32, ra); component rotb = RotR(32, rb); component shrc = ShR(32, rc); - for (var k=0; k<32; k++) { + for (k=0; k<32; k++) { rota.in[k] <== in[k]; rotb.in[k] <== in[k]; shrc.in[k] <== in[k]; + } + component xor3 = Xor3(32); + for (k=0; k<32; k++) { xor3.a[k] <== rota.out[k]; xor3.b[k] <== rotb.out[k]; xor3.c[k] <== shrc.out[k]; + } + for (k=0; k<32; k++) { out[k] <== xor3.out[k]; } } @@ -47,22 +51,26 @@ template SmallSigma(ra, rb, rc) { template BigSigma(ra, rb, rc) { signal input in[32]; signal output out[32]; - - component xor3 = Xor3(32); + var k; component rota = RotR(32, ra); component rotb = RotR(32, rb); component rotc = RotR(32, rc); - - for (var k=0; k<32; k++) { + for (k=0; k<32; k++) { rota.in[k] <== in[k]; rotb.in[k] <== in[k]; rotc.in[k] <== in[k]; + } + component xor3 = Xor3(32); + + for (k=0; k<32; k++) { xor3.a[k] <== rota.out[k]; xor3.b[k] <== rotb.out[k]; xor3.c[k] <== rotc.out[k]; + } + for (k=0; k<32; k++) { out[k] <== xor3.out[k]; } } diff --git a/circuits/sha256/sigmaplus.circom b/circuits/sha256/sigmaplus.circom index ec5a457..49637e4 100644 --- a/circuits/sha256/sigmaplus.circom +++ b/circuits/sha256/sigmaplus.circom @@ -26,20 +26,24 @@ template SigmaPlus() { signal input in15[32]; signal input in16[32]; signal output out[32]; + var k; - component sum = BinSum(32, 4); component sigma1 = SmallSigma(17,19,10); component sigma0 = SmallSigma(7, 18, 3); - - for (var k=0; k<32; k++) { + for (k=0; k<32; k++) { sigma1.in[k] <== in2[k]; sigma0.in[k] <== in15[k]; + } + component sum = BinSum(32, 4); + for (k=0; k<32; k++) { sum.in[0][k] <== sigma1.out[k]; sum.in[1][k] <== in7[k]; sum.in[2][k] <== sigma0.out[k]; sum.in[3][k] <== in16[k]; + } + for (k=0; k<32; k++) { out[k] <== sum.out[k]; } } diff --git a/circuits/sha256/t1.circom b/circuits/sha256/t1.circom index 28caed6..369b465 100644 --- a/circuits/sha256/t1.circom +++ b/circuits/sha256/t1.circom @@ -30,23 +30,28 @@ template T1() { signal input w[32]; signal output out[32]; - component sum = BinSum(32, 5); - component ch = Ch(32); + var ki; + component ch = Ch(32); component bigsigma1 = BigSigma(6, 11, 25); - for (var ki=0; ki<32; ki++) { + for (ki=0; ki<32; ki++) { bigsigma1.in[ki] <== e[ki]; ch.a[ki] <== e[ki]; ch.b[ki] <== f[ki]; - ch.c[ki] <== g[ki] + ch.c[ki] <== g[ki]; + } + component sum = BinSum(32, 5); + for (ki=0; ki<32; ki++) { sum.in[0][ki] <== h[ki]; sum.in[1][ki] <== bigsigma1.out[ki]; sum.in[2][ki] <== ch.out[ki]; sum.in[3][ki] <== k[ki]; sum.in[4][ki] <== w[ki]; + } + for (ki=0; ki<32; ki++) { out[ki] <== sum.out[ki]; } } diff --git a/circuits/sha256/t2.circom b/circuits/sha256/t2.circom index 54de837..5a55728 100644 --- a/circuits/sha256/t2.circom +++ b/circuits/sha256/t2.circom @@ -26,22 +26,25 @@ template T2() { signal input b[32]; signal input c[32]; signal output out[32]; - - component sum = BinSum(32, 2); + var k; component bigsigma0 = BigSigma(2, 13, 22); component maj = Maj(32); - - for (var k=0; k<32; k++) { - + for (k=0; k<32; k++) { bigsigma0.in[k] <== a[k]; maj.a[k] <== a[k]; maj.b[k] <== b[k]; maj.c[k] <== c[k]; + } + component sum = BinSum(32, 2); + + for (k=0; k<32; k++) { sum.in[0][k] <== bigsigma0.out[k]; sum.in[1][k] <== maj.out[k]; + } + for (k=0; k<32; k++) { out[k] <== sum.out[k]; } } diff --git a/test/circuits/out.json b/test/circuits/out.json deleted file mode 100644 index a32aae5..0000000 --- a/test/circuits/out.json +++ /dev/null @@ -1,62307 +0,0 @@ -[ - "1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"1" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"1" -,"1" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -] diff --git a/test/sha256.js b/test/sha256.js index 78df6aa..375a10f 100644 --- a/test/sha256.js +++ b/test/sha256.js @@ -37,7 +37,7 @@ function bitArray2buffer(a) { describe("SHA256 test", function () { this.timeout(100000); -/* + it("Should work bits to array and array to bits", async () => { const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { @@ -50,13 +50,9 @@ describe("SHA256 test", function () { }); it("Should calculate a hash of 1 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_2_test.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const cir = await c_tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); - - const witness = circuit.calculateWitness({ "a": "1", "b": "2" }); + const witness = await cir.calculateWitness({ "a": "1", "b": "2" }); const b = new Buffer.alloc(54); b[26] = 1; @@ -75,15 +71,8 @@ describe("SHA256 test", function () { }).timeout(1000000); it("Should calculate a hash of 2 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_test512.circom"), {reduceConstraints:false} ); - const circuit = new snarkjs.Circuit(cirDef); + const cir = await c_tester(path.join(__dirname, "circuits", "sha256_test512.circom")); - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); - - // const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - - // const b = Buffer.from(testStr, 'utf8'); const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { b[i] = i+1; @@ -94,7 +83,7 @@ describe("SHA256 test", function () { .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn } , {logOutput: false} ); + const witness = await cir.calculateWitness({ "in": arrIn }); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); @@ -102,37 +91,6 @@ describe("SHA256 test", function () { assert.equal(hash, hash2); }).timeout(1000000); - - - it("Should calculate a hash of 2 compressor", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sha256_test448.circom"), {reduceConstraints:false} ); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("Vars: "+circuit.nVars); - console.log("Constraints: "+circuit.nConstraints); - - - const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; - - const b = Buffer.from(testStr, 'utf8'); - // for (let i=0; i<64; i++) { - // b[i] = i+1; - // } - - const hash = crypto.createHash("sha256") - .update(b) - .digest("hex"); - - const arrIn = buffer2bitArray(b); - const witness = circuit.calculateWitness({ "in": arrIn }, {logOutput: false}); - - const arrOut = witness.slice(1, 257); - const hash2 = bitArray2buffer(arrOut).toString("hex"); - - assert.equal(hash, hash2); - - }).timeout(1000000); -*/ it ("Should calculate a hash of 2 compressor", async () => { const cir = await c_tester(path.join(__dirname, "circuits", "sha256_test448.circom")); @@ -146,7 +104,6 @@ describe("SHA256 test", function () { const arrIn = buffer2bitArray(b); - console.log(JSON.stringify({ "in": arrIn })); const witness = await cir.calculateWitness({ "in": arrIn }); const arrOut = witness.slice(1, 257); From 30c6cf55b9c4bb55dccb44e028f41da6b8dbd34a Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 12 Dec 2019 16:49:58 +0100 Subject: [PATCH 03/15] Alias Check and Babyjub adapted --- circuits/escalarmulfix.circom | 6 +- src/utils.js | 87 ++++++++++++++++++++++++++++ test/aliascheck.js | 36 ++++++------ test/babyjub.js | 104 +++++++++++++++------------------- test/circuits/in.json | 2 +- test/sha256.js | 8 +-- 6 files changed, 159 insertions(+), 84 deletions(-) create mode 100644 src/utils.js diff --git a/circuits/escalarmulfix.circom b/circuits/escalarmulfix.circom index 8e3e031..e2c0998 100644 --- a/circuits/escalarmulfix.circom +++ b/circuits/escalarmulfix.circom @@ -176,6 +176,9 @@ template SegmentMulFix(nWindows) { cadders[i].in1[0] <== cadders[i-1].out[0]; cadders[i].in1[1] <== cadders[i-1].out[1]; } + for (j=0; j<3; j++) { + windows[i].in[j] <== e[3*i+j]; + } if (i=0)) { + let c = Number(r.and(bigInt(255))); + buff[o] = c; + o--; + r = r.shiftRight(8); + } + if (r.gt(bigInt.zero)) throw new Error("Number does not feed in buffer"); + return buff; +} + + +function stringifyBigInts(o) { + if ((typeof(o) == "bigint") || o.isZero !== undefined) { + return o.toString(10); + } else if (Array.isArray(o)) { + return o.map(stringifyBigInts); + } else if (typeof o == "object") { + const res = {}; + for (let k in o) { + res[k] = stringifyBigInts(o[k]); + } + return res; + } else { + return o; + } +} + +function unstringifyBigInts(o) { + if ((typeof(o) == "string") && (/^[0-9]+$/.test(o) )) { + return bigInt(o); + } else if (Array.isArray(o)) { + return o.map(unstringifyBigInts); + } else if (typeof o == "object") { + const res = {}; + for (let k in o) { + res[k] = unstringifyBigInts(o[k]); + } + return res; + } else { + return o; + } +} diff --git a/test/aliascheck.js b/test/aliascheck.js index 85ff2ae..aff1de0 100644 --- a/test/aliascheck.js +++ b/test/aliascheck.js @@ -1,11 +1,12 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); const compiler = require("circom"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); + +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); @@ -14,7 +15,7 @@ function print(circuit, w, s) { function getBits(v, n) { const res = []; for (let i=0; i { - let circuit; +describe("Aliascheck test", function () { + this.timeout(100000); + + let cir; before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "aliascheck_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains: " + circuit.nConstraints); + cir = await tester(path.join(__dirname, "circuits", "aliascheck_test.circom")); }); it("Satisfy the aliastest 0", async () => { const inp = getBits(bigInt.zero, 254); - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}); }); it("Satisfy the aliastest 3", async () => { const inp = getBits(bigInt(3), 254); - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}); }); it("Satisfy the aliastest q-1", async () => { - const inp = getBits(q.sub(bigInt.one), 254); - circuit.calculateWitness({in: inp}); + const inp = getBits(q.minus(bigInt.one), 254); + await cir.calculateWitness({in: inp}); }); - it("Nhot not satisfy an input of q", async () => { + it("Should not satisfy an input of q", async () => { const inp = getBits(q, 254); try { - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); } }); - it("Nhot not satisfy all ones", async () => { + it("Should not satisfy all ones", async () => { - const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); + const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt.one), 254); try { - circuit.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); diff --git a/test/babyjub.js b/test/babyjub.js index c650cfa..d41c039 100644 --- a/test/babyjub.js +++ b/test/babyjub.js @@ -1,103 +1,89 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); const createBlakeHash = require("blake-hash"); const eddsa = require("../src/eddsa.js"); const assert = chai.assert; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; +const utils = require("../src/utils.js"); describe("Baby Jub test", function () { let circuitAdd; let circuitTest; + let circuitPbk; this.timeout(100000); before( async() => { - const cirDefAdd = await compiler(path.join(__dirname, "circuits", "babyadd_tester.circom")); - circuitAdd = new snarkjs.Circuit(cirDefAdd); - console.log("NConstrains BabyAdd: " + circuitAdd.nConstraints); + circuitAdd = await tester(path.join(__dirname, "circuits", "babyadd_tester.circom")); - const cirDefTest = await compiler(path.join(__dirname, "circuits", "babycheck_test.circom")); - circuitTest = new snarkjs.Circuit(cirDefTest); - console.log("NConstrains BabyTest: " + circuitTest.nConstraints); - - const cirDefPbk = await compiler(path.join(__dirname, "circuits", "babypbk_test.circom")); - circuitPbk = new snarkjs.Circuit(cirDefPbk); - console.log("NConstrains BabyPbk: " + circuitPbk.nConstraints); + circuitTest = await tester(path.join(__dirname, "circuits", "babycheck_test.circom")); + circuitPbk = await tester(path.join(__dirname, "circuits", "babypbk_test.circom")); }); it("Should add point (0,1) and (0,1)", async () => { const input={ - x1: snarkjs.bigInt(0), - y1: snarkjs.bigInt(1), - x2: snarkjs.bigInt(0), - y2: snarkjs.bigInt(1) + x1: bigInt(0), + y1: bigInt(1), + x2: bigInt(0), + y2: bigInt(1) }; - const w = circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input); - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; - - assert(xout.equals(0)); - assert(yout.equals(1)); + await circuitAdd.assertOut(w, {xout: bigInt(0), yout: bigInt(1)}); }); it("Should add 2 same numbers", async () => { const input={ - x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), - x2: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y2: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") + x1: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y2: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") }; - const w = circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input); - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; + await circuitAdd.assertOut(w, { + xout: bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + yout: bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889") + }); - assert(xout.equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); - assert(yout.equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); }); it("Should add 2 different numbers", async () => { const input={ - x1: snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - y1: snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), - x2: snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), - y2: snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") + x1: bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + y1: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + x2: bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + y2: bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") }; - const w = circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input); - const xout = w[circuitAdd.getSignalIdx("main.xout")]; - const yout = w[circuitAdd.getSignalIdx("main.yout")]; + await circuitAdd.assertOut(w, { + xout: bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"), + yout: bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499") + }); - /* - console.log(xout.toString()); - console.log(yout.toString()); - */ - - assert(xout.equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); - assert(yout.equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); }); - it("Should check 0 is a valid poiny", async() => { - const w = circuitTest.calculateWitness({x: 0, y:1}); - assert(circuitTest.checkWitness(w)); + it("Should check (0,1) is a valid poiny", async() => { + const w = await circuitTest.calculateWitness({x: 0, y:1}); + // TODO Check constraints + // assert(circuitTest.checkWitness(w)); }); - it("Should check 0 is an invalid poiny", async() => { + it("Should check (1,0) is an invalid point", async() => { try { - circuitTest.calculateWitness({x: 1, y: 0}); + await circuitTest.calculateWitness({x: 1, y: 0}); assert(false, "Should be a valid point"); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)168700\s!=\s1/.test(err.message) ); @@ -108,18 +94,20 @@ describe("Baby Jub test", function () { const rawpvk = Buffer.from("0001020304050607080900010203040506070809000102030405060708090021", "hex"); const pvk = eddsa.pruneBuffer(createBlakeHash("blake512").update(rawpvk).digest().slice(0,32)); - const S = bigInt.leBuff2int(pvk).shr(3); + const S = utils.leBuff2int(pvk).shiftRight(3); const A = eddsa.prv2pub(rawpvk); const input = { - in : S, - Ax : A[0], - Ay : A[1] - } + in : S + }; - const w = circuitPbk.calculateWitness(input); - assert(circuitPbk.checkWitness(w)); + const w = await circuitPbk.calculateWitness(input); + + await circuitPbk.assertOut(w, {Ax : A[0], Ay: A[1]}); + + // TODO Check constraints + // assert(circuitPbk.checkWitness(w)); }); }); diff --git a/test/circuits/in.json b/test/circuits/in.json index fba610b..702f06c 100644 --- a/test/circuits/in.json +++ b/test/circuits/in.json @@ -1 +1 @@ -{"in":[0,1,1,0,0,0,0,1,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,0,1,1,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,0,1,0,1,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,0,1,1,1,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,0,0,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,0,0,1,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,0,1,0,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,0,0,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,0,1,1,0,1,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,0,0,0,0,1,1,0,1,1,1,0,0,1,1,0,1,1,1,1,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0,1]} +{"in":"3876493977147089964395646989418653640709890493868463039177063670701706079087","Ax":"7544364404313686108640297486043592597084907953513982229886192880342666171487","Ay":"2721089742146723067451923493488918617350881493409568860627491866568993834336"} diff --git a/test/sha256.js b/test/sha256.js index 375a10f..3b1cd62 100644 --- a/test/sha256.js +++ b/test/sha256.js @@ -7,7 +7,7 @@ const assert = chai.assert; const sha256 = require("./helpers/sha256"); -const c_tester = require("circom").c_tester; +const tester = require("circom").tester; // const printSignal = require("./helpers/printsignal"); @@ -50,7 +50,7 @@ describe("SHA256 test", function () { }); it("Should calculate a hash of 1 compressor", async () => { - const cir = await c_tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); + const cir = await tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); const witness = await cir.calculateWitness({ "a": "1", "b": "2" }); @@ -71,7 +71,7 @@ describe("SHA256 test", function () { }).timeout(1000000); it("Should calculate a hash of 2 compressor", async () => { - const cir = await c_tester(path.join(__dirname, "circuits", "sha256_test512.circom")); + const cir = await tester(path.join(__dirname, "circuits", "sha256_test512.circom")); const b = new Buffer.alloc(64); for (let i=0; i<64; i++) { @@ -92,7 +92,7 @@ describe("SHA256 test", function () { }).timeout(1000000); it ("Should calculate a hash of 2 compressor", async () => { - const cir = await c_tester(path.join(__dirname, "circuits", "sha256_test448.circom")); + const cir = await tester(path.join(__dirname, "circuits", "sha256_test448.circom")); const testStr = "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"; From b4cd3889b6e8a5e78056cb92ae3dfa290724cf90 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 12 Dec 2019 19:46:07 +0100 Subject: [PATCH 04/15] babyjub.js adapted --- package-lock.json | 15 ++++++++ package.json | 1 + src/babyjub.js | 48 +++++++++++++++++-------- test/babyjub_js.js | 88 ++++++++++++++++++++++------------------------ 4 files changed, 92 insertions(+), 60 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2881c9a..44007c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1529,6 +1529,21 @@ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, + "fflib": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/fflib/-/fflib-0.0.1.tgz", + "integrity": "sha512-bWTudSfCjkNkOOeSNQf8DmBidxxuzqyjeIdZBfY38T7R+jt381sdx1SYpyve5MQdDlQg1k7UHeb0L/J8WWFWYA==", + "requires": { + "big-integer": "^1.6.48" + }, + "dependencies": { + "big-integer": { + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + } + } + }, "figures": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", diff --git a/package.json b/package.json index 9aa5f55..6861042 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "blake-hash": "^1.1.0", "blake2b": "^2.1.3", "circom": "0.0.35", + "fflib": "0.0.1", "snarkjs": "^0.1.20", "typedarray-to-buffer": "^3.1.5", "web3": "^1.0.0-beta.55" diff --git a/src/babyjub.js b/src/babyjub.js index b3630fd..fe3b27d 100644 --- a/src/babyjub.js +++ b/src/babyjub.js @@ -1,5 +1,6 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const ZqField = require("fflib").ZqField; +const utils = require("./utils.js"); exports.addPoint = addPoint; exports.mulPointEscalar = mulPointEscalar; @@ -16,14 +17,14 @@ exports.Base8 = [ bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; exports.order = bigInt("21888242871839275222246405745257275088614511777268538073601725287587578984328"); -exports.subOrder = exports.order.shr(3); -exports.p = bn128.r; +exports.subOrder = exports.order.shiftRight(3); +exports.p = bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); exports.A = bigInt("168700"); exports.D = bigInt("168696"); function addPoint(a,b) { - const q = bn128.r; + const F = new ZqField(exports.p); const res = []; @@ -31,8 +32,25 @@ function addPoint(a,b) { res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt("1") + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt("1") - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); */ - res[0] = bigInt((bigInt(a[0]).mul(b[1]).add(bigInt(b[0]).mul(a[1]))).mul(bigInt(bigInt("1").add(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); - res[1] = bigInt((bigInt(a[1]).mul(b[1]).sub(exports.A.mul(a[0]).mul(b[0]))).mul(bigInt(bigInt("1").sub(exports.D.mul(a[0]).mul(b[0]).mul(a[1]).mul(b[1]))).inverse(q))).affine(q); + + const beta = F.mul(a[0],b[1]); + const gamma = F.mul(a[1],b[0]); + const delta = F.mul( + F.sub(a[1], F.mul(exports.A, a[0])), + F.add(b[0], b[1]) + ); + const tau = F.mul(beta, gamma); + const dtau = F.mul(exports.D, tau); + + res[0] = F.div( + F.add(beta, gamma), + F.add(bigInt.one, dtau) + ); + + res[1] = F.div( + F.add(delta, F.sub(F.mul(exports.A,beta), gamma)), + F.sub(bigInt.one, dtau) + ); return res; } @@ -47,7 +65,7 @@ function mulPointEscalar(base, e) { res = addPoint(res, exp); } exp = addPoint(exp, exp); - rem = rem.shr(1); + rem = rem.shiftRight(1); } return res; @@ -60,12 +78,12 @@ function inSubgroup(P) { } function inCurve(P) { - const F = bn128.Fr; + const F = new ZqField(exports.p); const x2 = F.square(P[0]); const y2 = F.square(P[1]); - if (!F.equals( + if (!F.eq( F.add(F.mul(exports.A, x2), y2), F.add(F.one, F.mul(F.mul(x2, y2), exports.D)))) return false; @@ -73,15 +91,15 @@ function inCurve(P) { } function packPoint(P) { - const buff = bigInt.leInt2Buff(P[1], 32); - if (P[0].greater(exports.p.shr(1))) { + const buff = utils.leInt2Buff(P[1], 32); + if (P[0].greater(exports.p.shiftRight(1))) { buff[31] = buff[31] | 0x80; } return buff; } function unpackPoint(_buff) { - const F = bn128.Fr; + const F = new ZqField(exports.p); const buff = Buffer.from(_buff); let sign = false; @@ -90,7 +108,7 @@ function unpackPoint(_buff) { sign = true; buff[31] = buff[31] & 0x7F; } - P[1] = bigInt.leBuff2int(buff); + P[1] = utils.leBuff2int(buff); if (P[1].greaterOrEquals(exports.p)) return null; const y2 = F.square(P[1]); @@ -103,7 +121,7 @@ function unpackPoint(_buff) { if (sign) x = F.neg(x); - P[0] = F.affine(x); + P[0] = x; return P; } diff --git a/test/babyjub_js.js b/test/babyjub_js.js index 8e1fc33..b65d71c 100644 --- a/test/babyjub_js.js +++ b/test/babyjub_js.js @@ -1,7 +1,5 @@ const chai = require("chai"); -const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); const babyjub = require("../src/babyjub.js"); const assert = chai.assert; @@ -16,14 +14,14 @@ describe("Baby Jub js test", function () { it("Should add point (0,1) and (0,1)", () => { const p1 = [ - snarkjs.bigInt(0), - snarkjs.bigInt(1)]; + bigInt(0), + bigInt(1)]; const p2 = [ - snarkjs.bigInt(0), - snarkjs.bigInt(1) + bigInt(0), + bigInt(1) ]; - const out = babyjub.addPoint(p1, p2) + const out = babyjub.addPoint(p1, p2); assert(out[0].equals(0)); assert(out[1].equals(1)); }); @@ -41,43 +39,43 @@ describe("Baby Jub js test", function () { it("Should add 2 same numbers", () => { const p1 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const p2 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const out = babyjub.addPoint(p1, p2) - assert(out[0].equals(snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); - assert(out[1].equals(snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); + const out = babyjub.addPoint(p1, p2); + assert(out[0].equals(bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"))); + assert(out[1].equals(bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"))); }); it("Should add 2 different numbers", () => { const p1 = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const p2 = [ - snarkjs.bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), - snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311"), + bigInt("16540640123574156134436876038791482806971768689494387082833631921987005038935"), + bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311"), ]; - const out = babyjub.addPoint(p1, p2) + const out = babyjub.addPoint(p1, p2); - assert(out[0].equals(snarkjs.bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); - assert(out[1].equals(snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); + assert(out[0].equals(bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"))); + assert(out[1].equals(bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499"))); }); it("should mulPointEscalar 0", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("3")); + const r = babyjub.mulPointEscalar(p, bigInt("3")); let r2 = babyjub.addPoint(p, p); r2 = babyjub.addPoint(r2, p); assert.equal(r2[0].toString(), r[0].toString()); @@ -88,65 +86,65 @@ describe("Baby Jub js test", function () { it("should mulPointEscalar 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499")); + const r = babyjub.mulPointEscalar(p, bigInt("14035240266687799601661095864649209771790948434046947201833777492504781204499")); assert.equal(r[0].toString(), "17070357974431721403481313912716834497662307308519659060910483826664480189605"); assert.equal(r[1].toString(), "4014745322800118607127020275658861516666525056516280575712425373174125159339"); }); it("should mulPointEscalar 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; - const r = babyjub.mulPointEscalar(p, snarkjs.bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311")); + const r = babyjub.mulPointEscalar(p, bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311")); assert.equal(r[0].toString(), "13563888653650925984868671744672725781658357821216877865297235725727006259983"); assert.equal(r[1].toString(), "8442587202676550862664528699803615547505326611544120184665036919364004251662"); }); it("should inCurve 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; assert(babyjub.inCurve(p)); }); it("should inCurve 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; assert(babyjub.inCurve(p)); }); it("should inSubgroup 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; assert(babyjub.inSubgroup(p)); }); it("should inSubgroup 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; assert(babyjub.inSubgroup(p)); }); it("should packPoint - unpackPoint 1", () => { const p = [ - snarkjs.bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), - snarkjs.bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), + bigInt("17777552123799933955779906779655732241715742912184938656739573121738514868268"), + bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475"), ]; const buf = babyjub.packPoint(p); - assert.equal(buf.toString('hex'), '53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85'); + assert.equal(buf.toString("hex"), "53b81ed5bffe9545b54016234682e7b2f699bd42a5e9eae27ff4051bc698ce85"); const p2 = babyjub.unpackPoint(buf); assert.equal(p2[0].toString(), "17777552123799933955779906779655732241715742912184938656739573121738514868268"); assert.equal(p2[1].toString(), "2626589144620713026669568689430873010625803728049924121243784502389097019475"); @@ -154,11 +152,11 @@ describe("Baby Jub js test", function () { it("should packPoint - unpackPoint 2", () => { const p = [ - snarkjs.bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), - snarkjs.bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), + bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), + bigInt("4338620300185947561074059802482547481416142213883829469920100239455078257889"), ]; const buf = babyjub.packPoint(p); - assert.equal(buf.toString('hex'), 'e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709'); + assert.equal(buf.toString("hex"), "e114eb17eddf794f063a68fecac515e3620e131976108555735c8b0773929709"); const p2 = babyjub.unpackPoint(buf); assert.equal(p2[0].toString(), "6890855772600357754907169075114257697580319025794532037257385534741338397365"); assert.equal(p2[1].toString(), "4338620300185947561074059802482547481416142213883829469920100239455078257889"); From 4117ebc64acdf2c1c1332ddcfa6276515bc66dbf Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Fri, 13 Dec 2019 18:35:29 +0100 Subject: [PATCH 05/15] pedersen working --- circuits/binsub.circom | 6 +- src/eddsa.js | 62 +- src/mimc7.js | 17 +- src/pedersenHash.js | 3 +- src/poseidon.js | 20 +- test/binsub.js | 62 +- test/binsum.js | 37 +- test/circuits/binsub_test.circom | 7 +- test/circuits/in.json | 2 +- test/circuits/out.json | 5543 ++ test/circuits/pedersen_test | Bin 0 -> 2375156 bytes test/circuits/pedersen_test.cpp | 51580 ++++++++++++++++ .../pedersen_test.dSYM/Contents/Info.plist | 20 + .../Contents/Resources/DWARF/pedersen_test | Bin 0 -> 2615866 bytes test/circuits/pedersen_test.sym | 13108 ++++ test/circuits/sum_test.circom | 7 +- test/comparators.js | 251 +- test/eddsa.js | 19 +- test/eddsa_js.js | 8 +- test/pedersen.js | 61 +- 20 files changed, 70521 insertions(+), 292 deletions(-) create mode 100644 test/circuits/out.json create mode 100755 test/circuits/pedersen_test create mode 100644 test/circuits/pedersen_test.cpp create mode 100644 test/circuits/pedersen_test.dSYM/Contents/Info.plist create mode 100644 test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test create mode 100644 test/circuits/pedersen_test.sym diff --git a/circuits/binsub.circom b/circuits/binsub.circom index ec52d83..6721442 100644 --- a/circuits/binsub.circom +++ b/circuits/binsub.circom @@ -48,12 +48,14 @@ template BinSub(n) { var lin = 2**n; var lout = 0; - for (var i=0; i> i) & 1; // Ensure out is binary diff --git a/src/eddsa.js b/src/eddsa.js index beae967..adc2d6c 100644 --- a/src/eddsa.js +++ b/src/eddsa.js @@ -1,11 +1,13 @@ const createBlakeHash = require("blake-hash"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const babyJub = require("./babyjub"); +const utils = require("./utils"); const pedersenHash = require("./pedersenHash").hash; const mimc7 = require("./mimc7"); const poseidon = require("./poseidon.js"); const mimcsponge = require("./mimcsponge"); + exports.prv2pub= prv2pub; exports.sign = sign; exports.signMiMC = signMiMC; @@ -30,26 +32,26 @@ function pruneBuffer(_buff) { function prv2pub(prv) { const sBuff = pruneBuffer(createBlakeHash("blake512").update(prv).digest().slice(0,32)); - let s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + let s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); return A; } function sign(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msg])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const R8p = babyJub.packPoint(R8); const Ap = babyJub.packPoint(A); const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); - const hm = bigInt.leBuff2int(hmBuff); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const hm = utils.leBuff2int(hmBuff); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -59,16 +61,16 @@ function sign(prv, msg) { function signMiMC(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hm = mimc7.multiHash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -78,16 +80,16 @@ function signMiMC(prv, msg) { function signMiMCSponge(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hm = mimcsponge.multiHash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -97,17 +99,17 @@ function signMiMCSponge(prv, msg) { function signPoseidon(prv, msg) { const h1 = createBlakeHash("blake512").update(prv).digest(); const sBuff = pruneBuffer(h1.slice(0,32)); - const s = bigInt.leBuff2int(sBuff); - const A = babyJub.mulPointEscalar(babyJub.Base8, s.shr(3)); + const s = utils.leBuff2int(sBuff); + const A = babyJub.mulPointEscalar(babyJub.Base8, s.shiftRight(3)); - const msgBuff = bigInt.leInt2Buff(msg, 32); + const msgBuff = utils.leInt2Buff(msg, 32); const rBuff = createBlakeHash("blake512").update(Buffer.concat([h1.slice(32,64), msgBuff])).digest(); - let r = bigInt.leBuff2int(rBuff); + let r = utils.leBuff2int(rBuff); r = r.mod(babyJub.subOrder); const R8 = babyJub.mulPointEscalar(babyJub.Base8, r); const hash = poseidon.createHash(6, 8, 57); const hm = hash([R8[0], R8[1], A[0], A[1], msg]); - const S = r.add(hm.mul(s)).mod(babyJub.subOrder); + const S = r.add(hm.times(s)).mod(babyJub.subOrder); return { R8: R8, S: S @@ -128,10 +130,10 @@ function verify(msg, sig, A) { const R8p = babyJub.packPoint(sig.R8); const Ap = babyJub.packPoint(A); const hmBuff = pedersenHash(Buffer.concat([R8p, Ap, msg])); - const hm = bigInt.leBuff2int(hmBuff); + const hm = utils.leBuff2int(hmBuff); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -153,7 +155,7 @@ function verifyMiMC(msg, sig, A) { const hm = mimc7.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -177,7 +179,7 @@ function verifyPoseidon(msg, sig, A) { const hm = hash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -199,7 +201,7 @@ function verifyMiMCSponge(msg, sig, A) { const hm = mimcsponge.multiHash([sig.R8[0], sig.R8[1], A[0], A[1], msg]); const Pleft = babyJub.mulPointEscalar(babyJub.Base8, sig.S); - let Pright = babyJub.mulPointEscalar(A, hm.mul(bigInt("8"))); + let Pright = babyJub.mulPointEscalar(A, hm.times(bigInt("8"))); Pright = babyJub.addPoint(sig.R8, Pright); if (!Pleft[0].equals(Pright[0])) return false; @@ -209,14 +211,14 @@ function verifyMiMCSponge(msg, sig, A) { function packSignature(sig) { const R8p = babyJub.packPoint(sig.R8); - const Sp = bigInt.leInt2Buff(sig.S, 32); + const Sp = utils.leInt2Buff(sig.S, 32); return Buffer.concat([R8p, Sp]); } function unpackSignature(sigBuff) { return { R8: babyJub.unpackPoint(sigBuff.slice(0,32)), - S: bigInt.leBuff2int(sigBuff.slice(32,64)) + S: utils.leBuff2int(sigBuff.slice(32,64)) }; } diff --git a/src/mimc7.js b/src/mimc7.js index d2f84c1..5cfb421 100644 --- a/src/mimc7.js +++ b/src/mimc7.js @@ -1,7 +1,8 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); +const ZqField = require("fflib").ZqField; + const Web3Utils = require("web3-utils"); -const F = bn128.Fr; +const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); const SEED = "mimc"; const NROUNDS = 91; @@ -10,7 +11,7 @@ exports.getIV = (seed) => { if (typeof seed === "undefined") seed = SEED; const c = Web3Utils.keccak256(seed+"_iv"); const cn = bigInt(Web3Utils.toBN(c).toString()); - const iv = cn.mod(F.q); + const iv = cn.mod(F.p); return iv; }; @@ -22,7 +23,7 @@ exports.getConstants = (seed, nRounds) => { for (let i=1; i{ for (let i=0; i { @@ -60,5 +61,5 @@ exports.multiHash = (arr, key) => { exports.hash(bigInt(arr[i]), r) ); } - return F.affine(r); + return r; }; diff --git a/src/pedersenHash.js b/src/pedersenHash.js index e14f089..22558d7 100644 --- a/src/pedersenHash.js +++ b/src/pedersenHash.js @@ -1,5 +1,4 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const babyJub = require("./babyjub"); const createBlakeHash = require("blake-hash"); diff --git a/src/poseidon.js b/src/poseidon.js index 71fee67..5c75dac 100644 --- a/src/poseidon.js +++ b/src/poseidon.js @@ -1,8 +1,10 @@ -const bn128 = require("snarkjs").bn128; -const bigInt = require("snarkjs").bigInt; -const blake2b = require('blake2b'); +const bigInt = require("big-integer"); +const blake2b = require("blake2b"); const assert = require("assert"); -const F = bn128.Fr; +const ZqField = require("fflib").ZqField; +const utils = require("./utils"); + +const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); const SEED = "poseidon"; const NROUNDSF = 8; @@ -12,11 +14,11 @@ const T = 6; function getPseudoRandom(seed, n) { const res = []; let input = Buffer.from(seed); - let h = blake2b(32).update(input).digest() + let h = blake2b(32).update(input).digest(); while (res.length { for (let i=0; i { } mix(state, M); } - return F.affine(state[0]); + return F.normalize(state[0]); }; }; diff --git a/test/binsub.js b/test/binsub.js index 21e5ad3..f15e1ae 100644 --- a/test/binsub.js +++ b/test/binsub.js @@ -1,55 +1,53 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -function checkSub(_a,_b, circuit) { +async function checkSub(_a,_b, circuit) { let a=bigInt(_a); let b=bigInt(_b); - if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shl(16)); - if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shl(16)); - const w = circuit.calculateWitness({a: a, b: b}); + if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shiftLeft(16)); + if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shiftLeft(16)); + const w = await circuit.calculateWitness({a: a, b: b}); - let res = a.sub(b); - if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shl(16)); - assert( w[circuit.getSignalIdx("main.out")].equals(bigInt(res)) ); + let res = a.minus(b); + if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shiftLeft(16)); + await circuit.assertOut(w, {out: bigInt(res)}); } -describe("BinSub test", () => { +describe("BinSub test", function () { + + this.timeout(100000); + let circuit; before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "binsub_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains BinSub: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "binsub_test.circom")); }); it("Should check variuos ege cases", async () => { - checkSub(0,0, circuit); - checkSub(1,0, circuit); - checkSub(-1,0, circuit); - checkSub(2,1, circuit); - checkSub(2,2, circuit); - checkSub(2,3, circuit); - checkSub(2,-1, circuit); - checkSub(2,-2, circuit); - checkSub(2,-3, circuit); - checkSub(-2,-3, circuit); - checkSub(-2,-2, circuit); - checkSub(-2,-1, circuit); - checkSub(-2,0, circuit); - checkSub(-2,1, circuit); - checkSub(-2,2, circuit); - checkSub(-2,3, circuit); + await checkSub(0,0, circuit); + await checkSub(1,0, circuit); + await checkSub(-1,0, circuit); + await checkSub(2,1, circuit); + await checkSub(2,2, circuit); + await checkSub(2,3, circuit); + await checkSub(2,-1, circuit); + await checkSub(2,-2, circuit); + await checkSub(2,-3, circuit); + await checkSub(-2,-3, circuit); + await checkSub(-2,-2, circuit); + await checkSub(-2,-1, circuit); + await checkSub(-2,0, circuit); + await checkSub(-2,1, circuit); + await checkSub(-2,2, circuit); + await checkSub(-2,3, circuit); }); diff --git a/test/binsum.js b/test/binsum.js index 099ad38..32408f1 100644 --- a/test/binsum.js +++ b/test/binsum.js @@ -1,35 +1,36 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const crypto = require("crypto"); -const compiler = require("circom"); +const tester = require("circom").tester; + +const bigInt = require("big-integer"); const assert = chai.assert; -describe("Sum test", () => { +describe("Sum test", function () { + + this.timeout(100000); + it("Should create a constant circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "constants_test.circom")); - const cirDef = await compiler(path.join(__dirname, "circuits", "constants_test.circom")); - assert.equal(cirDef.nVars, 2); + // TODO + // assert.equal(cirDef.nVars, 2); - const circuit = new snarkjs.Circuit(cirDef); + const witness = await circuit.calculateWitness({ "in": bigInt("d807aa98", 16)}); - const witness = circuit.calculateWitness({ "in": "0xd807aa98" }); - - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt("0xd807aa98"))); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt("d807aa98", 16))); }); it("Should create a sum circuit", async () => { + const circuit = await tester(path.join(__dirname, "circuits", "sum_test.circom")); - const cirDef = await compiler(path.join(__dirname, "circuits", "sum_test.circom")); - assert.equal(cirDef.nVars, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) + // TODO + // assert.equal(cirDef.nVars, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) - const circuit = new snarkjs.Circuit(cirDef); + const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }); - const witness = circuit.calculateWitness({ "a": "111", "b": "222" }); - - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt("333"))); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt("333"))); }); }); diff --git a/test/circuits/binsub_test.circom b/test/circuits/binsub_test.circom index a633064..254b6f3 100644 --- a/test/circuits/binsub_test.circom +++ b/test/circuits/binsub_test.circom @@ -6,6 +6,8 @@ template A() { signal input b; signal output out; + var i; + component n2ba = Num2Bits(16); component n2bb = Num2Bits(16); component sub = BinSub(16); @@ -14,9 +16,12 @@ template A() { n2ba.in <== a; n2bb.in <== b; - for (var i=0; i<16; i++) { + for (i=0; i<16; i++) { sub.in[0][i] <== n2ba.out[i]; sub.in[1][i] <== n2bb.out[i]; + } + + for (i=0; i<16; i++) { b2n.in[i] <== sub.out[i]; } diff --git a/test/circuits/in.json b/test/circuits/in.json index 702f06c..ee2ba8c 100644 --- a/test/circuits/in.json +++ b/test/circuits/in.json @@ -1 +1 @@ -{"in":"3876493977147089964395646989418653640709890493868463039177063670701706079087","Ax":"7544364404313686108640297486043592597084907953513982229886192880342666171487","Ay":"2721089742146723067451923493488918617350881493409568860627491866568993834336"} +{ "in": ["0", "0"]} diff --git a/test/circuits/out.json b/test/circuits/out.json new file mode 100644 index 0000000..3757e9a --- /dev/null +++ b/test/circuits/out.json @@ -0,0 +1,5543 @@ +[ + "1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +,"0" +,"1" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"0" +,"1" +,"0" +] diff --git a/test/circuits/pedersen_test b/test/circuits/pedersen_test new file mode 100755 index 0000000000000000000000000000000000000000..154e24136168d14b912d471fff4910426f1a33fe GIT binary patch literal 2375156 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�W$%bZtU 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

iBZjKB6o)EO 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

~a6Zh0ut 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

J@=rEy8ieBbuZ=hKS;KR4VfY2RX z-@k&JrS;u#VG9+&!)g7iru8q403Np`beXLH-f}k__r?q04|e^h1n?HHoV&YTY03hf z^y^fvz~2B~iTiSnyu0(j7F`M8S>#rt3*dZu=u~?%Er2^fW03`L?&f&9QT?X<6A%aV zz-o~Ma6VOyB!IVrB*LvU_MVXd{uR?ItpGk9cAQ482Zc?Ct~jegnmm4br)Wt~03XyH zt3?vP1F32x0lZ^RntVR@OFuSB0DseqVu4RxEePP_C|W7keJ~b(cfm>KQ7rINVi6R; z`)q;LA_?Gy)MAWU#7}84Xt0`S!3h<>8z8cfD>>L)WC8p-CRkblybnb$BsQOS#z}_? z;B9Cokp%Fy)MBUrew(h&PyzfYoD_&nRs#4gOvkhWxF-cOBviGXFjS!e_z$}B!Ub?A z8dXZ4!3=tc8jB==pMX;Yk;+^EZ)p!Ccnv+(5houifd7hNwQvC(gO$`+!-A84m>P>D zfR{iv!Q`_Rz@2GarT}h@SE((48!<_30sI=H6>hTHEIz_0VW68Bfvlta&_`X&$n$a< zoxsRba~kc(C~h>k10zqw>7!zdJQt@0@GqEcm8JmxfKi3f*K>qg62SAAD*vVjGlQv8 zaGIXNw9NMynvP?tM4YDEF;y;3(+*6Pj??s8NW9Dh@K{RKQ~|sbm)Eo4w{d+h(WIT3T<&F=l%L7vacExz z@F(NA{gFodBe}kpcOrlXak-at(tal{hutMz6H@*QtP;rrc(UvF#WAV#dXegz0{DJL zDgmXJYZ$5Q6LcOUm3o4XWTf&=(B6zx(g_;KNM&5h&ol$u;es0~fKTm!)rxQti7tQ}V8aE=O-lm!2#lB#z(?SBJRz@N98KjS zfJeFVg;Y*?W3^BL`~yT1&OnSB3Kzg1 zkRr`W03SdD%kf9v^0_;V2iHtH-f#gtk_SiCH%b71gSpbO06qbBn(mRcL2bfA1#mBa zW9-g;BJjxi4l2v20=V3N8gq?#e*)q-H0y={ej490g5<=v>bzvJ1n@!rFzS-0mm+}I z_zyyE7~Y?Ncn{P_W&(KCCYY+B0(f&;dO`(oKgci0=!Bm%waK&50vLanl)V66nr{o> zBE0Y+_79H4UV;L6fMeA@69K&as8I=0ed0Reo2qYnvKa&hY?c~s8|%~$krN8>^Z6`kei ze}on(y2R0wg_bC~&e8pZmMOZ`5*}57&~imf9NkQ4g`)p)blq?-8r6zE=IHA}ha4R$v`NthN4Er;g#ezEivdY_nhpx! zUpKUcg)LM752N+38dj;ae=2ytO`*$d1#quEIPQ%X!0-3|rvz{}SkB#DuQX+WP9uO{ z#eI1i0emI7mFNPvA3b!cy_pukn?Yld1#r7R@pOj@;PE+lyNe`%`%%?M0=NK@2)ELh zMHva;UofrG3gFXV$7$qxP}pqt2Ts0_k{Ca|QEBmjH%Lbny!Py%S-_8OR1VFfOq8bdKWg)fm?8SU2^%Kuryc#_zN!g(n{J{$>oq! zz5w21H@FPpdH7cN#d>o4w{m?i(WITrx!lV#DL;eD(!=mPi?*l@ve(~WQCcZc%e znrX)yE`ayq!BO>%62NOPS6UXpWw6u4vkUQRP@C{j0i5S=j7$K5){Dw9lOS7B7kQvU_ExO z&qM$}1fejDV@ zSU>`yDN8 zv;2jvf)_R_al#8*N%xPy<+a5Vx$y$HzRf=+fH#Nb+}-s`c^+(ii}GQ7{Gaj%mAC?b z1Nar(m!}cHSCCtYE`Yb9hfcLO(*n3XG!|I^xBUuFcc=i~{~N4U?9W+mfP#MoVJoT{ zNdRvPNrYQzXf`te{4=IiS^+!-cAQ482Zc@hFL73d*nPTx1n$5!SS^wO?oU+PGt`-FFF%+$o>pmEZ4WHvA^C%Yh>80zEpa3pv#A=ZQ@B`Fh zj9SD`X)$Q9zM};vQ~>`0k%e5z!R8_h;FXwQX$5c*MK2^apMHjuZVvks5L?qsA_?GY zsKrnL{3czUp#u05I4QWnr@!dNKU^x|q0#;kxOte4X$5e13T8;C9{&_WRUh^zAbz7O zFI)h3pi!mt8O)#usj)}`crlzJh*ahRIL{tP@EUru0Vf|SfdBjgtAz{T&ajdiYglmd zi>R?$KJ|DD(kpYYYAs|FOg?J?+>yp*3gA|FmD&RMD@;;b0Kdw}62LW#5-tu}E6!mA zvX1gYqyJ;%c{z=aXXL3ljrL^}HyYfIktgExQJooiE=~*JpD^1h&2IqLGpaE9dWKL- z0{9N5%D?HsT*g!>I89GtTIPEUO~*1-B2Lq7nJO2jX?vzh$7#A25-&3WJcd#=RRHh6 z<@GLXq652ed0le(AFwo70{C+-_tHw*d6ml{r+fjtJAVHFo`-Mo-+++%w{U$g(WHC^ zmwQ%R3Rk1G(HwI%&THm!}BepJ0_p7Qm;tewX<# zH%L3nsJQrRcyUyM}h2|9w2$~!@OF;YnaeCnkKGXF75EtA~ z0etc&Sgi;*Qt1TnIdF@EWi(>}+=iMj^e;X=;Gh8R%v}`VP@)Uqk72_F%S}rHcoIfT z3E)Zi9Z$%+W%SmDFMvn7@&~A#*4AQnZ{9b6??aV6cHN9i*5!1$d_VY?9o=Q8Clovb zcf60G&8N`fr#m270Dra`tAz^S?;(w%H^%PlCj#F9ehZalQ~`XJ|1{7@wZul)xhHw^C^!0&(>$xHyh_AaJs zr~r=9(z61eTGIWch`x|tkkJW0X=;;aqXjVjE-8BfocOtIPOHT1nRj!q)!yIM-J4#v zT;6y;eQhl$fb$*uug^pPH{Qw;>t8+-0o>;{W{3Ms1aOIC!+jl7XC=wU(|6g|VyJ%u(Ydb^`}K(i3Qhkk_1M#|H4 z@K*iv8@RBA3g98M{#Db$hLycVI_ckv+qa$;HqyO(x2WLCR1#4D_iUo&jt^OyTe*3c zMN3=N&z^ZPFI@P`&2lvazPC{c|04kJ!R@D2Vn(9X?3rgky-NBlo?HBU!=}Zvm%?4F zy0{fKQbvtb;g8BW*m&h)JvF!;b%o{J-StYTvf3V{6TmOyzC4Wpo=I*cx&ZD=51qR6 z>9{xH>E=RXkp*y@Iy~J6;$*Av(;H>d-vBOt8>Rg~X;|B~Ch201u>@L=wRNr4~a4@Ede> zh6>=1;iN!pvJ${?OvkhWcnb<z|C~!g$v-#XjCbE1~cdZYAlifehf|# zL@ILu+|wRN@EWRp1t%XWfd6c#8$Ed>S>uEwQ3EP62PBvxtCVb&MRCF zIpquB-SGPdu=)F+{|1EA{~y=)5>3kg!{uIL2H6xXMg3e*2Qcuv~ zj8xtU8o@{Z~3?8IFZ;83Cq;MK6d50Xz~fe2D!5`r2Ah0QYmO%4Z^g z$5pccJI7}tfG=`vlFvi{FLG>{&qM%!?pR-+i2&|-E%(>TXCi9o=1MgF5yBN4pEv0(iBf z>**bkWC7gedLGsLLSsrUj&}4Zq4|oQ>*#Gl3l+V`(MyFEDf*tHCkQQ3wEYb{sxd;# z6dmE{Afe@op6O^ip%seW;pm!Xyh<<{)r!91=&M5GingA^qgp7mM$y5JUL!Q2=wwIF z5n89{&5j-_v_a8V9UUyRNzo0C_5_-R06yd;3`ok;ba1ou(^I&xg$m$3Y5l9Fg-u)1 zBmq2TDXt|m$=zWE6gKUi#90;6+(R@KF@4l3@Ka(D{08vePh+)60(b$n7^4>PQ(6oftaY^D zgbLu_AhM7vnF-)mFu~Fa;Jqn&A+h=7ah!Ch03JXyi6nrlsKrnLTt`=Dr~qCKCk0}Y zl>oj2(=n|8?nc233DskZF;t-fcs*Tt;R3iljVh(jUnTDl3EMIssP@O%j;d(Lc>cBoOW`-XPSPCaKQ}~z$ZS6)rxQGZ3SO!UgcVq)4+8z~g9OIsV97K6fQNxMte%h6~_fJUFVp zQ3CiY%$1e}@UgJdbdRhV3E=Mj#@H0VZ=kY_DuB=MpT?2|@KI>i4FOz>Zy7;y;#+lI zvRDFmyg!UO^^8GPQv~pr{)14G0DcS9NM-`~)%!73Lj`bWT6#hSaBs*j$mpm77=M?P zy#Ri8g)M;h!V4c_KcBv~78Jl+Id-+rL;&AAgXLMd&qM%!;Mie469L@$az1XT&qM(4 z<5(Y`i2y#|u^gX?0KVU`FZi{GfB^p3u@xQ*2;kUE9?kti<4VNt+qcNqL$MZkB$$2N$+b0X&%2ziP5OX$0^-58_&qr2y{!0*-s*1@Jq|{wV?61(tJn z*DFoF-K6^l@N(RjrxCz2$gM;dz`g0AQ|-;P0B#G7MHaxV@5a*|DuDN!kJTax;NDa< zk^tTsk_flbm_->0;2$up(hA^HV8?0XdQjN3y$femNJ)&J-YH5F!292a)glStt*B}w z0le)3ntav*_{#?<7WmZFf&e~}qLp&p2V?R3Je*`6#R5Mi7C`|#@?NYKNdV8M7Gu;R zeoBi$gSD0xoKOMW43ULg$xHyhj0u)j0FR{Tg~aCLI8HiL0QaYvL=wPPQ;VSjcokip zp#u0LI4KaDtOW4wn2u=$@a7cEkWf8(2ZkzC0RKu?Ubq0xrBS8y8O)#s)L0||{0N*P zh*ahRxVt@&;5GF4?Kt^R0sPyYSS?%tcYu}DSi^#oe~=oBB!Cw~Ho@ex7QpRkT&4j2 z3p3Fcz@Ibn9Gw<~D;QYMX-@`~Hp!9wfBb9xE&Ss=iPtakERNe_1 z#z-Zdpsg6GjMGjo_)N3a&A8x(3g8oN!)isikxD0k&w^VVETb6<;7zFcLjU5^0}cw{ z4%|fn4kfw({tz}?X$0^g7%?S)55ezvLS84{qH+eCtgZ z+I$Kve!A-@Spa`>3swsi!0RBAa0X)3P`ChohZJd60(d_fSdKsPme1Y6Jh*1s@rDcF zp*%RMzEJ}BOU#v)1@JMj({zul842Jm{Ee|Gfa_3MMiszQ{im@c0emEybwdC@fo~Z> za^hQcUb0vMcz=Hwb?O^&?u}Ytb0B&;uORTefCIWbvV~6@o1n`-T4e^-> z;CYVq_L&IacO3hhUu^)%n-Brqemalkb774Y-fvt-I=0+n0ReorqYH$_m580^Xr)js zfZuZTOrZ&NY?}*tOa}|q0(gj{y9#Yk$DZbBH=$Yp-{R;muemc8_!AJXIr^T^n39Ws zJNl&1d_{NtKOXZfLJJi=$>KL;pjx64T{coba$am ziazCNcc57a;FAAgKvJHjgPWxvuEB*ZQ~>Wm>t8k5oiqY?^o`JEwgPyIhj82*FM!`( z_)iJo&aj-jyIyJX?IxW7ehK&GX$0_p$gM;dz+2Kor`nro0o(=}i!6XQ`7fUCPysyl zI;<8+0B=cEBMIPvkVLqZ#w^N605@S;r4_&@!;aI)^`Nk6Q-!lCq$I{q?-V5o;Noks zS|kD7m#Rh*z}s9;lh0ZJe=&z*flpm62;fqRR?2lBjKy!2ILSPU1%65_f&zH2YOEGX z0N+O~#;8U7loo>q>l<2dLIv=8h%DqvW&(HxCRkblycb0;BsQzB!byh;;Cz}%BmrDW zErtr<*XimE6~G_DNrBj8C4g_kbWAINyHYSiLiNaO3{|KA{)Mi*Z~@$oMwQZMFoWh( zW03^#!*GfqQke_jE$o2=uc5`WaPpx7xcO?V7A}A{gO$`+!-A84fEtS=fFFZwg2`ts zfOBbFrU2f6nP>~(&lq`*P7A{2j4T2CAftqfgFfn7Mj-1bKQua@k>}+!I+~HE<}@l| z6gL_i#K;qI`l!tqc`i;1;O{ZpYytc>qY9(1CkeGAfNx={{F@%kB}|oq)AV?zWxmJI zbTm^X;xrw|RJk}!+b~r+PSdX;@iG&@qbOBV1@N|9Uhl#tItSiI1n?(Z z?xmH~U(V%_Q@#M+8_(>0sQeytQIPO*Fq%W48*9RZ~^=_DblP2@K_pHjz992 z&)q>hxMte%h6~^!JUFVpQ3Ci2%$1e}@X@f-bdRhV3E*!2#@H0Vt58`+6~L$aPh&{} zxD?I0A%Gvpw~Qb;@vS;9Su6ou><^<(J!9Ac_;de3C`kan0cs>O0sQj6F;znaa7S8t zLIrRy$S=s~r~(*&mz2E#e)?8h01w9tA7X#+lh{j80QYh1Dxc+hH?osYX90GW&qM&v zb?gwI6?w<4bZk$bi2%--%584xvoi0vJskUsUu_5o;3tKc#{vTQbw}q5 zjVlqGa|Vy+Dxq2c@8;+kLKEuPlN~)ss20FCI$9{SK^?oo(anWw0sOn8KR@BlSU>>p zcqWheU7;~07mstaR%pJW)sFs8XrZD@9lcm+k)l64dYsS_MYlPNM^z-WOwm$D2M8@! z^eRU;6s zplG9`y9sSlbjxxc)fPar5WojtjsZz|nhtK3nl8kJEmQ#SPU~Ma*_|{3xTpfU%vJz* zn~US#cme#@P5+bt?gY!ZyX%!E-)_7Ak^0X*&^tQJWC_o1qh1n{6sX!2PL;Lk6mSm0Av3j+8EidM>XAB;uwG@N7}#R5Mi z7C`|#;{UK(BmsOcwHTuo@l#q18mu+6;Did`Um>!PE13!4<(Ob;1@H)pUPx>{Iu9ou zDuDaZOd<*3tEk0L0sIk1d+;I0C%$o61;{U`xj0=Q~<9(AFG86;P$YR8f#c^^7m6? zkp%FgkWDc8tOam88kZ@6|HMqR1@NbgJV&Pm;Y*Ax0sH`?go}eds+tkVI?4}?rZMuo zoJL16^3nz4VTxuu!#=r%;jEk zN%^m^G*|-oV=nj7O6tGF<&aap0N(i_Y-4%jjqr>01g4B6EOZ80wd>12? zfYSRcMk@ORoykb0o}fb*sk{?3gpo=*L46phjMGjo_)OF1Ok8k71@Q6bV6`ILNTn0N zXTU8EmeGs_a1J$J=wEz#z(E1rp1UZ(p+pzJ@56>GjQ}peh$#VFg5U9kyngmRDi;Af z)Ro^$<+QdIvwQRY5x6_Sab_lf|2Gvwn@^#|Pj?+93*gmfW3^BL{0&4B&OnSB3Kzg{ zks{4X0Pjl!%kf9v^0}M9gKMT8Z@2*7lLtrDH%b71j=9pZ06q$Kn(mP`BLTd*zcF@a zKN0vx;9f^%8C3wE=0A;>>sSJ(o07+&}g`+M%f zUV;L+w_~$?CIWcbv8<`i^qC0Y^^Q&SnF!z=j^pD7`%DDz@s9QKnF!$P9oxXKHUtFl za>qUu<_q9I9DC7Y0RgJpTLbU+C*3qd#6YAJyj!qD&1@JG9?jp27 z9lLEAkE*LsEr5@7^rw05j0FU6rK9f%jVZbKjH6Eo%~$k$M{gEdsA&HacvKe&EmHJQ zM~@X+qUcOVM+q%c^a)4%3oTc4jiarFRw&y0L>|?baW5LxicWBJxzM> z3g8oA$7$qxP}sCS0cTZ6NsOP~DM}K+`<;T-A_?H$R5g+S-g+`kK5GH|*=ZCDeCldJ z03S}#O1bWXu~>gRPBM>Tfu9nKpa33zGFFQufbXFeW7HykN{c~*)kq6Yr~v*2A`7{a znE-wX6D+L&9!}86lgk zccEa0gsSFP3{|KA{)w)h#S!Q`_Rz-?(4Qj4T0s zKcj?;gFfmSMj-1bKQuazk>}+!I+Bs6<}})yQQT;7AR|x2>7#NPc`i;1;BPV8Yytcx zqY9(1CkVA9fNy51{F@%kMNE}~)AU%TWxmJIbQDu1;xz5gRJk}!TQgNUPSYz2uVeUtnpl1n_Du_tHx0zsTi~Q@#M+X)d<0ym1cvVm-Ov zIb7dMG->A&F88ub%1`0)IJ7SU_`RFB{lP~2gSoz!cOroMa=Dju(taB*PZ7Z1!YYw0 zfRA_mK68EQyq=-@rU1T^kxD@6{YpkE`vjfANTr^jiHua<3EGp9N;*Nk8L5oZPA>RN z)B6Zqa6<*~aYtjdBHT!&6Tnm976;2{#sc{7qpu0W|auL8oT=_jzPHStD0GPh&{}_;57qh5&vH-!g*a#JB3aWU&PBe*Q4( z)H8-HfIsyggpvgCDo`Vt3E<_2V5)`+;LT|12^GLSA-^D_qY7aBT~hV}cuBb}fQRCR z53#?y3VR6(;4K}SToofDd=9#AhOauX1b;pNRl|*0DUFi2(l5u|N6M zhJXOx<`5oBgD_tJALZB!9t#NIs~x>pXk3ZdXC0j-R14rHM^6`;P{$59l*e?SP%VHD zb985+4eHn{9E}Op0=U-EA1mD%3kcwE9DQ48Ov%MQhw-Q$7n-l=L5|K9TBvA+qyHzg zNYO_eJw|AWqF*?=x6m?0draa{BT!hx4ee5}HtSA4ks+TBqoFjvgemLD731Efm_MXuYGG1I6C?f&< zEv8jk0ek}NIE`En3Y$%6@`aSd`01UZBmq43V4Qp;0lXzujU<2vPNd0aEr35glwyHT zT`dUUNffP=>pmEZU-!pJ=20y0Q(_Smz{3v0YLNu+-PB@?TEtIjF=(*9rUfTd0RIe; zg!0bCC!1!9wx0RA7Q zV_E^+nSvP-szu{)#GwNCN4oOD1@NXcs+2y18FUXd7D)g<1g8ihmAL@!Y7ZoM4L!0S zPCirs|1ut{g$v+zu#y^USa9<5sj)}`_+iKU$y@Bg{i6-q_%;jE|N%_fK9*6ct0Ka<~x4(zc{vKT4%R3RkeYo69I%$7XE>97_ z>tK~g7Qn~3exJT1bzVW26#LdcT5^%059;8L8A0RKiH*ouI*tRMH9Bl99?d z?c{>bG+U0w1vgXxA3GMS72!rIod7-^ZgH@TW-NgJ+83KI^e;X=;Gh6*$6XZQP@)Uq z_h7@7MgSj#5mN&AApDLe%uE2!9ffnxr_kc3 zyN;3t@P}itTBrbSgcAj4AVv*^3*a|Mk!B@;_o0F1_#sZ05|v#LP-Mnbxe$O1JwT`yz>hk*lh6ir?3a#q5vm1n&v87eAEvo877)PuJNlN;n39VZ zIl5SAzM=~qy-8@HqMtZ=q0k~lyB71Pjuu*?=om*w3N2G~nxp-MmMeOnqpgHiDEhvm zpP%PNqgv4p`}3$?6dG4_q@(u+(R@L?3Kl3@Ka(D6u?7=Vzo#D z_%3QOMlIr}v=}s4U(tdSDu922$U?4UCV*eS1WPM`hf?%HV)OoPIO$LU+=pfoNdR9- zErtro+0RKQ&Ubp~mO`}TbGnhel zQ)7_?@Ip965UI=saLgV^@EUr!5GNlhfPdZttAz{Twy=^KYglmd_fcb!1aJ*x6HGp9 z0lX=V%M`%BVJ6xF_+v(%qtk+L86!&o&u5fyanMIqF#=gf`JvIj7RN(`yG@a6<*~F}q;3BHT!&6TqjzEe@8^j0Nz9 zow4~s|KigF4hrD5+(iKnCAt897dBjJ1n>lmm=eGf@H?K6*H7WQRZ0L4cI9_bIjyZp z0{9MaoS6yWo3_Kb=Tm6$(_Kf&0{DZSuv(}9{u)jcoPiiM6fS`4NRehGfJf87a{Q6E zeD22c;F@X28!mu%=fP3+jS|2Om@6#{;3HtCiDwt$m5~7M;%|&i0sJZ|%cuhQRR3u# zNdO;)X5A3LkKkKIkev8dotG?@0N&RhMxA=bum$iZ{)14G0DcYBNM-`~#ceQELj`ay zEj^(ExI5$*oS~=!7=M?Py#TI-RxAO$Ctmmv`#Vp-UV;KR&#^0fCIYx&2urNfeI^2U zi=oU8@|g(WV#jv#nF!#E9qZvU5x_N${m!p81O)IGj(sf57r=SLcq~gj77)PW9lcv< zT#49=9lb)R7QhcVIz?zg9oyjOc%fPVZ$6wywWH7mb?m;5b{47y@cE859q-OqKmgBo z^i82LB^N(%^f96Nigp~qqq`I$dayqUDYrCA37*J00CiXqlpKJGzz7az)$j z#iPm*TA}DrM?X8xi$=Agr#t$B(72+vI(o0r8bx1sbe7PBqB$dZRHqBAQ*<{+4;0#< z=*f=mEVN0{8y$@S%|ZYlup*lZ7WmZFf&f00qLp&p2V?PbUz}tf#R5Mi7C`|# zWB^u+B!KUv7Gu;ReoBi$gY_jXIH3agM~E!sN@fCh875d-0X&4F7ZRKLJ~-)60oY~$0=S8;yl?@$35_bH z&tL}KMU6!gzz@PHf=Fd9fVVYP4p+y+)sV+{*V{$6S^BPi-SJuYDOUIC_gkhhmq&yG&-D- zr{**o!6j64^o1@JeRZMFbj#i+vQ>oGzt3E&%M!MT$SGd{Z+|$pvApp*_{Dm1zt?enFVUo(|KoBm%cT57E{{X|B7onX z#O?29w7(nI_wr5z@RnTeC7rat374k`;BR1+NEX1yxPF&ROr6&fs&5M5I~b`1l-@6A zq_R)YX^d3r2|9?8$~!^3Gg3(>D36iKIPK(u&op`6als80z(@DOYDKt_N+*D)z%34z z(ToM~pLy7Pp?~q|0S5(e8}6b2hZ0=?zXKbtGy?cQjF=L@2jX`;A+ML(nZ0DlE13eG@`8VVP{t4NV%C4h@) zU^)KCTRwOD^Wd6k#~UtycjLiP^^Fq1pJ1-EEPxM(ohF`Lh*w4exU;`8HU;o2s4Sxj z;8Xmku_OU}D4KOc06&ax89{R5TXkNtSOR#AKa4u{jA0AlkNpRsBmuk<)JSFm_=Omz zYN!BiM@vtr0Nw)f3(inf0gS&(%3c6J0j*d9craf05c_!tU@t)d+|#j{J`({vY6liz zr}<0-@VSmn@Raoig(fM4J4pAx{iu$;TQUTN~}CY=CI;J!SK0KS;qN^}9d1wC}Cy_puke}k)t zEP(%PkEc6S0FUa7)glStEvRZF0o)go2(n`+W>H20_!~^Cv;z1z*l`-U9uziz=i;mi zDT(pZJ4HzXc%M#KEs_B4NmU~W;QTH$`K$%-$6YBF_|(;c06v7Gm2%w&WARfvoMaxw z0zV}dK>@sHN30e}0MDZqW7HykN{c~*^#v_Bp#t~^h%DqvW&(IACRkblyeCC3BsTB0 z#Yu+>;4Nt;kp%EeYB5v*uh%a!gNe4fICnyLqhdn8ys<{0REnq zop1r%ibj>vXE1~Aq{bo%;0NFoL8LMlz@6=Z1h1h*o8sg{1@Mow?1T&8O<^T9*0A8@ z@1e#b3E+nyn_%);3*b#?T&4hCkC|u-;Ex!2j!p~0=NVZ7_+CZ{7YBV*B_oh^lph+E zGxEHgMw1wMYEGl!jN(Rv{TO*7P9L=?BhSTY0lWsY%@)9~GpaE9dX!L00(cHn<=^yR zE?}w@oTf)IE%QBwrX!dt5vOTirpm=>`ZuOlWtGx#ntlp2GXXq|QZ-co_vi9@7dFv> z?YZ1bE-C*3mIg}zzt81~yxP0B=`>Z7grR7JjjwT>o0G?kvgv@slF+I zZ)c(!=mPj{*l?v0zz1N&lmI>ezvBsc z{Up9yr3CQqu6!Pq)7o0h?#=s0;BEuQnVA5dvjNXQK7|%P-F1{Kfa_afh(ZPMmvExs z48*9RZ~^=}DblP2@F*Hsjz992&s{MOu9G6Ifo)p^Nc3E+MF zVbrN-3|j!N_8)}YFuZ>R?p07DnF-)!zhg#+3gEW1^n?oFZjfJahN22!{9RJ^0{C%g z#S*}K;Drydj}OLPf&#dQW0(6(1n})!u^yY^GZDaVI(DGXL;$z#$Hx`=Oa$<7$F}g9 z2;j3EYvxxQ0s{C>$37C~3*dJhOL#0GfOGSCGE7DH6s?r&J{XH1f51uR;qg`YDX|C&;K9FQwMYUuPA$f$Mf{W&g9ht!T5vjsRcnIC zLayXsy_r~h_RK%&+N&y~sNnxpF4q0P%%8^uODli}Q}jY&^KKJPx*2<@!cUpWA;(;` zxZUO7y3FrIGl?XCFQ*nm1@Q8pvExty{5G5vh)q@k_(n{}v;ufD3T8;C9{3(dTu-6G zPYKn9eIA{3*y;;!;6>s)T6V$(a1MqDfdsFihrYwf zhYH{yXxRxDz^!2=b@9{7NO1CZQ)9J$s9UbO5V8p-pS1vPMdLCB@UNJOwgCQ+k>}{N zAWSe?;U=rmJ&Y0tx{49VI?4}y)Y*(YFQ?IAj65}`(J)4Fqrt5hc_L09)tZs#;9%4li+g5DPI5=Y!90^ zxS3SbZ|N!5r2T5H?$k%cQ)F%j3|#2;eujZ}KZp~d3 z;83Cq;J0AIl|}%M$A~EbJRZN}33*+M?^Y=RyqhbJQ#s|k(`B9jz7-s2W&-$zuW|1A z6k7ar*Ilvzes3*S3l+d$z=?u05Tk~|1@LR6NV5{ad(*&j{E_Qq3!b}iJh*1s@rDcF zLLMAd-zWjR8gr#(0el$jH1X_0yc%do>VzggvT}uK3CxO){>Ipy{X{?juRvuPRREvl zKaIJ@JOMlr&AK6g7vWn*FbsUF&Px_c0FU;EQI|Zu32}G~=hA6ldY3nTAXE$B>mB`;-T{F#77)NMI=V_|Ov%Odjy^0jU(xNl^Qf*DTBzvJj!qL=q-d3+ zM+hxZ^f^a|2`y9f2S~4GJ})$`=#!4#CA3D- zwT{jdnozWFPaf4|p>>KL?CAbN8x+0F(H(>~Df+0Roq%Q`fQ!GudjZ`5^!+QiSz7Z6 zE^MI!ct=|Qs$qRe`!|4xeMJk~EPqL=;3bJlA`0M+f8n?{UI4Fz+fS>+j6|#1Gta;Q z(`WJA;^!MSEuOs;?qb#d&)RthMp11IJoK&+8}_J_NRe2<9t#i^GX?#^u1f5z{-zdL8{J@@RLnO}B! zWzFygSwTY^jsF=n_8L4+ux=Z+#MZE#%Uy3Mbr{QyX76E(}xfR;@%TwbH zsf4+6>x3)t2?WN`nO-{W#hK6_Ro8&4h%JCuev8XJ7$-X#kHIJ>O&>OTLYp>A#BJ^K zBX%ou9c%%G1#oBT8cP6g0YwCP?~hl{=^McHSXNmD@JaB*>8bUwuvzmB&Z>kak4K&S zqbGpayD1QRr9WV|-mXLD$!|BmG-$0 z=VHm%ILR(BnydnN*E;MLO8`Gg5eq3I9yPmRgY_eAI31(9Er!fOtrTFt*aA3-1(sC+ z?@HN=$jxV8;iOUhW);9)XeO})@J$pkQUK5R4lf)jfak-aKyLC9z+iIDLoOBf2kHHA1QzvXxoVv zz|G@K{s{^eO8~zJ)dZ8zTL2f(xV!>*DORFi0Dr|OaCBB5zQbsyth7Z>GD>>TNJb#* zXj$x87cdIEoJB`53e=oM{TU@Z0k>ilh&X#zb4G!SvjX@xthP~J0X&ycrRQ3&63Qfi z?`CTJn;pz$OpSuG^f;y!&SO}*2U8>BEZu^sadDQe!P3eofWHTtn*i=drJ62)x8e3$ zNt^1xHryT*m$om4t-&XNzu@*{YMght9cs!6;2!w>19<2f<9-35@yBrgpwP7aa&8Z* zOxsW8_5{RN0sIMkKLO+S^~CSX{e!ww0lX=<2Sumx*THT8^Gy@Lzi~U1+knd8f9vOX zx$ax;#|;|iE$Z(Tzz;Dp1*m7;z{pgeqO%#9(o=LOBU5*ZN*I}x6&@ZrCDLzPL6ToM|Ee^KP{@9Otj~u?Me-vRexZ-mRUlONlbG}3|T>{S- zIlQYm55EmCq;Aw$(}o2!4<5J};CMz&zzIu%BR&{2W(4rT_#IDZe+z$GWd!g}(*7v5 z)83jQfFDFtK48I3*Dfen|K@?s3*hv$J7ahS?*0VlUWCIMjmKbEleX*7{FcFs0$uj` zXV@)L0RIFF1uIZUf#|KNt%=FHj9OT9%_T*emjK>}23Fv%Vv8-j%maCFjr7DzgKIDk zzdSf<;lcIg!BO`n3E*$ARx%6Vqu@ysR~PbCmo|=Z^mk+Z&JuTE0o=ho7<&b9H7d)v z0{C?IHkKlQ%h9ZR1n|rFD1E?=pp(IU#7HeYaY{pUx7Y+U`DSrX{21M}* z;GOBmmeuu-(AU<&0(c`~H#$}n+)z$x#RBYX$5a4U2|L8G(%`)Jh3)8=3gAXzogJ$P z&gI#X%VoO_bc zfl93azC&oS(mHc)QfPanRsjDcbOHSaBvk-+ZOfzjNNJ&wi^mEbue8X}5kl`$T4LxV zp_eKxHFSZ{W0jU0x^+7qRez-whL#K6Tu2G{7Ab&x(f(IO8=JMHDSrU#Uqc%k>0Z8DRPx3~EinafhkDxX_>}4V_pWBOBZs4- zm3z>zwC$2wc)Oefx1WDU0JnneT&_4Y?TRUPQ|`b5cq%@xXA!_xl3SsTzdSYWkjiuc zyaBy*nrAcn4dB(_Dq;)Z71g-hsD85w;JxQ!w=y?2`v4Rcz#CB4SOR!+C?b56#;fNf zfPcfX$|`_QgeOiKQnz5}G_7gC$D&2Jn7!uv;tvyb*ORcCj+&X{!%u@oU)bnxew=};RBpx7s>@5H5cJ;0PivzyTuZ~k5I%yiik&z z7}j?`(1sH!fEPh#p;ihoTx|n5utbol+y!t4N>9Y( zU!0DUj}*X*Y1@ewz|G=J{&5O6(WN?bo?d`zg30GCfY;$i5e$SZj1__ZU?utm@Ry7N zM`zEP#%QJ|;1i6J9yEdx$U0gU8}NKaftR!BNJj7)nRZq`MhOqvl2IVyY`|uW0vBfm z@UK{Hqr3um4x>uXwZ;?5B!KT?I?TBUJD5wE;?2Ml`Bx**?X@yF)q$DR9xB&;a|N8kp9YQdCiV9U;0GC*0@SlA8JX%+bQU91dWsHVWa>^) zUq+_r6m7()%+;ga_`>>eqp7$rM+)HM-ojkICB%g zcTL8*7g1{QDD{^54dBn-!ETWP_(xbMSb;(cL~l)PP0Ta_Jckr%UIKV;8d!n5iY>PA z+6~~rHPRC=4X(jF{H6)u9eHrny-5Q2Ypj*b0{BRH(!|w;eAT6mV;ns;cm;5K_h9T5 zz%x);#udP)xwo+t0em=`b&mjk34dh-#fiVF3yQ@jfcJC5s7ak(ngIUFy$GcU;F+LC zaudMGiCC(U0=NZjJu_iwSv_$f)EBH!lBPh5H8FKIRsiGQlJXb8uR|1{0Nx2d_>lXD z>1%6Y0lcBG8yr&sJh`zgop+XFDu5RYJJ>N5z}v6j^ZGcZ0{A##8#tx{c$BcE{L_Yz z0DecOJXb+`z z=G<*o@u=DsY-Qd(!|enNLp+FLjVt)hUua^y1jpeAC`W5 z9XGZ}0o;@Jzbe|;vIyXQlW;G|^PhldKM%*<^lt#q{^Z{hz%5}rm%HB3v<*7tZps~4 z08hc^bMMFiE+AFC)Q0sJeLRaOCf0z7egYCSAHSB=M6l~57mF<7D$0le=7>=sJ^ zZ%AEZ3E(Z?qREr_9W|W(()!UQ{eCx^}fDfZ=rG4(hxmf%PPO=N-0*{)DumIlq z4eS<606$C-3n?NVHDXxb)zO9%DS#J3W}#LJFkEZ_JPivhs{r1avKNt?`7h(78_8ZXcLCg<(i1WH7hc54M+)FYwCzL- z;DR`le~f}nbg9mqr{|%XVDfnj;I;Ts^b6p>u@e0PxRz1i=&W3v%E%{xA7_-5BCu!O z$_Qi~EsI6xF$%n#MMp3S)SN}TGfH>@Zow!JarUeNMuCg70{9oKwozUIJeyIa=UT52 z$|QjAWNQ4I9n2+6@n+zOd<@eHKkdiVh&UU0Gp5GHS-J{KE29AZ7HDn)csDB5bOF2- zx7W(#R0p==_Mo`5eIaZOJ^}n0w$PP5@N zxGzTv;A3CFZl(AjmF*kAXTU8Ew$Ypg@bc#|e2IU+VToA4mng=e#23Id@W6%pas~lB z2s35`@F4t-C)D)>{B4yHzPA+8xA$YosS$8eD^U_)QbQ zeRy!xy-5Q2E3B2w0{94c(!|w;eAT6mV;ns;cm;4f_h2lmpA5aSet^m{t^lrZZ(|Z{ zy!;!$hoM>b2;dj-S4L2r_^Z00SbPF_UpI`J)aeaLfHmM&{wE;5bT2|OjNqSus0KBX zn*e_2aV*tH0opt> zIRSj6uqgox31Ija{b=@&C`}j<`=-!JrB(pf3q4(F(ww{bB945JQY(N53+=A7&YXLl z(6&mg03I*&kFRCLU||aig1<2TD0HsULPIxN%%gf)X_27=g;psoG4u+d7b`6_^m(C2 zD=jzl8=<=^tuS=G1|C%xrNay@6}s}PV7`@xUM%z*rB#MLDRi3BgrT1cO(-32Xxk+` zsvDIi4c$}dnM!L6Jx}OBrFDirBD7d(gP}D-+XKx*01tQ;)0OrT8-7^&^xMaQpxZM;Schd#%tjYhD0B!->x!m=JrftwEcT?`b0(de$uV)d! zmy=tGFM!vlmrnC+W(Dv{a22ry@bU+7xg!Peo(b$0O8~D=U1JI0E>J{J9sRM2auUG5 zU|D4qz{kTAr>EA#(sShlII9vWVmt;*lp=ulc@(?F62P6QYb*i0#bY#iGQar<;4hz` zT;N+*1_3;TvX%C^59eah{W!@klnXp+F2VwMr$?|`ECKuwMJ%Ln@0N#nR7m=HJ<8acAWHs@qGYJdejcF#a1aKuqj1<7{J%ksI6u>pG zD3F`H1n^y0j#&k8Yf5HBs-C$IM_fy(!lR}tEP(%@Z6{g)uZGP;LfBWXa0NX~!D0#E zr(ua8Q@IP^c9foo$v=NDPCilqFQjcJS^%%Zl25;1hbNz)U=v-cGw10!s3w?v-U4_H zjm!HD;J>gE{Q~$4MuDTV`fv&(p8$T0QBv|?&$@*X$U0gUi~h?f@NyQFGYZt4MY}Od zcmi(DC=hY>taVsYqlN@7&I;h48IAA+oW-cpgI*?-NdQ+dHU7;G=3=IJGw?({nrVff z?#|SRI2*YOQ{&<+U5TZYQ2>7fG&cdfE0t=x0N#?@Yh`k(16y)?P+Z!+0Ja970REKQ zlc{m0a68nL6Tn^PVT|hf+v%_LRBIalcJ3b(nzmoc?Ln1k`$^oMfcS~v{p_PpIDT(W z{NCI@s5=$F8*zJ3bQ*s(>;^so{4=*hxj6xRtX%hv58)jC3~8JVA%TX^jb-92Mha~f7%cdz}E`>JD_<8;DheMbfvw-h98!GxfM6INC8|-`(G8= z9qb%z(kcH0#BO)MCG!=)ZJ)+*H(dbFeCpp4z|CPhm%H9jGikcrr2dQg+<^t~Bz#`y z%*&kzUJA{>Wb{9BEAa*Jdh|YOp3STPUIDHmwg6r>9G5#%0Pk@dc8eu|*Q2hn1n{O% zL{J_5v5ImMz&~SIWfj0f;fd2z>tX4+;%1yx2^BFOgC$B4zWh{-=!iIa~Mzzb;Gi59?XvEMAfktsSw8!#$!wQQYS_?>2ht8rhB6u?JckKIb~K`NU7J`HYhu#M&{fR|o};Y<7j z4ok$fa3g_B6ys3h3*e97fh&su9)KA$0(by^#}n%Mb^1Yv6Tp3>{XuG{dY6}$;2XgA zf#b|g0FSv6=Uzmq#iP_)ssNsMEq03(z~93{L3#=)P_zJ^Ns2Tt0lWtdtiX-j7F&4j z4&cEx(i3mA0Pe+uqwY--z_nP8nFa9S@T3W=p0faM;~tD<^^>7j*7s0Z#udP)xVJG0 z7JLJEFq(Cb0Dc~S{RG8{zp4w0#V3IGcEhMK?-+go{DpfFl3@hj0R8~fNNxgn>i@7* zBL#2)Z9S0!xD(VDRCHVcjDJhYUjUDXC_VwaBYyB9_Yb^^R|yN?LSffArUJNj9&4)8 z9a90^aXzzwj;R1H71q-+6~LDYThB2Sz|RW%i+|b>62RXG`&^k5z=fakSSAH5B!CYP z`jFCu5wVvFy-ukWz)uUUP?|L7)(Sm9sTIKOKjTq#Ra$4x-CJmDrB(o6AhiA!S+S4+ zP6(Z?w9v@Kc|u=QT4ZR;&v{gLC@nE`ccH_SmKu7F&?A+W8~T9IU6ocCI#=i>N{1P` zR%qkP!F($XE%}1S{FTxwLr)hvMQOs&dxSosbiAQ6gjOm|8rmrIbfqw{)`L_gcGuY1Mt~WIGc9Ts2zm3o9oO!wPz)PVKz?YF*i7$XV(fg=*HnRe_ z5nM%V0lf4=T<%B#-2YPS7E1tkqOP$7@Fq}1P#yiTigFUbKVeyA6~M>A6Q`%v!_u?y z0-RL|6)_%zB}x&%dtHLvVhP|v>KaP`Z+00?K5qg1#pRR>eCx^}fDff?rG4(hxma*M zPO=N-0*{)DumJ9RF?Ne3fFGcUg%lBw8Zm6JzNHN(QULz}nT1-(O#n~E0?R6Z`%?BI za#M32PC8NmZ%8wVC4jG^h>-&L-C=m)NCEs2EDGc%F9BSI<(O3fx1?l7r0S{v;)o*! za6N51(E@lSY$l$MakzpWq+qcG@RP7akg41Sa2rZb#N?m-Kb(A|0REG(fS9&8X6YUL=%B0N=sX z_%}P4VN8vJv-C)&70zQ=x+_y7;w;^Ssc~_ZHezXI6u@5r%}oIBOr@GGfH&v%T1lJg zz~pdwSychBf6_c1aBsI$9atL4n^G=*p3z8oolk2)8- zmEwa`HUV4#w>a2Fa~8n=oP*&@`~wb4#5HguflCzQP~r>V58;6;ivT_dGiC(vLHHd{ zsO#702OUlT_m=htsGaIvURnYHd@nf8+yw9)XW-n6D7AQ$dP^0+pZo{AMGD~WV4)yA zg%l`S09TVD%}W6Hr-2o?k=tSmuigGUxJG*7jTXQ?d2rOdNdou_EXT|O_%L|VgjLU3 z0JnAz#qE z$o>5f;#I-|czt2lI;H}+-wake+y{lWQfdY8heCh5Usfz6fY%9~rL@q<#hqsHm|sv@Wat?}M=LEcbga+|m6jS> zE%XSb<%X^hx{J~ZLwn8UQEjYrn4u>NT|O?DZ>6DQgnp^C%FuU(PF9*Q^lzaLD;;lW zw>dnj>y;)AJx=IpN^1-qDfB?4b%stB+D&PLp$mn!0h)&ZKHzLj7v0hA{VObhe>xF& ztVjXeo%X*fvO8G>@GhsrCG!=)t*^pyH(dbFxboi;zydVhiAZj>qMW6u|vX!EUhxa7XGIO8{>SMFiE+ zAFC)Q0sJGDRaOCfEIe^~YCSAHmk-5Rl~57mF<7D$0leqQ*e#X-UZ1+g62M(frOD?l zfImNta)EDM83gbll&!SSeK;3?9*2|cLb<@B<{~VBcRUHZ#S*~xQ^Z1wh)0bWHdx=# zh7&1(e}~LMt>h+vCt-nQ6~H@E_9Alg@v%7RNCDiLW)e#PUrP}q1#t2Nyl|ud{ty-g za+8+;9)snWRRFi3WJaXw$zyQDkplQP+IFG^@Cw*WJRjq51wBB)VhP|UV2L18xeMUd zl%9ymKXWurK2iYxLEBEW0A7tHpMJj%PyS&F7E1s>4b=pb&szYmq;Yu#@M5e)zX1M} zQQ+vTK75tkqaj zegXUgBe>V6jc^8|N)LL0P$mI9nyK+`b}$z*H44tsBbZh=k74O9OpS=MbYrH*#aX%> zODm%Q{t{?z0(d7X)pP;88MoI;+EfQNa&rRsD7o&d@P&cYIImKFuK>Q6ktsl(-PMdt^(m@gWJ*ub07j8e2~f}fKP>69BiXG3*f(x#PB8l0f!~xYPgZW zC5mw<@dfZ)c;Lz+fDgos83BCYXuL>u{j2nY4kv(nN&EfOPW3J?Er9?Y3yw240X%vL z&b^3Ii$|%qQ~_Lb1a^xQz~90`L3#=)P_zJ^L5egl0o;!UR^Uc%i!Ho%r98Msdg6^1 zz&r5ZsC$zH@aI^LnFa6=c+!Mb&shMsau3F``pM8M>$|8d;|k!D+}oH03k2{XXx2Rf z_*wkv7ZfM{sxBxNp8(#|4Wq`qWB3K|XYNHvh7kzh_dt#0CV(d&f~6WMfY%;|-692W z2dFQo=(qwH|CW@$0Dc*w_yllo{NO|G#|_7;gaz<=!me>l1@OIZvmUE(Oa<_4VFx*; z0(h;kV#ibf?>vcPc63Yy@Y%u|_@@ma0sMflPn9_V{E@JU0SgJ>g2{Zv2b3m^h}~J} zHA<}jK2zu^N|WZ?dxe%NwE}pi(Cw7gnR8bPZK>1>;NDYs%)j0wD;5&KrwE;?w9v@K zDxuFSEi!bv(A$-k82XRU3zU``+I=dIs$6Ngp+kl4thB<=+k|eUbeN%2gf6==m~W+_ zi-guHtunM|8jos{(uAQ$3VlfFctdX%dY#gwp>GPUP+DVXz0d=c))~6_J3OkcN*fFv zEVMPyJOuFm<(MwIqucveSOEVx0C%iN0o;xDzbdjjSp@LTgW;0-3gA{};<%eGfIm3n z-x9#gbPEl#>Ad0m~|@06qquI6bu+s|sqF}KE z@KaDtF!{U%@Cq82R{$@yqrl5q zG?-DK<}BKYQNj~&6GnlEvuCZslJX1SI!17>PaEL}j4D0oc|w^4@a;^Ef3t(RfT>Y% zmXvjf=B%8J1Q?0bC0-HvwEirJ62)yKsB0q)l~T0k;RmrS0{w zHTVQ@4Ywy#<4ojss3|9ai>|^L)%7Fjuk^H%8h-@$4+>4&hjDvQW!gTJ+Y=C91@P=E zIexJxelhnC>P`i4A-7khj=vFh1D^n{<8~-FCxDNX>yC#n45Y>xPyM|Dcq}7RfI7RY z7@6u*bSfiLdWsHWWa>`Q4vb9EDO!(FnXBc@?={f~oQrQIXDR7H} zZ8T>A{MX(XzQjM^utZ!1Hxjr+F%BiZ0GH?UBUo#%gFpR(;>2Io1;yeMzEg<^*t` zmw7C21uP_hPZfH<(u5JQcM82)sTIKQ2|Zb9(ww_g=zdDA0PgV$k7`?`b>`gTg|<*? z1@I`LznqVC0V@^~z*B`*D=jo~ak0?nlolDf?RXy5D5WKa9wqdArKN@r7kaqTazoz| zx|7lhLw^^#q0(W7Zt*IQYUz2wd@BtdBJ>NTRfb+K^lhaHLthp8pwjV%{v`BTrAb3K zevLkZ|3jHCbcozfy0AOD~FKdH(c_}>726Q9>P^K$2bmqH_eFDADVUjVnK z_fhj~W(Dw4a22ry@Lzp!xg!PeZaZVQGB;;iK+_IAX+oR+Z?zry5w2Ey>KaP`ZwN&M z)zKfq<|csau&lBQ;G^M*(^KnV>AAEw&Z-12KN^q05~T>>{ySl}SOT~cbuD(WGUsWN zU1;(}+?W0%p9eg>Sq(f0n=r$QVZQigHEOJB#(aOe8|8u-4sz54I~V9tM%haH+=p}V zdoP@17d(G79yJ$X0o=O;yTuZ~_ff<`iik&z7&cg6(T3A8s@rdnS*Vo)>^B^Hj~u?5 zK6|4pC@c8?jGADt12dn91(sC+_onPcT@xqY; zcn&NI3}Pac<@QL7{2;h1?!gnYJIt?Fopl0(jOL z9KVMreh=;+)SU|8^|`$&b^Oa=H}DDI@3|ey%?aQm4qGCp-=oEEgROV{gZhYZ)noir}z8ool%X?tAQhc1qCV)?d zTO4eoISb$=-7$QLf52ghxDsw8aEW3ZN_+u48y>i_2;luOV@3e)kKgfxx_*Uz(BTB| z4$^)fwNt&zOG_Yt?*_-2n*biQEzZ4&Qj15aw^RZAQ8(-sDS*F*g@W`HQXqP3YHMPW z{2NOx{QmepDblNyMG7Vg1VRzDefWqk*gWn2M#f_od2V1WQGL$mG?z)#~(zo0nrS9L+L z_yll&H;kIpG!IF@TRFF02Bx>Ve!hDVl3@e__+3yVxe4I6x5iSP3)dVq8jrysQ~pPg zR&R&hW=3^u2lWLNouojtSQAZ5u4roEqQSo<z7 zj;R1XI>7?$6vtEmj}Uf%V=92B2~nxVAN$i>5iKC86I&`P1VDJ?PdHKFGzEj9FKp@%6gH*}LHc~m7z zD-10Y+F9u^L$4D0&#}RLD-C^7=;unS4E;{%M5PHs3!maqJ)m^Fp$7=PMrqQ}ONE}I zw8qecviGm>!&2R5xMM{M;O%MutD=o9 zivTVu!o4I<0o6|n{Il1*{B2h%#@F&O2f>BB}( zXwzniSlwN>#BQ+!a69T6O8|F8^GUVS!ET#N5K=Pr`E&L^Pf#{RwXof zJnG~hJ>j+qZEjj9lkc|$cI)jr*iTQ`es`p|nOThZk67Qpkjp z7FbpR+>5dok(;?2;iMbMYT{96a^y)+CpQOmvOdiumH@trB1Q_}sa^2Gkpg%&EDGc% zF9CczmSa`{TtLZ;NY!H-;)rW0Re01?g$3}>wCzL-;AOCxNC^9(3s=y66fBkiPQVgD zrg9g+Ehs$^lYg=^PCilq|3=$Rv;ba#C7*u34p0683O3QDI&+?$fNFxt=PiJj)403> zcmYVHBu2i~2H3cmi(3 zC=hY>tQA;NegXU)Be>V6jqp82l^*mgp-ck!Hm1hE*}vDLq98 zFfw(gs0Slcbc#AMDs#1LH@@&YO~+2SFGmXC!#BWgrT8F~O#q(+w>a2F`(r=qJ#zT2 z{!xU@U_&8>FNxE21>8vB62){0JY(eWuI4=aHo%a&QDaRT7U(Q^;9`K|88rbXEDMXc z6fgK3pHWMGD}rV4)yAg%pV1n%bI}X#)5?Qlxna;9Y581@0=g*uu-a4-c-9 zo_J|+4d&sO2S+XJ^1AcjsC$zH@O&)C%mVljc+!Mb&shLBcMrz0`pM8M>oioBaRu=4 z?rlth1p;^wnstu=ehPp31;vTKstbyRa(4{uspieOpBqL^YMO^6QUvfk_aY?22n28v z)JSducw$>D)w%TAg2!NxDFS#^N9-0UfZIZSK}E+E!1%YM`~~m}5XC2ecfb!mvDfI8sV7`@xb{NN_`b=q+q5BAZOKHN;3x(dVbiARD z3B6ir($M)rPgYuEXsi2qRQoBdGqj)3ZIw0{dalqGK=Tm5`>u!SqC2|1e}x~GzHfm$ zR-^#lj`qJQ+W)c$;J)o~FUeB?H{TA&-E;vwecOLa0I!DaT<&^9&8E+H^>OqP?iIjq z;PX0XUhX_2LbtJD+L$& zPfu6?cc8AZ1n@>}X!3ar;CbyR7x>ndK>!b=Y^8nf!@2lvT}zl`7s>@5H5Xw4+_NR- zB9;IiOA!kxA|5qj*kIMthSM>s+b@t=sFmCV@S9j*Sp{%U%3efn=B&lsG?LZCqs}BO zfY+m$#1g<)Qp89BJf%5iJ5m78f<=McNFjcjbDm-ec!UFgw z+IFG^@KV@JB!vCYg)8V@3KmNMKMG3(naW)NH;*&}2Qz}#$h5O|WR&or4H*R@&IWA6lJX1SZyCY8KJ8l58C81FGlVh;;E_y+ zITv9E^IxWTGw?(n!nDFq`!Y2m&PLvVX}SO0zp=D33gFLx<|csqP^qR1;ElPxRwk!9 za1Cq$J^}m-w+EG_{XgXPWNMrV+zvJ61n^eiz&)gWEVWa;%S%fjfbRsynVSF}xfJJKM5)E2)LZH|fak8jZjl1`OIRpK zPay@07QoX(|UccFn5xRKjp3$NYYJh(=B;*A!--FR@+y-5Oi9+qQf0emn#X~L@K zEP$K22V+_NWayQ3Dk{sk0(hu<82MQ~7Oa<^&!n!)90{CTN zZ5>kq{G+f1{L_Yz0N!K-kEKSL6TpWEdm~^W0ep?ndzB`Ph<#b;6-uoDt`mBK(xf@J z^GF`k-b$?iK1k@+O6$zI{}WoE)C%Bdh5pz}Rty%lpkPva2v9b9x37f0ue8w6j<@ls zo>p39=)OWnC@nE`n9%=IT59OyLI*1?H}q4XJ1VU(wDl++RiV;hhV~cwSI=O+m4^PG z&`*_C8TydWHzsMH^T11?`8(!?B&sMs<*9Lf-vDky z@1y3~%nIPYz*WQ+z>ELH1r&CmZK!K30bB@0gpbmA z^_&Fow^&wL1@IB@#ObN^u=M=v51dsAO&*Ur`LF=qZ83K1?K)(he0%Cz9H;AsOK9?W z3*b-wrd;4#R|Ww*fU=eLxew>!*WYoHT__iL)LeuG@D7WxTPy*54@E4bhh@jYmyYSOEV>+fK9q{s%S_31L5U z;R+f{!D0#EM_`E{Q@IP^W^pF}_^&wmNCEr{Z9CBdcsZ7Q`u#dQ`Ee9%qDyt=JUs^0 z1e4EO057F+c?IwvSc!fC{4pb+0Dgl}py{l4yq{50@?g<*j6l{=OH9s7nW8=0sJY@+yroMD%ErWyb-t8O4?Khu7)kZCxCzE_Moz~ z|6FcQrp9@L+o7hM0N!#tczA>N;hWtrAT-X++&?HZZ9k9OgDTVZqq#i+@e{%O*^F&D zepgTYuG~MUI~Bkkxjjt){{y>$PXK?z?NDw`03RmTebN26LC5(b_4f+kI~kb*)U*D_ z$W))A6B(J(Q&h^x)SaSkj7-rfYR{<5)w13A!tXTgf53e?QUDM61-q5vgH*O}0G|N2 zIM_yW7Ql;s#_%Qn0f!~xa=4MeC5mw<@da=-JaAvBef%yS;dDjr7DzgKIDkzdSf< z;lXv~!BO`n3E)q#95V~xGI-L2RnJ)f7q|ywS^Z?_m30a#%eVsgIQKRt!2$t10L{8b z06&30{et4eU)2T0Lb*%%2Jmif7&WPB9+F5Az%}kgNQMyz;Ax;naudLBeuJetmtI@& z7z{E+0I#USZZo60wTAkFijFIQ@o!1_3*hGbf;HQM`=U8cQ-j~9*cT5Fvr>i+;8^b0(jA9xZHzrve^XiPG4cSSOT~;b&Vx}*M}m4y!Xee z=Olo?!LrIKfXm^D(^KnV>AB=noK*=;9*@BirTiPfyMBq?db9@Tj>63*h2f>=sJ^-%Sw< zDIy*C4x-lE`ST-O#ZPNoP4AJ{+YI&XaT$oOFsR69iIGs6fBkiPCzxm=eKzs@Mobk;16W0aIUSadBTkabj(7M;#0@NyOnVic%3i+VFk zcmi&~C=hY>tYuhIegXV7Be>V6jWEfm(u1BNlt}>J%GCHbJD78s;?2Ml`B0`6e%gnr z5pg#1`b>?BvvdiTRz?9lA82j@xEGabx&Ypg+iPWVssmTS7T^=WKXH3dS=xUNw!RRDhg-%r5!+k4_~ z&;5hCQvuw8+tUQ_->@6_1n}3~4&~+q@DRD~3+~4aI?flUzgGZPF){_HXI;j~RG*>~ z7@5*jv>zi=cZ#|)GDWAT9iuW=%l4@({7%zu4(`j50(kJp*sT;Fq_PR%Y zA}=k003L&;JSPEs>nxmm5v3N7^0`YDz_UNZZjl1`3s@*fPay@07QjhTqzE4Q{=&9%Oa<_H!dg3~ z0yrV;5B_OGNC1B->?37P0Jpu6$MRahLIQYCq4y|F7!iA((Elm50{9W3LzO1Yxiv!f zRB8oq^I<%yEtS@pb9WWGmVV`tDuB-xTBo$Y=)-YBrzS7rl{xnWp>HTn z7<#+VdzFqibehmBlqL;r5PE{r8bi0cgh#cv(mF$r7P__4219QVS^zW;0le2-Oc(9x z_Wl)qSo-E&+_54B@HVvnRnh)uEosXB*Lx;yZ21Y`b>Gu=M?r3y-gZ>y^p>CW zqcmPUCjtC5mQ_{(d^kLDdTKo^JsYOstV(F|c+|;yUZ!ZK-Q_y~e<`kTCqyX+fGl?aD|3?uc1@PNRyl|ud zo&k#jxyefakHB)wDu7p0kBC$~JQ+tEDS+!}+ldyyf5B$r`51>Q=xz!YO8`FvO9Yw9 zT>!814ua&f^4qORafKLGb$n8O8Y5&>Wo=lDN8n;7DIRU)+ zGK^haeo%h+{pcdLeuvDEt%p4-y| z@L#YS_yq7*+z#dD1n^+F?(^`4fz&)aPyM|Dcnl*`fI7QN8JX%+bUY(ddW!aCWa>`Q z_KZx?DQe58%+<1eDht2Uw4H$aa-;x0^lj``iVsrR1n^L}#lbe3vjAQ&5yO}G2OO4& zOW{TWmng=e#23IHzyntn0lYV6%n0DU@jISS*U!@rI-CIRD(!bsJJq|qv;+e94se{g z3E*2^$GI0#YVj!bmMVZ}y@lN(1@PyvP>`NN3KT7X-yubsmjEuIffcxs+hPl^-5xx+ zMtb6n7Qox_;HZ0(1n|dLj+q7UKzP!GRnJ)fucb$4yZXt{E9)dwmT?8}G45?FMF1a& zX5AxzAH$!1L2=@*>VjhN3E*AaFlx*@hF<`G&*(9uHwqqNk}cZ43SwA|1oLVGE#Fm(H~cvPK~ z4m0!^p^NMBbAZ{XH1t-XpD3*|^lhQ9D@_>sr_ixV#~ZrU**vPtl_m{6TX}FnHqh)OuLhEPfVeRYH@;qfS07fOmcgyY+S*?58JezuQpPSOU246`FkB0{Ej> zDHr(Gl|cX>K-o(B+=p}V(=#~9E|d#AYA(V8xciIPEtUYjlOh&UL_BK5u)+G2Hk^)8 z-F|?~LapQ`fM3G`%PN4oQ}!ZqQ~fkfI#K|)r0R8|L1#**@ z0KOH=F{=PxMLi-?_0Ur|;z$AfJ#9PD0(c2*CZ3ORxPtDYV6g=7gRn%9soVwdTK_=8 zpP@&e#K}hr;2&w*i59^BV9BT7ufvlcOTl6Z;76dEVDfnj;J;{GUIF|YR-#`3&t>Ej zz^^h2G@Uhz_cBUK9xS?=5y(2KNsB5N1zygg0gM7QXHic^2~WWF83iKFp7jrwlwSaU z$!LTp;50^+9`ppEOagc~Q{&(4VE)6@C^$V&*L@DYFp!#u=cvC|0N=sL6rj%T5=N%_6b)r$N>9-~j7;4r+K!PaIz??5 zmAP8BPi5hEnl_K(z8ool4|xK+mEwa`HUWGb+~Qyx%~=5d`8b9z@eepG5&wZ330$HW zhZ0`^zYh;wSp@K2m@y-O_rf1PL0vybKj?4*czbETliI1?Qv~p6aGbdb;NcJB+>0o+ zc$9ie6~Hqe!)}oR_%m22NKYXJiWb1rNRj3xfcw(G3f#zTv4z*JKM$^vo_M1L@U}cS z>fR&){1KL8W&u0^o-|?Aa~8mB=+W7(eljG0-$rE_R{$UF-o{b{@BwJnJpwp^KmCH@ z#9!3~#o`mdJG)`jn0E}n0RGUu2&D+%$)HAZ6Tq)OfTcQ@UR&@O3^GLkFM9;LMGD{+ zP+w5daRo5`Eh&Ei{4_-I3E-~y!H3*e(bv|(0=TuXOC3`Ie8XzPI;H~n6k+xJ(}s`$zDw9#WljLk5H>zwApzVd^e&|dBVv0V%j3CJ zsTIH{2|ZS6(wuvT(EduT08R?sTxp#-_b;KV=i|z!3gE8C@u5thQ1+m(YzoVm4^N* zv_@%_pD5&})SLPifN7mxT^hT4QLP&^?vb8QS>-9@Umg8w@>2 z=vw$|VIBf_j|8TR_H=vy3O_7;H5PZQNCCVR?SECY|78)tJs-loBu@dn=5-u*(*^KU zIRD=fz{_Dfm%H9jv*||);8*Z@J&OSTFWqh93*Z*?K5FjHRsb&oQ4?DL|9Lkq_h4E_ zJO-mo5x_f+!)~zza0}`hO8|F-B7*AZk5|u00Dp;Pl~n)_fhSH+t%rrpqPuWbB{X?F z>g2-$c&GcYTW{CFetN z3*`cjnv1Xi?shMBizR@oC}JT+#G^(G8?5=X;dG4ZRtK4dTFFfSzlsHxRRDLR>_y~e zMiovvQUJH3nZy#nmr}$?0sPiIc;QF^{5~uS3*f)8u)S6zW}afG{O^bDx*pddYn)u0emx4n=a}&VDRI2F$xRBdxC2gt$8(|CZ z3E(Ri^Fb+@65= zDuAcY;`l|L_(j}5s5=$FZMi*705`yH;1j^L+z#dD1n?np-Dlwo1F3mfo zpu-8^?WDbm+Ns`C1n}+PICB%gH{XhLFQU}qQR*#K09TK~Zjl1`Q&=cSPay@07Qj(|Uccg(8xRKjp3$I;29$X_m@kR^aA|4!dZ;}B15X&*M06qwwG-1_q7Qn0N(b=wk zG9-W}qOy!DfRA!-V<`f7e>CeJ0sJWb;tGlre^nP0i%$UWX9N)f=5 zK#k-kfM2^AOLZ>2w%{=sWQqV@Is&^z3gG5YUr^C;1u*_CDSrX{6h!d};O+5)54j&h zUt0?c;8wyeaZCm9!a*#tj&n=}@U~^l_Hs-G@G-)+aZCm9NMS7;Qvp0x*l+yPhL8YW zB5aN_CxE*h%wu^aU?Bl~oX|U!CX9$3DfAMhRsc^HdW_PfId`GZeoCzX-sTV<)n-cT z%(+JhT{RU~K2-qUB=lRQ1x6oE5c-bNLPLKO`k2xpLpM8=M|G3Z5xjo-lqmwZ&yCnEmH=)}U1JI04p2l; z9sTj@ISJreEUT;ncrZM1dTKo^Y!+UFvnrv<<54Fc7QiJpV7K0`gZ=b`1#m0s8cP7L zcN0xMZvi}aIOPK0x-tmhQp#4^=RTZ^AFjqpcA;G0QF9R%z+Ee`TPy)Qh9VYHL_BK5 zu)&%~8&1clZr?*@p;mGez~iyNvI^j?l)Z@Dd~g*`I#K|)rJ2MMz?V?ONCEujb$H=O z0sI~;3gjj)0X!VbF{=PxK|LZ;^}v-l;z$AfEp0o|0(dcOCZ3ORxPq!ESS$g2KP(Ys zDt7_A+CPx+XXxQ8aPpA?xQ@1+XaW2emVEmCIz0KiDOfB4{18+VOg?V`+(6^<3gBO` z68!>rHY1+^euYt>>8x42hfz}UV9}L~K-N)BT67Adz{^>5AfrIdSyap@;R)D@Q6S>% zS$|r5pkAwU}{{P zr3f)`asqhM zH!yZ}{q^)$da5;zb3OMD3QgPp!|g$pY5U>ao`Co&fZu(c<8R}MzYX^f>P`i48*Wb% zz>8rw@Co2AxE;#P3E+d}y3fED22%6z4E6U4;M*CQ0@T@E#K=^iqGK7E(o?h-BU5*Z ziWr%qQ`Cx4nX6^{R2F`xX>|$i%aH=O>~ic@iVsrR1n@C%i-T=6X94{C|1f-sf52gh z_!rzr;1b0+l=uR8Iy`V?5x{$3#*6^o<5j#!b^S9hQF~4Bzpb>bw2z^7s`nHDJPI6V zZUXqGi*W8mlv+GWy`>7^8JA(VNC7+_77Ef+NP(gS@Dx&{c?sY?G_V3Ua$9WSwcDKs z*GNyi(E@lI9vpRVk^r8I<(OFj9|%vHuxcKE@E+}}Z8TMG-|mclM}Oa<`Zy;y)9 z>zE4QN@06CrULj4VOu+<0=QmSbH`KwZ@D*L?^ph5Lr4IZ3!AOX3E-QBy&SNR0DeMwvE;yZXcLBW0KalWe=%Leb@{t1g zd)juQ1@ICq`SkmBc=C5quvh~4L8vB}eBJ_hF^$VBfPcnH^b6owjC=z4Wk!Lfvu5#b zMoGzoMOQEaSw}T#(aDSgFK5vKi~==hQ4dB5Pr#0h0ug7=T7o6z7r>u08sP~znNg(& zB?x5_z&A2A{>={NOr}P`Svrtuh4UDe7Be*>&eHZwjf=B%0hU%q0sIlr+yroUD%ErW zydJmLO4?KhE`u$=CxE}>_Moz~{|s(Vrp9@h+o7hM0N&&gj9p!S9sQM_YE9!@$Nhss z)AqBuJ*YBmKaATG5MKpw@?nm@wI}}8+&`#06~L{zJxu^Fg5AI;fIsJUC^sj7%jCLG z!xsip^YAqF_X^-qj7$OQ?1nKi)u-qfMyB)>?a9d0ouX|RnW9tFl2MtfW&2bXey3@9 zGVaTf0(j7A*sT;Fq_PR%qu~|@+i1=LxV{3zm-q)9mWWH>Mgo^8#-YR)!0*BXR~7-> zA2VhIaQ_GKBGvUz(+@h_H-L+z{SIoUdQTC+w}Io#O#t6`BF?>tQj15aw^RZA!Kv6S zQUK3`g@W`HQlMx7Jed?}UIMr`4XnV8+!kAS?RMkAHPRDrv;f|k2S?qTB!K5&Ic65X z2f&jita{D@cqKhL+tp8o1n`@vEaM8`Bi!3qiU8gZ&ALYbKa9V)g5tzq)dj`k6Tp4l zFlx*@hF<{Bb}vFH0(c^*k=z9E_@P*;bLq7OkHH{Q1n}P{VYf&DTmbb26&+Uqu`-Okn5E8(z2%DwM3E-cEy%eyJ0N%KSM>9rg!id;GLN8Kk1@M(Zk5Za6 z=e{6xH>Fkpe=BrTrFG`q^>^Y?t+*3cK2-qkFZ64r1x6oUB6O$`r;_uu_6WV=CuD+(f*f30QWcn_mVsX@XCvD+)Wq2li>V+M*#l= z+qvBJhMG-3QUJe*&+AzP@Huq1jW2);=zY}Oovi@=6GTmH0bG9sF85$sM?40jOcB7n zj>T@V1aJX$jU|BFK@mZ9^vA2`B!EB1vdSue4}m96PpyZA&7b8ss}h<#9(D3z0lece z*sZtgU_U)!0o;PR#uC6CkE6-wEr4eqPr1Oit_%WrU&>b6=RTZ^?+?dGcA;G0QF9R% zz}p>--C_yg(G;6u|GoqCjr)62LcMIc62W%c)01s>Th$5l0H(uW8$f7QhQ( zGx28>HUIF|QR-#`3&t&8iz%MZhG@UhzcQHyz9xS??5y(2KNsCTm6nHs{ z_Gc8RIg7e8N_YZxU=)ZrdsYLMlwSaU#%P2m;3P(s9`q=oOak}@rpCY7!JNU=C^$<8 zFs*PN!_pp1jfk_f9aH1tEd3KpE29AZ5NK`!xEqyfx&ZFP?X{9N)qzW43-AfxZ@E3F zEbadRwz|?@bT|RL zjkJ%ZcB=Oj0Xz~MXKn)ch5@JCr7jh<#eu_H zS6X4{TA^)~4l}f*JCFH~tAcD)8hX0Wxk{@Hy+`QFN)v|85L%^lyrGRkFIJi~v}X?< z)zM083_VHc?n>(ny+ddhr45EAg|39Z7Um&g2-$xDU;!x9eb^{=x#dIdzRCfII9@lh0cK&pMED zfp1+I1n@qTEvgnf@^CJ`+XHjag>r#M%|%!MZ@VvcizR?>r-+3V5sw-%Y_LA24X0yN zw{IY`P%F6!;Fqw#vI^jBDSHvQncg2K9VviY(M)0q;9(RoQUJfcH(oeW04HHlAUAml z;2W_VvkKs4)FUEQ_w~aOM+)GtXxoVvzzbmC@qCQK6*QWH#S*~x!V*EIau>iW`~wMp zh91}*Cm$(*zol&_S^zJ`l25;1hbLb}!D0#E`=Od(@_7s3g)}a&0R9mx(Jz3j8Tkb8 zi;MzIXU*cBjFOTEi~h$5WF6I{MJF-}yqra)i~==hQ8z{jPr&w!0ug7=T8t&-7r>t~ z8sQ1}Hls=pdW29W0bI${_%}P4)0r9tXX!yqE1bu$v^!HH;w){;)VMfH|G?79D1hez z%}oGzrBY27z#X~0R??|&7Yq)<rK;DK`8C(nm-_%o#Ae3JTm1@K5lrU3P<3mBQ|Q*;y~Q+kT}Gct9jXe&mh=oB?) zROV{gKHG%fX`1hZ`*NfJ90o+ zc$9ie6~OQ9g54qoa1AUJq^FPqMGN4!Ns;CyfP2!w3f#zTv4z)e7am+AJ@G~h;4OJ@ z)V)apcovppW&vCZPnxjmISb%MdUUp{p9~4$H$aI?+*|?p@n06#3OpJOV3KM}TtV=91KZNf3v@y{1f@~QydL)cG_ z4GaDqoAZTLD{}()F<~zREF^&E3mvUAVMJ`JO?f;QDzyT*pU@+eCe69$3f)Di6~GS) z-B@XzIrl@M%g@421B>mf=9Ii{#uxa0NxdMne-RR@Waw) zJ#fd06u@0*|Er??FN*-~wj=H(c?#gh0XXia3*d=x{=XxD|AOsY?s`MbrXMMQpU3BQ z&b-`t;HA*q#?Gd@ZF~W|mfpt9-PsD@-$B&G7QnxD!{r`K>xjo-lqmvuho0CimH=M6 z19puifZIS3L3Q-UtLG$uKgF`jDuB!2iPKZ-VPW%oR~%{yO&*Ur`LF=)O*884I@qVb zumEmGU1JI0_PuEGc?;l~eJB_B)|Ej3?@igFYOx~^=i=M#F&AAZ7kJcMgavR>F?Ne3 zfJafpLW+n-jTkmqAJK->F{<0wkXfje+ywB8SYTNNa1muMA~)}Dhm(#Jz%6Meu>|mi z6fsf&zt$Zu94Ua`fklDb>xNcb~!e-TbTQUHHL+fK9qUW6r|e!mV+ehdYRC4k34HNoWb z7QhQ=TwVeE16HD60MB6L6TmMp3N)QHi&c!0k_U?}V+1doRFf8+z$ox?7VXC(fR!kx``wJxnN*0KT57@o#o8r!h4O&e8*!RydDg zX*Z@u#97*gsc~_Z{*I-UQ2@^YnwtRLo=P=c0C(W_T1lJgz`tP&@Co3rxjm>X?f)LP zCsX6R!0k{|P5^Is62`8szncC^Pb;Z$uIBzhp=tXW+#Xb!wjavv35c%(cGwzQ+JBCWMqm?Q8Pwmu9oeyP57Or*%r7jM+)GBw!v(J zJJoxN0KOF*XKn)c`pt0eMU+}RO1-5D;OSdow@3l}F)S3Mr;q|g3*d>QNb?fFJJ7%i z+{kUQh1YIp9$X_m@kR^aEqHL$y-5OiCYEDn0lXhPX~L@KEP$8OqqAN8WayRkbx`6G zx7Iw|`vve}?rkhZ0Pl@v-6Mb>z+YTJapJG)f@1Lr;NET+HEF|0qzK?@_ac-cfG2<& z$xQ&ivy(xl+Px!>szPb0p+kipptRi3 z+k|#iT4CrEp{GNurZj12 zz0f0-))>0^dOWIKmDU+LSm-878w|ZpXe0c!Fb@H|3+^)MFO=bjrB64&9V=1*Z%X@L z743gn1aQ|bxR>N9fS32haW`E6zXj+2I|6tKZ0B;<8)`QFNCEsDKCg4;y#n|wy4%JV zz-#Dj%-o%=0Imm76I%fPvOX^NU|L5!2BS<7z{MM3w^#yr&4$=DmH=)IMFiE+AFrO1 z0G^L!l~n)_f+tQ-t%rq8{dzdm5}G_7b@E{W+>2(^+jX!{e_;V!KwV=A;C36+MCtT!aPiHl49sECGBQMJ%LG$jK|maP)#uTyan)|G%l|IuER?73*ZkJ z`2_Iui~>z(&EgnFNy&pnmofrbM>T2D@r(j5XVJcl0ySsR_KXsqfNdECBF>(*5KGE0 zfaft9;R*N_qe>5Yh)^a0d>vEc-|S#2m>LCV=>beDoX4=VD^nxlEN#uyxHwDev9vM@ z;MqWP6TsV1siq6y_S{}8X;U5e7i;^so zJdfL<+?)VDNUr-hd|@Cp506uSuK>Q4ktsl(-Fb{m^(i`nktsbzyE8I%r)UdCrsxzE zFe-DkY@cny?=%Iia9@rTzz4R&Zl(Ajl}!Mb!z~WB(VPYF&uuY$iGRRhiMSAMByfph z97=ovJQW_evIyW^F=Ivm?|L9!q`Llb`ay>iz*|cDZPZTno+5y60mqq}0KTpT&b^3I zi$|%qQ~~^M8|)S-fIotTg7g$pplAX77Aexa1aL78tiX-j7F&4jcH+S`(i3mA0N$Jj zN8OtwfUB__GYjB-;Ykx#J!b*Dj2@ls>L)`2_%%@C61Ubo-1`Oa5cf8gB7pZov+fbV z_v0_Fpg8eYbwRQC1aL1mjGDAzBvJ(M4EG|GB7oljHIkbEez5>cbuPWO;4v6viU3~R z61znT;MJ{hy0HZ?{w*ng0sJUL@d@Cq@PiMzA4y+Z3k%?N_){og=R2kXxX0=?#Ex)G z1@MW&c5_Sx@EBp6Ii>>mJz;D3=L;bLyj<81j;R3dwT8#?fifq6PZjoDz(NA}PNAce zCX9%EPw4qdtpHvs^l+s~b8e5dJf@wLS^<2#&<&N=nR7=8UAhOZe5wGRD)bAb1x6n( z7W%f*LPNJ*$D?{sX_28v3B6WniJ`-Vo~pFe(6@x{ue99I--T|kw8GFW3Rsu6Qaa4g zAwqxaA7rD_(CdZHQd(u`t3qE;nlSVyp`(?KH+17>JgN(oCJh}V^a!OjhF&Rj7o~NE zz94jCr45FDD|9*hwJ;9>yff}H=`WPwho$+eTELDKDS$Vj{jZAlzbpcH`{uY`(%m+`0A5XRW9IH`1@LbmYGMoE zpI6{=52kg*V=&4T0o-FPc8eu|SFgdYu>^1{C?cqi{&@AA1n@j8tE>WeAUtt;YCSA$ zerv>`meAz!sFM#1;GQ(2-mZgv`U?x-b*nLAECJkhT??Fi-U4_=Gs*?Nb!8C1ds4Qj zTI|Tfx%hfHj=T%y0*{)DumIkgCKyWqkEDo&6cLXaF>J8r(uUJ9s@s>a2#~Ja1n~1% zU|9w5)|9=7+`O|4a}z0mo6}5U3E=Z7Vx#~bzY;GTDS)T`KP%@Q7)7xL@K~{c1Ox#^ zJ+Z|~?AT*LvB&nr9-qBFET~vd5d;y91;l=e3RX}+0TmBKgFO}?fMDpMhidHaD>L7I zyEk{Um-C6lXhucjKFP(8U8N9+~AQ)$`p3*bet z?l^Aaa0Wd@jl~kcPrxODNaZhp*SQB0zK5P#gOm3P;OVsN_yzD%O!>^`b$Igqsj*lB zcpzjGOuk?NyqL!26u`e=Cb|XiL`E(F{5m76>9kpVgi+eWL8F@)fvlsP)Tk>X>*X{$ zoRL*?8g*clax~b4kri?JtfiPzZUOu~qdtxX-)EF`pl1nX6To*fRsKy6=3=Hw!D)IF z(~7`jXu2a)CE_&Qh^caMnl8lD$|``r0Ggiw-homzQvh$u_cUuX8!%R3Ly`l)^&<-g$e_U+F2=q@5mI-zJ)rU&7@!%cT4SE>A)GB7i^a z$nCdtwBL^F+q@G2ydIZl2;fDq8n^`T_goI?76{;DOusL|4+f%fc!}ye1#oXhDgkA7 z*D_MsC#al}N+`)y9-#%x&*nb_cq~ontzt#y6hFeN3X_eWw?>b zC4f(ZM;!E=w*a2I3Y#x=4>&9lm%@Vtx+uY+#23IHVMzL&QrmC9{&?ajoUpmDn7{jB zFqHt_Z!gZfm*|6zKmc!J%KK6|<$FW`_X5Y6p8&pl8O}X{!|IPmJFKxCHebK@$;&St z*7sW+VtOT3^9tZ^;6g!oim4&L0DhkoX+Z*bR~lGRFmj!2;cHjQgKMB2uU`PSr9!m;9&Kn#p|$GV#fGlg5wCny z0JmSoqnaYLNa@2<4IM4CSka`R&j?K@`ktY82`yE0o}m{BEmL%>)jX;)q2-EpF|>ow z3PtZQbVH%t6n)Fk1s!ZOl8VkUbdu0YMT^()sNN8oQuJs;9~L@X(OV3?L1lHoB&~@FKDf$czEFlYOFzuVh0QB~ThsbiN$Xz@ z0o-9JEo^;)g)PYo8fBW_A63WXR)#K%E?FM+68!v!I!TJA=0A2yh zxq0e!<#`PH3)lX#1dNaW=NXAE{ZGXI%N4r!!R2xY?$>h&;7jRgOACK_wB1vZ&={AF zx*c~Q(B2>PHm07=S^zHqQ4?DL&z*~x`()^}Uw=H>QAPytE_GO~OHe^?fWi*+kA+w@ zmH^%mk_flb*n3_A_^L2{9u_tW=HO6EY4UiK$%h5-ZZxAkg9_Ov|MvoH zu_R8_CW~nD39d{3G4}(WzFswKgjF-$N?^YDX4P+iD#l#+Yzf7J84j}FC_NXbaWF-T zvPF+P9E<6*apZ0B{Qh{9ScC=ewlu+50=N&gSWGSAQCbWetgmRnY3i$10~Y~ur3mZw z!rFa%{Ym#;{|br<{-1uMbU!fj*D=9z3gB%idY;&ftHszfU=RKAC^I?Zf`>*md0^Ql z{Q9yU%_NopzK&Y-3gBV$uw$VnE)hg3e*wJKJ&^D{G;kJ9-YbBo z(X!(gz)LXYGoRPt$v;eujSfPcJx&84n_%(<3*bdGE~fyVg_-CUz@IX53E-iOtftdu zu|K1rVF_>v;2JKsnI-kpT%L}$GnC6Arvd?7yfwe`-X8oWPTIMh>)S+= z@(M1uStjLOxI6{zivS*rzi)ttRa-~tHo-3E*ljhja@B@X@B< zRPbeoj59^`odUQQBb9)1)-{Y&_6a(TkxD&5`!iB`C#W4Gm2`sshTR1$W?h0@)(cS;rcPaXyBM`t_oAN%v2PhE%`~aHr&P#jVy|k$L1IMio{~BxNQ!0D~ z?wX2oPf%#_XikX!0{D{|Sj{VdzlIA1;VGtu=&flJ)h54@?x3=PiKO(AHTE z`s{Q_01pQxZrZJh&hHdhKSTcp@JYejm`SDKU3mHjqgi(d;HU75D@acKs?H`0UD(LK z0lZrM)S%#Et|oUlp1md%Gv=r;g+!S}|IK`TQuTA>nd z<#}kuC4jfV8y{l-ApLADEP(&QPoaQa8!!>T^XIU{IxS!#fZNSwwqL+R0H0!5n}CS` zzR$2f`16I303K!7F98z)yvVRmg#`k5+j%^eA(n*%@M(tj6`E2a_C76(P@TmAhesJn=j;1&F9Y>D!XiyRP=B| ztAti6`aeTo7n)M^B}4lO9j@q)hF&i;t>{K|JgU=#Rx5gtq5BA}RrG2@w-j2h=(C2d zg})XSAb?A8mGM2QzyA&wHm?9~MeAQBtS|lg=McaUGUnS_jcfxKjYXhWmAnym|7#OQHHVfd5NRTUz+bqwTr`@bC0C zrk>7P0M7?e6I%e!`35id$zX0w;(V}e8BM--7+E+O8wlJEU0=PX*FqQy*kXkIJ7V#+24I8X4 zX~Ajgt2Pxb0^~{&){8BGhhl=|6u|8%dY;&P{3XVwfvhGTWhP+(TtqX8C4jG`7QF)a zoo}&YuK@lKE(*k^AOU6o0O9p{fCkDavB}V z$f`Mw5{y!g1~+14MVvlsF{YGT0Ds2_p7j|c9LXr@Ku;6OCV=l`s{ETC%!N$xVc=-_ zNTwBTx&u=s;&jU!FjX#2)A^WMSp{$v(EJ4O_LQob0=Nm6*OR<#L-@ zQvVY!Pek23wf2tOEz#^FV(?-alfFj5I9 zyzjtcY@k7Qb{N1FW6ncV%8QzD zrcG3v83K4DDbj)j@Xj=_qM#R@Y~gFSHxI6XcDyvWdbRoG!BGiYxHddEs@^C8JQ33| zy8u2EcA9Y2^A^CXY3r=7emeBZIt-M!X}2aizYGCN=5x||$tUCnoK>Xqgk`uqG zv&llSiwNM7U>MaI!$?I0@Tb9xP(%Q~3u+`k0sQ(nOjT6BIR)@iT6!k=s{J+*ryKj9 zfWW^c6)u3EgH~Jucx$}zA@;rLXKP^r{3m`21?-xDi2y!!3Jb7P1119acEk1!mfB=u-CL*@z_%J&EVNdgJJirs^p!_c08cmcC!s}3A2yxFqk3Oxv7$#9 zI!I_j(Qby`A+%J{mkqr@Xqlov8G3}!az!_u&Z9~Qtx&X+q3a9nrsy?>&Rd7~0Y)RK z=yQgCF0@k7Zw(zPG^J?K3?9`(LWe85uc6loO)Gktp{EM1R&=1Dr9x{Jon&ZBq4kRX zZs;2LYheKbxFfDInJ<*#%~JIkT-dwc&#c?-Y0FQw4 z{~ZCm43=~A)ax33+~oQN@T<6w=g2z+@Fn!LjW2+Iqqi~jbk+iR9*COQ0(kZZc)7g- zc&CrBS}Xzl+lN>+mH=KKk_fV+6J}9f0{A;jtDFM(7}#+-ay=|;=Dm+YEu|#JqrF5C z0lX{CD3$>Jb1b$PO8{^5F-^W;0sQGF6bpRo$|8UdqG(aJ=zVKA7B!=AA1n>|{u$%&T8;YJMHXn_|*r58& z`3vBGMq{;D0{9wg(JO%8rWU;dcr08Lh)qEP_%2MxoC3I>YIs8R*a(b)R{;M+%Z^_F zFMxH&aT|v-=s{{MmH@7VWP?cMFMwCO2NJ%Ao_r4{?-jsPY1#1$;6<47na}I+(m{*^I20 z)94UJR?TU&J)@MP!3`N%5vR{ugem0~z~3^mI!>Q8f>F}Z*C0aK1n?b9m4DOCUceL| z29B1GU|Qj(38qTK>6X`Ls$86=^Dwot3gFLy<|lx+qg2flz#DUUjhUS2z~!(6xCHPN zF1MK_^~Z5}I@-=_Tn;%E2;eQ2W7}1Ax6)tfDc7W(Te-eXG%3G`%WalP`EgvHg7!rK zk6y;@Z{=uzE3R+zP6Y7ZaM!y8@B%Kk87KXI%jJ-6fdDQu{k{M{7>LH<1*-29z&#nM z1e9K`Vx+Q9&?$^m>IvGHk;*$kZ5XMf6Z9wSE?_b166CVp+l1d~{(KA9Wv>7}@?ES} zh8w9|0{CQj#6iz_3*g$}*nFvbz+s8F2p%NRMF|ciz5pJBA;~U)OEH*A0GBSoPO9o& zpbt6%0o>M<_oi~n_lN+#9~@_X0{D(MaqbBUEgnt2MFsH3!?2oH0DlP=3c^!N4fzG| z2vVd43E-V*U`4^mb+U!8-CjJn2HNrZ1@KlpII7+#0sJYZV|D?22<$ZBs^=|$SJBp4 zU;T7Q0KWrD+_YPxHuofHGX(Gn!P{6w03U>A-64Pn;1^erocL9pO%|5`-ZdCTb;dAK z5dl0QcoB*S;NhS~@)N*AhhnOF1@IDDdb|R-;T@cAYypgaODbFdKMSq61aLdN@gerT z=x1wT0sIGk3I*)yfQbMe`~}OiQvxOec&cIh1WW|*=3nx8tpg?k_(;QkwRj&y1@Iq+ekQb1ox9h!Jmw)nQ;J?} zXkVej6@ARmYlWs2{nXG?gjOrM*3gbZYZcw~J04XFq4kQMYv^kDYheKbcyC-~GG8de zo2Bmt6;N`x0JmuK?chHLMm(05`mfRbvU@^&p8L zJ33(&#k9&PfRBb9rz6+H!e(v?hgwQWj7NKkA_909no%qP{KqTUVk`l?;Sid9 z!2)=~>l6!o>&ha452R>Ow&;CpI2Kc1#F4k9Sm04&5f;E((*$D);9k^XF|~+CX)$cD zCeec96~L3>B0#R>CxBnW1j{Lax2EWMV)Nk(7#ptu{`+OD7E1tMO)Yu_@LSZPR{)QJ zivqDJNC4l7>6lXhub>*9P*pyUG4KlDA8Fa~3*h;%?l^Aaa0d0J#$pNJMA)GB7i@b%I&vywBMTR+q@G2{1@EyE&)8B z%WcLk2L*04?h@)#^HIY?-aoIGg1jCy@h1AF#WC#jHz^%X)7Uey90kAg;?^0er->Sgi~{1N$`k+p7R#KzdVD@m%0ZW zmWXxmAb~DQa47Kw@MsK4b^+WGgQ)~?$H~}9Ro(OSK}R5f+nDlRR8ILG5y1C>)C>Xg;w(zyvlLyy8 zJ6^v4Zq0+E>Wvb>6EGdK3*ducrwLa*ZvniLw$A$Mr$YkxZBXK--5RyIcMISy!P{6w z03V2E-64RV#4oNOIq|DHn=CE?yh|{Q>WpEeA_91P@FEluz{5a|G2BSUkBlIV+&yXTTwnA=>*Rom z06x&L(twEozQ(Xt0TTiIf?*B(`9eql|6th90TThd@i-n!T38@}4>9Z&%R&P9IzxL4 zO(_xkf}vLl)dINM&=ZBG)w%0`!eiP~s20Hc8@h$iT6OLfhSq;&uE|FAiViaL2cbnu zAAV`*NTJ1w{%Pnyp$SFzPV<;=7h0-lg`wvOEmQPyLk|;LuINNVw-Z{S=sH7-gmzQ3 zWIT^*&X+bCNkz{ybfVBoMIScwHK8d*#~Ip3=x{~r4ZTKaTG0*@cvL3~tyc6bL-!V1 zt7vaSi-p!JI@-`x@Yliu1n^$C%4EJ!hBr&!_Q!?ID}Y*ya0X|&i{7=@DfI!I3E*EJ#j3Fca1kUCWJf2=qPzs~H<(sA1@KX@<8|4 zrC8umVi6X=?P!9r1n>jYVllOdM`(Ez<)iA)nWaqh0X&(O9lroxh$)}>ybe#k z4>cA`06zxV1d}gV0MDm!IR)@^%tW^U{)CZB0KdY>YC3He`!Y(KIB0YOBan5JlNz1L z$a*=AIx(_pPNQuZr5p{e&&Y~6ebz!uDYpRrnvvCU`mA>uB^`YYB$Q16-_BI|H{I-c zOqGJu^f0CsfydBvJEls+Xl z_C)}{Kc3rfs$~!@=8L6Zb^gHY>U@_|wk;)~2PlQJt^qjWc9)*S-)3H;&;k`uqGv&rHTz&i)SsLmKh zDk6Z>!HZBt0KWrjBtHTC+Fh8cUIDy_mL9JFUUxrEH?{!Aza-wQ2L`f#@qJgN~wixoZJ&;dddiuO13Hld}8eq!jk zLdz6gY3QLs%N5;mB#&xap%sdrZRkHE?R>i_`kTn0N%N3Ms3&FounsHK#|c(j)&B7k?I8O0L7zuk^4#uC8m^W+N_ z!0Edw7WmecMF8(l(V}e8`_^zQCf|%BZ%eVjqr@UCfZNgpV+r7%)M7EUh(~ELY_LA3 z1;;CZe}szwD@lF=_!U^Catq+L6g^LD#@vLl@e1HSZ^de{1n`yAqE`UFK`nX(@CR^F zAT|XF;2xNcIR)@Cs^JOMBR66UyaM=pT6X*bcrL6vj@vk#K@U)4u>^2`NH&O6{sOq( zJ&^D{^jJ5XyjKAKM9Yp}058Cl&wO5oC;uQd7E1tELN>wV3l_lhXk1PKJPk9^Er7={ zatYwUjI5^9X0Z>Ww26a8*E0fHM>(m{8H}u#)94^ZR?TVDo>9ut;ChU#h|^~+z?5 zVcS)8H`8C~Dc7W(o4LMCG$}uy%WalP`7vCcg7!rKk9w2a-_p_kmR#TFoe1DR;I4NG z;JI9GGfw*bipwG00s(xu>GxUq!9X+)&r*G-08TPe2`If>&PZjSpc5IX)DzT^k;*$k ztr)4K6Z9MGE?_ZJ8K?I);dh$fuEBNLD}WFCA66^FjZ`iHd;&b;py#{=@XQ;q`O@I# z(*q7m#0Bsmfi6mLDDegG`xuh!0(dVBrV_w=y^ft!)jdlebOZvpwJGmO<&^Ic0emkw z&in-MZCB&m6BJrJntY22;IY?ZHLn1!f(r%VDW-<}0(dwn(t-r=4m7Z$VC31a-R?ZN z2HNrZ1@M+UII7+#0i4Ek%r1Zrf}JK@^}Ge}3femBtDg=D;5R{un|5o|=H4xUj|<+$ zA_91SH0url{5XDb1<8qD)!Afm3E-WAVN_=fBNY+Ap9C*L5dr)*sFC~x@T*r~s(J-* z9W6ax0lfA)oNjCZjDJfiTmTP(R$KyjE4=X`_V?4z*1`g~0Y8NTc16HM0H+7DraCcT zB7oNzws*ip0GGVN=d}!&2;d70TgRU-gamMU3|M>RocrJ^Sq`ijt$qIVhETj+2_-!b$mp=m{H4Lwn4wW2Lw=TYq` zv{un$4c$U$y`r}oS`U9MEIqUVA zc*VUq?#2t?VQ~JxBY+pda&De_U89eiTmtwd+{fn-z!%cfHogE}OYdsx>8u5CEr^=f z0(j=dc)7g-IB^+PizR^9UW!#?3E;mkr|js2S(KLm{tDA7rvN?@cASn}4-1>xi*Tr= zl*D+nmnb5DccdA`62J}r#TH`;;PrU&1qoZz#yaM;#(z)PuyCsh5<#~648a5XJE zegQlO)*Z)f9L}Jg)L1M5{4gXNL@Iv)yuv+@@I6#{9!}mXfPbWA$1i~AW6Ebfufvn? zO^wA8z>h*U!Q=}Tz;kI_P61qlndlb4A2V_Z;FlR$O{d-AgN)K94jNs@2xJ}Qq(-MR zvR+Q30~uL0r_nZyQjP|T7+Ddg&zg@Z4AIs(GXge=+IpkCzfHxb6ZCBOZM1Q5HT$6Tg;`%nxr2ITCw^=6TM{{`! z+7|&lasapA($RiPu5a^B1n}>0*SiGp94@yRC;fiO<&bWH06xt0`waYGAR32fsJ>GG z-^)lPp!9MXBb9xEPGF=`Pte|sRNe{Nl2Lh(u!0(3cL9r;$~e8Z3BS`coQ3PMR{$S+ zE>akao(~Ta=%NIN5?=t1!jNPazpxJ z3GAe*?iu=^BM`u?O!@s(PWc`Y!1sXT%ufK{dM3_2L7~N?$+xHg9&-*>^9tb4;X*-p zim4&L03Jq)v>*YTpn(+yBhP;AcH_Y{(2mzHfLrq5sCuIW@F$p#*#+={u+xOAp0@yA zPFrVv_0u5%{01m-({7F0+`9#E=iqHDB7pZpv+fYUkKq?rkev8colO>(0NybeMs>z8 zQV{_>E_e}&2;jFsjpQeQUn$2_^$OsHwDfod@S6YNbYlx({997t0{AIt#U+4S0sNq0EdnM2_(Q|i^5+X70ldPn zX#o=fyyGAq%g4e30ep^OFIg56zsKPWriLvG_B6v{%Ic5ZbG#H zKHbpGh1RNbdm6f|FJAem03K!NcS4JlK3r(%yF!ZItC6)t zp=F8=GxT7g<%-TWbQ_@+if;KVkLs^JcD~&d?QG~TLX(Q#X6SgKm5RP@=wP8KMQ0e= zOXzS#n?1*)x>9Ib(IX8#L1?w2HyXN!&{{*bBEI^!t``Lg;N@52xEn8k-+}Z09RXYi%ei^#b&Wo5atYuR z?&EU^;0x$!8(#pgp?5X)bk+j+7Z5eE1@O-&;N|uT;O$SvYOw_Hnp3c9ECKx2X_OtE zFpKgMz+Ylod?A>tSK@OBWn!DJ3x;?Inr`;0`pSSOWOhld;8E0=S4LU$6ik zcRIxa-@390;C(4tlr4JS8ji(}$K%M`QY`Q&u?P#`t!RR=1n_;-VllOdM`tI1Xdu6~Morh}B{V;LE8+uK*rOEqVp;D7YvP zn}P)JZJ3TZ1@IE8;R)5loiPSp0sI{;JAMH?8`d4iZ5+;^`>C;50=OR}8$>F90leHj zknlb9=&?9?uK@mmmL0zUo`)%)`MeHKz85tXO8`Ft*#wg>SOCwVaXAI>RLn%T0RD)P zO8~#b$Z9(64tq07n>c86EhCV1l#?2jGqPSzqXQUOHK)&*zMV~o*0C#7q{F`p}9HvUaX?ifzioj!N zx(!n$;xzpWlP9YH{)MU1ar)fxK=Tv8?I=|<1@L-YUSq;0I&cvz0WJajJ(t_elKNw~ zJRNQ4B`$}Y3Iy<`No>2S?ne46J>{CTb0gQci6-Uea=FbiDL;zKQ_#K$;1Tz7`z;*p zx8V9V??eFq26w$n0MF)fn{m?b7hDeM76{-&O}|gW4+f%fc$(@v1@JwLR02vbmoie> zC#VY}m3o5qVx;m;P)kPTLBb096?PY}n5m4@dzIeF^p710Dm032t@?& zo1jMW6TpKH!Bq7M;03hwcm?q4GMsK~0gQi3DqH{$gjQSvxE0>`5c?$kY%MH+*Wss7 zz%C1z2;h4jVm;O+U?PCuGi=X*i2z<;SaHBa0B_xo+g!t+FN6f}sfN`AOa$=#hJ7R~ z5Ww#nma;4)fa?ssUuX*UW@9(Q4O;&Lwtkq$bD2;rfKN8`IH75E?mdQ<2-O03xS^W~ ztySmFF?8w8c;%x4xK)21)we>6ls-Jp(BVRh6}{ci$Au;oeZ$aOgqAA$v!VYHTBhh0 zkMO8E2`yK&%+RfcRw#Otp?}_F=i5!uR}7scG^ywmL(@Vl72V`f9@Wc2Q;Hs9=mSEB zD|(%wR|rij`huZdgjOqBZRqYoYZYC;l1J54XuYEQ8@e3+T3CPp-VIlo%oob=X6efV zaAETb;AXV`Rl=H^Qvh#$7_Juu3gBgD;|lx5K_1`3Kqa0 zA4;*nx2`M#cpr)uWsBaohGX%=J~;BW6bn2`EW!e~HBB&<08Ubi#nd7mrNywp`ji$N zuK=!wivZ!uPXNCJt5j|Q+?t~2iOu_^7#ptu{%wD(7E1tMMlE^;@DOUzD}YDBMS<89 zB!F+ldoiZ~UQ9JSq3YKWW8f9Q-_o+<7r?c6lVm=!!WncQH5N+%KLp7Jk;-2HFLMth zd=EXcH%{IwfWN0@$1i~AV#@m_{{S@>O91zWY=X%bEP!XzxSRrb3TC2P0Ds8HC4f_m ztftfMuot7WiGxPhFalXeIjPZUjI5W_Xn#gl&1uw*QOeQa-up9!M_-Q<$|itsVXFL_ZuUP+m4ef>6Vr;oV`#cHQzhaw{S%WXs{o$GROvWxmhoiYXZNe|*DJ~BQ;7zWB)*Q9}bE3>t_hy2Ds~80=SmTZN^EzleiqxEfBzm zn0^Pr4+f%f7)14*0{Cu5DgmXJ|1wh9C+K)aD)j{I$w=j$pcahEgM<~d4t5u?n5m4@ zdzs_F*O2OWU`ZfVMsR8ILG5x{qW7UMf@z;5QBJEHtgoooVQ;zcqK6uKw$L&~uQ&7{q2-FcXlOg36^edu z=pPr@`F2xugZp_@GleD_H%nh^j|-bu05_%euM*bWoC3Jr zF1TJ4D1et9j^l2;0DcS3|91rN0$9$?Q?G0EaT9%-a)s`FaJhT|_wgKg^W=dodiUxv zaE)m>J&&HY@dfZIdRJ3VXDxtdf~bitfTwSZm)k3Vx9xz{VhP|?J7CpV0{D*|DLXo0 z7Ud;?Ct+IU6u^hUj?$k{FNn5=8`Xf@Ty;0IyA8i?Iao-w;x`H3}BM zAMH%Bz_+d}0=Sf-McJbFt>IXFzYUJOEyV(l5{s|^ZbcJ}C4ldx7K^DxJW7jUeK&y? z9IpWW4lV+OD?b68f>kQF0B%Lm^TcM<))*VF0B+b0tHlz)mr{#f0sI=Z=oP>t;G#fm z3KGEG@m|a+fEQ5>PpBShhcWO9;BRQz@eANz@FvN8WQ8**NsYx4zSOC}3xSRrbGG?M%0FPzl62LDq zvYJl2!v`3pO&m13ni0HgQch}gDkJOVG}@1mRdX7(Wt4I>_!s7lTL8~tFDb*LfHiH%}kYl)6JgER4F)34`NyocnnS3F;yZ?(?2kIvI^jtOqGt)=Y9e- zKLOl^QZ-Wm{{y!=h|d}mHqn6#x!fj~lz+$NHnXJs11?WT+j)`8A*X_005>@c`>d+_ zAN`e{a!uO#AJ?~uCgtaFxy>>uKa$H+(7p)ZchBVZn>*TX&h-b`aVE@$@mIL(T>|(Q zF1Hyc{Z?@~q+1|>4>tWi1wRR@%gptZVLB}ytsV8U;Mk?P4rZP_NZNl#~Yg^*F>=nSB+F-RZ+(_jTz@6a{2R-L4fTwMR&6fsq z(E|<(;5qOhfi6mLDDegGdl-`J0(dtJrV_xrosOMU)jf3zl~>yzxwSCm_fk3Kdqe== zxfjf&^U|JoFD+{Rz;WxtJ51(NDtrZQZh>=8P-yXJPKXNN_giB%uK@lOE);~Pm>Tj6 z;I~MT79@bTrGXU%BhP;AcHzM_(2mzHfSdE+sCuIW@JE=A*#+=^u+xOAp7$?+m(bQ( zU;T9Gm30Uxano*%+T4?*%@Dvx2XA8$0bGh^-64PZGoxk6~Oao>G2BSm922Pu>~;xEvaw;{3NvE62L9-#)sJ7 zLqA&!3*a^Ql@zf5222F-VK=hkIxb)$fV&yCd%#2hzhc-H0TTgSW7sPGd?6%&o8H9z zO$nF?;4;I;3JV1AErz{dSx5lCW@u7q3Ld(4ajY@)ze2SD-t1-`(Xm3)>fFN&-9@Mt zz&9AWiO^bgZpzTb$K#cc3g90M{aR>|(uW(~!lQaeXtAOP8d@ndq3BhH-XyeC(Ps=j zOK6#*UmJR$&~iopHngqK3Pnr1^O%1>&d#@+qW?AYXQ4?&pEPuw&`L!=H#8+QrD%hp z_X{1a=lIyP=u-G=VF3boS6pR$kLpRA z;=<+?z?;+hR|#uwP66Du7}tve1@Mwxaomj;z;D9&|Be8j56iiE>UE7iZgL6W=W!p; zk#`Ez`r-6?C6A9 zl$QXm!nDdMfDeTorz6+H!sh3Vaj2z~#CWuqC?bHjry0c(z-uJx^>#Ziun*3gBNi!D_Jt@PDaAuK<3PTJ#Fw_u!&H zYzh*`$0Cr$SztFgx0{AD)M7IDQ!^k>1 zEeKy=WHp^eJsG7<95lL$kxKxd!pM3#eb&B=teVrP4WpE!uRk$w+yZzuqe^>L0=Dhu zpMdzBk=1d!uQwSb?OCwfvu9Nj$|itsVygU`ZuTsuO2KJ*Ak&J#V`$ozsSebx5*`%@LMjonI+}#b9vf?U&>$L@{j=D z_z3K?s_q8*D?P1$QvU|7Zxc<*|HI`r%cT4WE>FQGQUvhu!@2z}9PMwx^)m$UI=Jgy z0(cge+l-TbKj(5tw?F`QGW`yO9}Gm}Fp%my1@N7WR02vb6^vB&3F^#9rJkVO8L7Mz z)SOXykg$T*!0rMTGnH|AZxhy!YyMmx)@82%K4?8$zRPeUl}i903y(PHId1`6Q-sZz z26NE^4h!Jf@F0OMN^mIg1@OBVlI#Mw1cRvraLJ+ANmboI`k*8D1#qz`zlX{x-y;I} z4se|L3E-Rlz$=iT(BjeLTT}p#`Uk6d1@Hv8P!OJCYRE5u-y}s^kN|E^11kzfp8eYG z%!6y79j{*iZ^473>Wvb>A7VOY7r^_%PSd=y)~Zc7$<*j8D_7uO057Jkv%dQ2kN|!S zl(=cPCfaU>06r>s8;c0wj%d~$0=PeZaRteVU)9-UaS7n3?mg0z+;0Kp@;w; z3Th-j0i0^URP_qrxwQ0n1#tb}>tjZzgQOW9oy`C$={p6Zf`3aYTmU}-t+)hm3%v26 zm%Hg_YheMr8o!bPc1gfQ06%*f>#@!O69N34VY>xP1n>rz^LfnzCIa{%!&dU=3n2k~ ztznY`CIa|H!^Q{;1n`fBJ#Se^0B>{!kLF&XDcGA?0eq05mk8AY_-aFs5t>%#K5OXC zLbU+?#?U50Yt^~`7`kX5yz)^2yw8<9=C6bnDSddUp>GQ z&CoN2mMOZ&RXnN#gqACMp`mSrRw(+Yp}&>d`F2xuyrDCMCKX+6=*L1U72Wx29@UFN zQ;MEr=zT(mE85r4ONFKt{m{_PLaP;BX6UX$YZcx88XncALhBVh-OwfQ*TMn>@GiK@ zWWG>_H%nEkabfcc;LT|LtAtf5rvPsAJ1uN|f`u)~3mcX6OmEn)xL+@9rGNYNL+kti zs>jRS;ue?$jTgXg!1@1<0G#$mvV9t62H14DeMm6d5!6y6< zAJ(tMs<8y{Z@*G@bb@B{6TqKiTICeLhro{0k?Ub$Gov1dT8iEG$D_SO5dpj%%_x=t zUcCleED74m9;ZJcr0~p7a9#S3xgYTK^{QbbteWXo0`tW;t9}DiF+PgN{zkE2hJ)-k zO3wvq>`l?4Y|+CB$KtycIP$i5et$elEW!e~B~37v0KS`AET$ImC@qHdU78l0roL+5 zz(s&?6=A(zSi5hpKk4428!hB2t2P~lNR)ua80v(K8@<4Im5zM^HvFMwy_O_KS@3TMzg)L1M5{2(M7L@Iv) zyx2XE@IBOTDNf!ifWM_>$1i|uG39-ezmFOl9fVrn;^8Mj91pUZ7>N&RoQ+-8=PkK*!l zwEgF~JS2cODuK-#JSwiIztYqCC+%F%^=+a_`Pp1s4h)+PP2LeuFGBleBctSRtBBr6u`&8BMy4b zTL4d8jLnw@bI}713*cIKkU$qDIF$GTcsPb6y8zx5gQ*1Yt~+zy4WJJ?0s-9Il;2I| zl~Oi8dy;< z^6b}cCmvh_>^9A-Vmn-81NZvgg!?~NmaR)%J@ zLM7bF@8__@IyPV;fcNgotR!G%_PqZZ z)-+%ufCm~@&z~=Z1n`%J{S+_}z<(PyT38@}_dS=#@|fGNA-ASkxzE^-kv0Dp#Ql~Vv83_DIou7`!q^yxU%Qkpy-W%4hc2V$?M6?@y#jP?vFWS{)1S=eGp zoT`67NMRS7;JWmmMhW0Cb14@1)|KTKz&5SxMo@J)Cx<`lpSsD>w04^G7x)KIAKD4_}q;4f*} z@eAOe@g~W9WQ8;6ZfY!+0PYRR29e5N055V6BzzA&GzBN`6~N!nvf~%PzhKJyCZD9n zMhBtRw|F>CeIc7*@&yavnKUk^0R90p(Jg>KU}PPgmW$6ZvYJk#`xvE795lLukxKxd z#K?L%eO4(WtL8Ln%_!yQ>vzl>w*dZyQKdaA0o!&XfG0AtI!^cXI-{gL3wC?Dd0cLjOX`2kpd%6IVh4e(Cg)X{!ZuAd=**T7xx62L!mxy?A~cOsW3q2HwK_dwI{ zlkkIqXdIrT`c47dgON%=>E$9uD*FT-!$_r`pb|zZ?*uhtR30R(pjEKDfW=H@oL>0C z?=-8bab5Nb-~%ROwKCjD<@yEi(eQ|ap7R#KQ+~qcOM|)S0fzTj6;MYl!79@bTrhyd&BhP;AcI3e|(2kb|SFbj|?DD9DEnHI` z993_W03L(sm|Xyu!cNn?vessdV-Rf{oC3Ixw$ADmGa`Ur0VQtQt%{UWvbY5Bw!tu}Glr3h2;kAdi%>)WzXoa~KLPy0*O;nbL!UVX z@N8OoCi$u@|A8_(O;hj-VEkKB;R5(EXvHOfo8yfS3&WlCv$e1QUWs2x0lPS03Hv}f z_aqiz#{^6SaDT&g4Op2yZ@gif2TTO;TEkZG=L;bLyxYm#-;V(k0eqoh9|#Ks@MDHO zYgtGDe`@I6LQ}9evtwOr=*2>{0N(W!9??-k)9T!F4c$?w7Qp=s-AHJyI`?Bk7t&WA zQ31Td&@Y4*DSf!ZsXVGTg%&G%rlI|XCKT;u=>LS4D*Az;rwc7pbdjO^2`yK2o6~qy zt%X)7dWxaH@&^nN0er8a(}X6~x$heKq0mZ2=NkIF(3GOB%Xw7y3LUQK@rGU^G_7b4 zLyr+!t>~ME?ku!c(V2!e5n8Wk^V4}$i{P(?1qk4saFxk?p$u=9KC8lo%`1R6q4lql z7B;MG7wO0!z*>Jx3mfTP{)dQ?T$xH@3g9|=d^BDF4~6sp9RWNCmUHve>#8QrPxZ*t zlq;|Reg^mPIRx;3=xG~Y057L^HT87X0(csTn%Dw(%4c}FQT_Jok4HPohyZT)C06Sa zRL~osumE2E1y+qEfPejpvZE9Bo|gcgh-sBm0C$2Nrz6+H!e-h;9BL^|9*;8lumEmP zGukt#kbUwiCt-^vajO0fA%$IRg6qk3dXL8#)KIAK zD4_}q;4f&|@eAM?c#~v4vceg37c~}30QZ7qgGl8sfa}}?39l!8(>Qsr0REbm9lrpc zg(>fw{JqrJ=pfX3aSF$&4`dTezF-0TGmXnBfWOB~bPM438CgfC1>v)dtftc_$tZ2& zpwZ=wTmtw+M%K&evpO=eYEGk8j8cxie#5+R3*cFdD(zVb*tQ!1{3#==<8)s`871vm zu-mg|^(T}~0RNAv@^8A?)0rv-r|Eu7D*}(9X=|oR#A*5~CQnuYJdLT+ar)d3f#xTG zx1?0voAHn76X#3A{c}M_n@F(_JRd+4@m7dl= zY3Ew5Zxc<*&*XBOWm0}9m#1J8nX>PcZ~wvVZ|-P+bFQBufLFs^?-IZ>xZGx(^!q87 zC!yb@?e_rF?-THYfoL3_p!!Y$d^;nRfYQr_j8ygsI+~G6JwdxNQh6t+DWmcrVFj&( z-32UWD&zFR7k;N%ITqJtuK?cv6RcK-8>w6Z_$YY9LC<*$;K}2#`O;u6dca`;JPRHq z&_xLjCB6WD2Sbuw0Pl>!R04SC->{Rax+my^jz9o6Gv#+uIpupq0N)0VGd}_RzcD!X z1cerlCf}k0_`Q#@npXgS0v8IxQ%nu{1@KT(qy-7!b~Lb}VC31aT?Zaq1MPVI0(f&C z993_W03MC$m|XyOgq@~&Wvx}4aOW#4SKwa&FQl!rzWV9VFMtPw5;yJEMBB{}z()jc zV-W$oCz^GK0DcI+xPs)wuj*{FxCC(fU>MaI!$?I0@CU(*P(%Q~3Th-j0sQ>?n5thx zpE(6^EiFBheASkHgwu`vPe9<`k_s2VmC%Yy0B?aeKE(bG`q^4o0N3MJQot?>Si(L~ zMjyeN>ga%p0A6a?E&(gE=OvEh^EL~Z2;j2}Th5;^gamLO!+r>u2;h$ldtX=}fa?u= z#jZgn(|s$6K9qFoH#S7^DScNp4A zXoaG08MY~l;O?N#CLIF^9tZ5wEk7n z!j?k-w;GM>MS=eY@WStK+>IB&L*V>>M*z=;<=i~=x<(&2x&8@=r*R*jLja#mPuutc zcp1H`si(6Rz%?LhVhiBO!|-yW`pqeT+m6I)u>|n45m+^r0A4qWvZE9Bo|gdr6w@lF z06qwIoQ_-%3!9pEaHyp;c|6)n6!|A0wxJot62SHEVT-W@@NW=OxHZW9_T&FFN&tWG z0mTB}y0Qr1Jt$g~EqdP?j>Xq+%lh&1r(M1n?cyVllOdM`|mgkWDc8f(7sl8kbW5S7Ro+1@I_F z*3oG}_zWYf=`^~RQQE{oqsth%1n>!rte4Yg?aj!lIgPetlydadfO+EB0>e}>CL z0(kue*k@JUHS||{TK}Y-Yq-8mG$}uW%WalP`5|1Mf=y(~zEi$6pWENe(f(#!KSKbo zg1g=&fTwf0%{b|I0+%PD-=yt#f79>d@PmP993H3oP62!yBb9*C%LR;7_6a(QkxD&5 zyD(CDCunm<^xh`?PE-F1uFGBlyx;3stqeC(xdd<-JmR3|yan)2 zL$UeNU@m&VVF5f79wg932@WN`0Dc=ol3f7rguzq-c&EA8NmbqB^g%};fSa1~JE)xU zJtBZ_1;?460KQ=`&OJe)#iPl$r~rO<2v+k7;Bj!FAUws?kY4}~Aw^n{0B%bID+)%Q z{o3uogKMB2uU`Of#)G5kjS|2gU^-?Oz&WubVvZd3`*RzTcbAj zBxy4Q@ZrJRSVREtfo9zyfcxSXSCE|eRh>;1mjK=-7)Eu*Fj5f#{C@Bv6cNC$fEvk9 z06&+)RP_qrUufy^3gD%$;dEmQVEkKB;R5(kXvHOfo8gTQvF|}YTMG-|75J4DunPm0 zun&|r`?BIXDqtdjPcm%hfR)+v?lo-FfQbMeVc0VMd?6%&7aI0`z(fFVvmcLTl(0Ym zpJv$8mW2fHeTLpCGzEJzJJu0~UMN%x;Q59gDKxFlZL>d*X$PTN0H0v!210Aqxpx{m ze;Qu-r~rQ3&?=!tN+14W=<7m@6>V_v=3Pm?RkVmz)#?H5!qK6wgRcKPt{~0<)Xr-br8Tzcyl%hWxdbiNwif(iekLqHf zX+;k*^eCa#ie7E#jzVh{eb&&8gw`wijiC$SuZ0B&;10OTWWG>_H%p&Biwm1q0B=m| zUnQ)$IsXZWEnmjU<{7C@dEfYIRD=fz_qZPo2Opa=;J1r03L+<_#6WGEPC3; z7r;yDT}?fmwE&(9q9(Qg{^@DF++G3P<^`-4O8_r@9;?O@z-wQm?C6A9l$QXWfN7Oe z03QfDPDieXh0WAKIMh-~Vm#VQ6cNB%(~M#X;1$ndi?IZ71B4WAje-U6`!7)}@U1J0 z0N$OVMcJbFt>IXF^%Rc0EyV(l5{s|^-hw6=O91zv7K^DxJW7jUefJS9I9>t#1zZFO zSAGKc8Ca!q3*ap%dY;$}8;G&-3gA`GV6|8R_(E#YD}YnfqE`UF4HpGsQ;-1uAKr^O z1@K&|;R)3P126_&0bE7Pj$Z&z!F90ldIHknlb9;FCCc zuK@m%mL0zU{uxu=H~G7%u~-7QH)In`zF+}7oyO%9z~5mex&`n^M%K}3LHINytLZel zhf&(ZL8D6> zfaWKFTTrTYt~KEi?e`np>Mj91o6Bu-N&PRl+-8=Pzsu$6X!}odc}M`SSB-sE)m=@0 zrKj~z+PRwR+eDM{)4AMcnUo*QyOxlI0lD}eWX0;`qbMk<#8J`x^r&~x4b_{Ybw`O;u6dca`; z{4+dApovgRd#=hN0%U;T7Q0KWuE+_YPxHur7;d|2={77@U^ zqgi(d;6C`p6(lEqRcDjMC4jdMhEbg{j8sGbj|yIdA_90YsFC~x@UstLs(JV|p?3&P z!QRY{wdJlno(qI(0eq~XM+i-;b8j^?AyfyEmL&k-FQ@`LdzBHWN1sF6^dSC=$Z+3 zzTFgk&d@1BlZt+8=xCvpiWcq8qk2YYO3{4{y-VnDMK3e-BB5zT2O3%?v|778W3YcfeI9^Mx|JS(?xb7dEc|-iX$}N?3Dq3gDIx<9bn` z0G>Y>$K7}V{3@LP?+D;uU^zEWy{^&6O)dfa6z=152;ej6X&YYvFQIoe^>o$(cnXM` z*aG;+o_M*v0(h%FSS^+SUh*JTjU|BB^rh_RgjtlA03MHNl~Vv806R`cu7`!ql>2e0 zrIf^Yw3jF%fZNfGVhP~oy|Kku0{B-5Dcl+b3*b@xC>HqEl|=yWM$w{d(fihLEWW%C zN8XlVfk%l&SO7Pp3C0q@w^NJ7)FK|G#jw8nkQN-T0GK^uIxPqXF|wLYqq`ZUO&m1(FC&)#KAw^F za{8=28Cf-_Q42;XM_=nOZ`=ZS2BS)QRsy!|MgXT7SskbQdX-Vqo&~!-d)7mQvI*ep zm@5CKn?04OQgE7Ag+(oo4y% zxGsAI@IH5AwKCjDWpEeA_911@FEluz%PRu$xi@3a|@=bR{+nXrN=9P7vF)?jV*xjZ%Ks<;Qr8x zO8{?ucUyTAFzadpiFMdn(D}ai2&ZT9kU$+R%XvT+^{AA69Igq zVN3Y)g^&P#)v)gZCIWbxVIzbE0=U`MJeH>{3kl#O4ecQ`1$#3))*B5yU#J$qgAF}g zXj+{++0gBUY60A28y?kqLTlBz2OB!~ZM^bP0er2Yp9w8e`tW%}hX^fJ^gBcQ3QZ`w zUV9$ZwL(i3-OtcdgqA6KxuG3}mMi*{p)G_~DEft=tKYKo?WX7-hE5imRCKRxdCVUO ztyJ`4L!TC!QuHxH?-V**(N7J%P-t4wwT2!kv|7H?%gjtlA08V3CtSIt`8phGDJ3x;?Inr`;I=fQSOR!i zH*7JM0A2?ng;eiJSV#HJttd_CTaIR)@+s^JOM{a0fQyaM<$T6X*bcq-l`nUAb+2Hj4L z#S*~xL9#)l@)yAK+ye>UL%puT$$JIxBwBX-0(d&6yl?V%Qe&|M@B@%dF!_Q7a1D*i zDS*GhOmqw2_ZV46rv>3tjI5^9=q^TS69APM@_0Bdg{#DrS^&^tBfA z#w~!SGpe*_C1Bfb1n?(}td7%ty}~GI&w|~aJ*zLFYy$XNrpmwRW=~*am59@HH6~A10X&(h(sBCS4}j(;fSXgQcCIzy5$*RY-0Cg?{0o=cN^GSEsRtGN-yU! zQrRcy2u3RP1ntO3<(;5S7?lSJD`*+)E?_ZJ8K?I);dh#4|HXCLD}YO{#A;=@k;)~2 z4~It_^qjW<{{9MVzBHJN9&lIyPlpEybWwssi7$ZPz>s7Yz&l_tl>px1CG4cC?os-n zBM`uwn)2JIobo*)fNuuJnV$f@_7a?XfG;}Mk*qJM+7fI z5dr)XsFC~x@Y5Gzs(JmmwiXt^ zOYtiyVCMxaVIL^_H)X|jM8HGfHSe-ABBz_eNAYwqI);zG4~OgP_)9(YlN06`naJd3oTQ0 zqM>^WEmw4%p~XTg6fG&{QLP$i=i5!u^9=n-Xj0LK4Sio|rJ~~u9V9fRXuY9#2pz6y zhZa1l3xuW>JeJ(C+ zUIDxTt$&rU=H?W@#TB?-6exh_-iG6DyZ{~y=l?qbcqT08=Bd{;`nbs@fCu0{K8FB4 zou0Pw1@IzzS5r@CEr5RlQ4?DLe}4{MZm$4tbpck3C4d*5k5yv{;8hn=c67ol%1Z!$ zf@zgg0PhDoPDieXh0Ra@!J(E?664WcqKE))Lo1-T%TZ#o9B^F@;yg5xUmH@t$S}dj(@hB~Z_1zd+aJ&Ne zbGQf)uKWb>Q?N?q7QmZR^gOY7>nx0oR{*c*iq&EX;Pa?OuK<3YTJ#FwH{hZ`Yzh*< z*WtaGQvlae4Ns`Bz6~Gf|+3^eDDR`4)KC;3YbQ?7mO8_S!*&tH+3*fo#frRg& z2hPCBdj)V6EjxYzJPlLcH~BlLu~-7QCu9>$zF+}7mB!^1z+Yn~x&`pNjI5*6f^Z-s ztLZellTq5lL8A&rE&<$`k@a%=tlb$|HK$Q?Mkz;MYcOxz0(csuN_$oUw(Uj$k7HzY zobGEdqoh3xc6;`$K7_If;A@yF|E8NgnW<86n(ocCBJdcR7Bf{MPSaJGJXrVMAVHnXJs9WGBt+aJi~Ap!h%f9$iW z?h5)VJ*|Jz&J|qWCYqF=%H=l8r2IfGPr)WKW#1`>n)Ww#w7)Ue&k(@N;jVWH;3-^g zGfw&)$K^@rH);DVHT^yUKNyI{;Ss9u6u>t#QVA%%bY-NnPtf6vRO$)pz)0ntpeBsU zgM<~d6m}P|n5m4@dzK>sFIsyT_i7CI8$|>I?0{A9yocRgh zYfi$sCn&UdH2D@4z;B<1)w}|DELw<$Ls=lci3r~SJu1)@EqDY>#Ls*3E&q%iJNw7)aKqTfDaDd#v%fE zS2XJm0o)6}xPs)wuj*{FxCC&UU>MaI!$?I0@O#0FP(%QyK#k-lfCqKKRP_qr8MO3x z1#sP|INjI+82^@3xB%`4t+)j6rg-B+?7P#?*1`gK34SF7?A(AQ>;vVAe>Ns|c)&ye zR~fcLz{>1-e;Bq=z(fFdEMn!hh(BKl3E)c&`zBx_fS)q#U15O${>rccmW2fHUxwZ$ zGzEJzJJyct@p#S^ss->Rh8`+3tyYXA7-Ybhq_+ zRG$hhQu^?GLthnItZ08j9~7EU^b zZ|L?yYZYy?5szv;q4kQMVCY=uM*bWoC3J{ ziMU=AD1hf&g5z$y0Dc+H|91rN&#;`Er(W0S<0h8?eiHZbIRtPyJ#FI);5vF&Q%`3t zfPVy06I%dRABC6OD}c8=4y(lyz;&ImYAgY~@_5RQPMAe`3E**D3$6cgazM8Cdqtcg)`_@YAlujz88`WB9*@Yp5q=!_#Wzc7*5_RfIp{Y$1i|u zFy(!d??H{l62SLEHo@cz7Qjr0GqO5P_w_QPq&*9Ed-kjc z31t(&S2I=qO*eZIQ>EZE-HT~O;4w69&QyswO;=*_WEH?aGF3WGpF0X@ege1|rE2F| z6CTliYvERR3E-JrZj(#uf5zoDv!wiOE>B0>AHd}y0sPl(*k@JU<@8s2TK}Y-%elTy zG$}uY%WalP`2k#>f=y(~zEch{?Qi60exKmnWg$r0ut( z>9;@pU?3WY{#4&7fNx@?5>R?Mhmp!YL5DF?sV8U$Mk?9<`%tV_h8w9|0{BpP#6iz_3*he#!RAYYx#$6h1#k^KNT7=n97=ov zJQPEcT>x*7!Bhfx`|j9DRb7Ajpd%2#O-y-rDyMvp2;dvRapot0uRZ|ho}kd;(d1iH z0KauGR`UwrF>s+EJjK+IUjV;MinJgByd@2+C>VM6YuBC!*FZa7zX0Bd2S?Q#C4k?< zbj&V*cY~d#d1cK@0MDkav%dQ2kN|!jl(=cPMs4oh0=QG~HWm@UyP#Qj2;c|siz`S@ z{Ho3-i%S4+6%3;~V;HH30Dd=k5sC=l7eS5WCxD;Y7gNa;}yUQJK=O=3t;?P zQsDylA!x-VfH%P#A7X#Y_1H^T058U`q=0n|Si(L~R;^+Id|1Fl0PnJzSt4L%_Pp~9 z+c01vfFCiejz3=r3E&BaeH}0n!0QYfE-VnhyRYG~JZV`-0AFC}twK|MEh7ik2ICqR=u$?>BT$q2-E>G;|B06^bq}wEh|!jc$sz{gp@cgV3a+ zCmK3ZXr-ce89GpCO3`-=yFwz$eNfgPtK*Tcf*huv|grIf^Yw3jF%fLqgy zVhP~Idt-~S1n_DIDcl+b3*dM6qgdcuR~7-hGewKCMekd~vG{y99C=%c1s)|9VFA1; zO)!=KzJ*#WrWWxiEr#{o2ejaL1@J_;2oSFP1n>Y@rE&}4O(}Yw*t}7KvGEGvWqV?^ zSOT~!wdfVV&r*wC0X!5g3dE)$0elVKi#Y}GEUMuN)xEo747>t(0xdg!0sIr*B$Pp$3E=x6n_%(< z3*gB#E~fzg5;M^)fQK=%j!p~0CmC5yr%?|^X%h#HE@I>oz{fDMUQVA?!pN#QjhZn^ zIr>_KdE*wqQyEp-vl6i7Hv;%0Mpnn^zFuOKv}eI?&z{wrP&NU46;tKkbh9TiRSHhi zJ(*Sn9z)YDm?{ycX+0)SRssA2Q>Ekdxg&w*CxDw$s&=k5;Sue(25xni0REZFZE{Kd ziCk_oOUmEk@^rNQC%HT%fd9M%`>d+FjQ&bb>z}l98P~UoCgmq{xy>>u-=E7Gxsy!9X+)4^w@o0KSot zN=nR!?TppR za3hsV03QO6IOsWV0sQSw*nDX)7d_yx0Gpd%2#8=LZ5sGRaWB7nPrVM6Yqt##u7P&EegV88500ugN&vr$>6l#rm%vWbyt3vcfNN>% ztgn7LB!Hg-C2rcSQJZ_W06r*q8;c0wozbj21aMFM;tG-zzpAsz;u65EgJD!>3?mg0 zz{7(Vp@;x}0n|u-0(fA1OjWM{o<>WLR{$^QfYXgFfbnlhg$v-m(27d{H^CbpVt+IJ zY%MH+7vWb@z|IL+!ah(=U%&$F(13{m?q%5a0V}iTjWKM4fQbNJX4pdhd?6%&cUZ{% zeHAbfz-JpaOjsa*`x^FyWg!9lp`qP{reJSo$GXhWbA)OEynP*y=wP8~b?)hgZX;9+ z;GTy5bv9nx=r4dr8TyM*Er1sqI$mgz(ueI9@u&t1Emrg-LwgBLD0;V{R|+jvbeN$h z2rW}|wxN3nEmw5Q#XPEJLMs&QZ0L%!Y&5zldYhr&3r#Bex}hV4Rw_Ef&;deIiZ)xq zqqDS0Ds#WFSl0!x7Zr1#S*{^+F{jL0(iwX zlpUQgi}Dh{A7NVM6u_mh<8n$-hUIDyxE36hv0G~rGdIj(^)S_1a z4}psUu_;IZUyb)-P60fVYIs6*PYaBJR{)QvWyddof5e+4^N|(Kpj)W1SOWNNNH&O6 z{sOqxJ&^D{bYC$}-YbA7(z4?hz*8{geUrb98jB@>laNg?`GN)TPc$y40R93q(Jg@A zVPqYh7KBeQvYJk#+Zm-z95lL+kxKv{&B%H=eb%mwteVrPDWjC5ua%fLZUH=nQKdaA z0b70}fInnpb)4=i#VBddg591ys~4ec0{BX%%D?GmPhhGPoThs)tq44Zrp=ft5vS=2 zOrER)_G$LVuN0L@PTZ%(P&xz>b7wBKsD)m;L32AA99lKP)=xy>vof0N78(e|I< z@{j=j<0R~}s_s(yD?P1$($1w^-zJ)rpTy-h%cOiiE>FQGGG*T>Up4J-;AnpXuAd=* zm%v@`62L!lxy?A~_d_mELcdAd?_Q?ge(-~VXdL=ceWw8K#z-Zg^l~;Mm3@K^`9FK_ z0$o*c#SbS)01>_Mfue%OM-@bfVwNFDpc42)C%tc#>~+;*SCr8XJF0VHLyk~-F zm2{-K3IGqq5{H(5asc@6n~{8Z*cX@KXaM+4EF@@RAX(Y)0Pq78N#_CJ0TiYa03L7@ z8_D?@d7vW<0GF8Z%cWfOJud)!31XZ-EdYG(#_W5Uh?f5weajC3Ke#E;)*AqR8UqFK zlnSBs2Y{O-MEXAkfHxP$ibBpiAG__8xeoDo*B=1hNSPD#|0)1Ho9ftk0C;zJni%zF z$m=HsfLDs^?2djm5&-@KLgI$*3dgyR4*(w!?#A*0z`HWC9uok*j!#@cIr&tbRhGB_ z@Kzxk%>`^UPhqs_P8^uMpF--T?4Nec0U%4gm8k>3ErT z54F;m=s@2z(B=SI>p*+GuUtJIKpPzBfd+bO0Bv%h7aHi~06N=&-esVp18CNPHXG=H z0kqkHc3Y`j^$(ye4s?G5{ZY;X^8>)+4YUQ&{~-XpJ*`aPhBE3bJzq@2w%!2nx)P!_ zz~*)t0PfR^_TqmG0I%GUeE;_W;JZ=(|D6EvKVi z&rz+q3;^#9k26NsqXC=dAKCeGQDXjYhbS)qyruMLg95;QH+Fu50>EEFr0D$r8~}c_ zr^tf4u1*5LyNI+zTU@_2DvQNGP!|0}7W_YuMKl21Q#!ao0pQDoVyRH%{{h8l_->9E zob?8P7hw<}uAdeFz6D-d*8$+3BE9vVGJz^#*{mVs_Ra0R9IjN#T+e)u79T*aiiFe+^}W zq<(q;cx5~z(K%H6Jv+bN0PqW9cGe#NeuFB%zRph;VjC0yz82bq&i~H=;Mat&*Z}ZS zYGQl<_+bUv7@Zp+yjejuOy`2GP*B#$!3B*`P+S0bxPok4&aJhZf^2Bc1#P0BrkJ+c zsWeR>*_1+^5S$Ag ztk7{`9K(h7QK%D$bD^J8c{&XMH!IW$$GLSM2Q)7LoSL?}vKzZRk8=@H;GZD6w+YFm zlkNHCUt^}D+=mb5+b!8i2M{;szaWR`Q93UueoH=`hqQbJ=&Z1GHZ^pvj-hk4;!}4c ze4eG{RNP4UFwL1*Md$EUtX}k_G^zAI(rDdjW0(?l`6>S zcLelrI25p7M!6%Pw-sbGI|5puAfwh1(ESRk()kbpr4?ipnt!Z(KH5+Fb%H(<5~+29 z)~bvlI7C4V8|O=JfP%_nK;0BHP(l1-**MLxu}mJvhz`dxcoz^Lp=HM6(2WzbkbqgahOem;52DApw1^VU3fc~i<6XT2! zoUfo2T8n=yhg%yCXUL-;Q5nwATFo(SU8EpJ^~_MJTg_He&(1$)%$%M>p6-=?g`I!v z8@dFG9n^^fv5>T98l5sC`Xs8;N`sRl{ZytJ7I0Dv!N1~>Km-iqRo%jvEWsDza3O}5 zsGoF<@RD_SNr4yXcIw$E>ZlHp^jzR(BrKV(f6}QZeQ3@!I%VYI*{~0;M53f${5K^s z+o9Ge7q5IPT+9+KSR-A3zf(`RSej{c%E-lC-v^THoQq+?MUz9VQ!Y}<#Z2LXH8eb8 z#VuT9GmQ+HSZRWbejyiTJYn^#vly`1WbzYrrbT5mXbvM^y%gYC1V1htm+B_DH$&uY z`pDlkhE%g5avr;ea&8E@>RcG(p%|D~Go**Ck*=Ta)RP|0%rrV>3SIS(_&mkBdsC z(J3bN9XNL~!WD!%C9I=T^0cIpbs-E{d{FCR4bFuOdnrL^6oky2N?||eUne0bnY1pu z(K&X;S7f&)Y`SyQ^PwhSbAsYhl(-ug)>Nh&r9`DyC7d=&jqu2djTJYi>&JvuGgKUp zjAt61V#=t2bE;72(O&%FOZH;4L$K31dOyYod{-&1=|w86X?h_g+KU@Rts139*b6qs zUK|lt)m{vdUO2_<#r~W(>+8iE?d(ORL$K3cypLf+FNP?t=|y>1)AT}0v=@s-8yclX z*b6qsUYL*-bxM0tF1>Jy*^7%|3QaGJh7P0_WEzPL4K3pz_Ez=>x?G6K@&uA;q-=oK z&)|I{czWJyN&^eFdZ~%ctK=q16&nK+K06hT_XXwHKa@u2I{kYn4&+!Gkz=p0rjetR zs2qPS;lf6#5z3K`QI6fisw&4`;5*ak6jMICaV7=xp3$PHRJEkBNTt<5nyB?*fm8*O zX=EFaYP-Q}k{y;SeSu^e%Y?Z(zQNm#TLvR<8Kp*nXKei_X&ko#ZzunXeu6hg+eRip(iU; z4RArb2Pw2XzU}~p4vdGc`&{~477zVEpTtCKRf6tN{8Yj0Z+vEmi^aHHC_uDwM_?g{mA-bWlHWD*sCbzRhGh8?ntG(HH>|sL7;W3O9dl6sU2Y!U{>|QUtCxAN)269 z^K&h%?3H+`=-|OMyD3a?fD0U5==zp*E2_^<>N%J0bz8|?{9oiWuf*HOh76$uEQI`_ z<=jGy4i>LPQahD?>#Ijn>7}V}n^SduaTGUGr1x`K!(6iE5Gy@tO{RJcnQu=lEKN7Z zLW)a69{lvARY3PMTnXf&G?QFayoi@+T&|5!AmI#3*9byKIv`}kiRS(B;H^HJXv|K} z)@*5*QE8n7NZS^XqRA+-1Ln}!xlg=hNqjc%-oXgQS@vnB$dik zJh~e+BApXy`%7ihl-+GUzHtD$N)L2CK3kMk|wS0on6;J}twQ zs>}9MK_7uKgflRZ((>>al)H(NT$|T#F!pSBXw>}f>?)}5$<$$&-B2S$fIzDaHH4U{ zTqOlv1QoN~>r5jogNaz5t=WNyBY2Y;i9$5Gk+jDc&+v84Rv}~t2elHnW}TK~YL&dO zYyRw(sg)^t9DqFRbhR)1F$|PO%Os4VbXBi#HV8AR47zL(Fw=Kx2Fp-q+aGY1Zl94{ zQ#*A{QO!w78dup(RxeflzonicmRv zRl^|lR3fz~wXmZ{YGKPpDQ_!q4Gc<)w!9gTVX1}wfvMs}bsr8(4O+x9(y5!;QFP@t zsk&rGrP9O-P^IKm)Y7b+@7hG$5$140&6< zXoboSXTdG$>$RX5B6i$C3OmpOG{uO z-AKO)gWG^`BCeEdDQCHd)VWNfL>jz`)1THI`b<6#;U#CMypfn1eNUERF*)M}QZE}p zuet#UvyIY?CM4rYtDZsVyOY$!GPc~`6L8=w1dNa2q-GnqmbfT6!SxYZ-oWc2xNfUr z$HRKNvTP$M)5=>q1wx^lQy^r%WWZ9zwOXTR!sWEZloSM)H<~5G`v+swp<{z}1|tHF zPLs%t+OMsmwi2M$?J}qKo8U6gW=H4Q%DZwtpsgIdMW|8JR`-L$hOy-~EMwAgO?eg5=jebx%}MPgn=*|;(;JyJ zqgqK$ykso~x(S*vPVhw&#_;J0PagV7c}9Uo)|zU^C{Xsmp2V?HdGE0DjtbYkYNK+l zF;QKkN}T%Ox?I@Pws51`6i~f1j@!HC z*nD9sV@^j)Gb-3jy=<0&(TXrHRoB+I2LxL0ky%E~lwJbu1{5333|O5UmO+R>I>#w! zV!PNVASV#y!LrsP1Qu&hRXQMD0FX?n%X zN1|oME@I>w9e`1C%21Nnws0n7#E~vD3la^^%mRZ0VUDB4p*LlxuIS>unoz00%2N1h z#TX?_TY*m3C1^G@v>Do2{Df-fMtm>`#!IY?*LTh1EEXkvON^;8I*n?TfJeu9xxWNJ z)Zu;3|BTs+#@u|M*Jw58zaiIwRa$~uV{x?J92U6d=6et7mzAhF*&_4wBZi z|9!s)rF5Lk_klP9neUA15t(n!0$1imPJy)YhENunfBFR*31t2TV;U;+WEt$k{~=V{s4t zr&yV9f~a;N^G8rUBJ)48z?J!pPJy&?23t|dPG*QSl=&ItMImD(c>3Sy`QtJ}N+xaj z-^zRrdmhUC)rVE)e`P9XoXjiOV64nf;-X{pyk4tkspnVfwMgRxX)RgH^1UQ2Bu>xI zfH(q~ABgG^nGa%tEAxI%fwc0OP!>J!#^7-%^UruVrZV?e1M*+#`Jr;qQS#;H`7&3_ zr2gN3@}SngROoy0Q0^A`akr2{JS#-8TLW20xq;x06w!)0A3Gb!yuWN5I)O6M0v{S4 z?|kHo7U6matQ%Y#SNgx?(3l;`U=e!V;(nojP^!MHdY~Um7+$X*0flgXqa2$M4;%ZZ zpq8|k1_BCufN-X6Z(5ulq`7a`pis`gUXIi0UK~~$+3(Ddv6NxmqYZ->@@jWk++N`a zj{;o$9o9sjvR*goWCh5+iU@_`Luo8j#rGYoyA|J9tWPSwp3tUDa<$ob*>x$DT3xmm z8JP|f(3y{a4JJe^%+yVFQFpLYH{mOCM+}=7fYOotT3*)PaWD5#*D=vNKyjpYw=8QZgd_ zER4}nSl4MMtenaUd=Lg6NDlFhOsXHwO;R%v%j}jaUWyiY*Z?FaLf}gfN8S--bsg(8fXh1Ve@30XP^xu4(9@0CP!z~&_%onWG(4SshPLBbQeD6j zzg-*#n4-F=zP9}c>3oD@rE@#3Kmcr~iK<(~`5Z2aaeJ1D;X!yOxrQWDUdi3tZ&HN0 zIW)N@;r)?CkR(py5Q0f3S24I-jPs4uS?z`zw5Zp*Ngakqk;pUT@LBX%QbYd26}E0M zkGCNDVhoE{auC|URPTq&a%rxQmjc-}#Y^o#HACIajy7XPVxfrL-~J!PMRh=Jr9{o3 zapFyY7R*ggdJ_AnS=dK4jYubFg7+r&baNOjgpsCa6Vva|F3rkd0E%(E!1z9n61M^B zEX=Cz85}GI#Wj(rv!d4Qh=Z-;AHccP!6LAVb8(F!yc&P}A!5ss@hGm2=+;di!%E^d z1J*Jl=Z?sLtu$ih%W>kOXgQxatxE&WFtfqSqVAdPZvXZ_>7<`at_F-&?x3Wf@b1=Y zh$@4YXiMJmPi8A18*bpXVF^3sRdo+Lmv}U}Iy3S~Z-1DNkuwE7Gj;A!IQUF2^dDmo z!^D2penc^^E^bTf%AKVgKS7~cxqmK~^j%@yVCO@~R=C6??u#clo2w!ElmwrsO3#r8 zrqYc}Y(VvfKp!*o3+xsZdAM}i^dy=soP*T{CnkrWN)z@}Qd?*5MqGzH3f*k_MD8A| z8&BwJT(^EC@|Ck|(%V?*C8kqloo1f@w76(|Dsc_^i;3mw<7hxXQON17garHkd}FMv z%E7kk$m^_Jf^CEv_|q6INOM{BLGogde9K=$FO%BgHA+g35_prVs)xkdNEcpKM-BCI z{#>~Z*!eqd+h{ow_e1Tz#=@dA{?D?+1e;&x3t?o@pm{Pv_l;w9AwmdJA6}csfdQV* zuxDN&GXaf5+0;Iw1wr%2vP|8-0B>t@sBYcn|H9?8#T<2`1j9!$I?>K7)%3hxOngeu zDU$prPyTrI&Hq833lGA~F8QD0Lv&&l1z$BrBeQAlisxonW=5&8_I*(h0}t-0?c0R2aSQO&Fsy znR<3M=)iAtbcb;AUkLj1OF{xZL(pcs&mvChtZDNw;TpGyNN1QqAhI0cmE5wHvRLSU zE)vjq!cgtI2n9SIhI!d4X(gUWm3(ilC@RUEe*v88*86062zI5z;Iy`mH)S~KgW0Sp zX|0xm6{Imip6&pb^|QkPc}`}8zz>kXNqspv1NycM`+9ooRh)T`ZguvONCX-UI{(=x z?7Vo$10@(zajd~D4sf->oWF||4N-aQ|_OmTZDfX!BwjF2NLsOq&e#-elDn zisQxYE!nSxQyUYv9B*9&ItI^x)6hjYlYtkw2&s%T zFvGs&N2+@h;Sj<*HH6cziUUMVT8V0P$+hYUr07(l@UJKgyn<<~S0JMT7H6Pn=A1G$ z9OGoNUaCMM5Zgbn$uVm*#CF;iMr^AS z-b#_AU}q-byx3DlL|k9JM@o&PM1o*#es7|q6X$^-2BwYIx6=rC)om%yBMwl@r85$A zy+MO7g7|A7)=gbqRI@Rd7z}pXdg5Xi@{L0Q>9V*Ai)g34iaw@8Pl(y(^i{fo^OWLz z`bX{bO>%1xkez~7=^M0eMjsE+eCa~P0)u^qVp}Qi%sswALVtF|ZQEh0`oi~OO!T&G zbdo3wIsauCe>)v4osYT98~uM5m(vz=aGmu<_cQS6HP3;WK7*q_-tdWs_ra(5S@0gw!Q33r$bY zJD3w8J*OOh>f~ml#PknTH-0Oioc|b`#f#E-%OrtD0l)_qxQzCljCpwVwnm0E3_@-Z zrxk|vkUMqAXzewmug^hvbA*u1ddvAqL8vGtex~H)B3ith|0i1KG__%zv@6;$OH6jf zXMa%A)6{}10wNj8mGYVM6S$RaKquhG>=#W=&is4;yO})kj;#!)rC_GKq zl^*T!(OA@8UyE5JaLE0`C%G-xQPY4Zen>A5Xk&NFaxTWfhu^d40$b;_Jr55 ziYp}{ucN;aUKKCr9}OgNFZTg2{;e2rbuUvo^urAMKhPfw#tZhF<0U|=Kccs*)RNj- zuZb5|e~BS7S8f~S7DK{Puj0YmRR({Ns*PG|bW*y}6E;W2OF)nTb5J2!OZ8$W5v#mc5ap7#HaJgGl7hnAB*|Kgb#ly!*F=%73y z(Hcyo`gdwd>5XhAGi#-PBhCVJPtrgX5tlU{$I|mtYkJmO7AX9H-DB92aqlZd&2#=Q z$edQ#7Zr@-GYCzLNVl+${R1*~I)C~>P-WelwhcSKK7l#6ZP-cn3@WsKLy-%wS=03M zKy8(!REk?n@t+(DGK0Xx6{PTFK*8$sRiq%%4545(@hD>dCcw6;G{PZl^=Sv7wjHf} zSq<5hcn3(Co=|QXR@AZf;lf4yyf5K<+Fn~}zvq-$X}?4tRi(Z74O~uJ%!MRaTez9( zg#vD-M6Kr($)83!VorPQ5YY%c0f)j7X*rX{g11XzkZjfxgGSaS230pC290e>3_53a zV$em|#Gpydi9u6aFq?&hSJi7Sy=W#wBTw)-UQ2ph>f5hV7a##+5d7X2xOoYr0(O^( zn!ZgmSKkkfmH|B{@4%$}hXO+{^>E(IaD6W*rVO!Dcs7S)nwcYQYrtnj#+;-tM4%*H zzd!N3`u+F^<6H+{GoytFgXqIs$nY}=nK=@?!|q7X7y32g{06m;L+!Q!I+&K?At*Bv zKc2fe?A(O4u}lP0Qj~dFPdyLXD7lBSUT%w?zHL@Yg`K!bbFscDD zNFzTIf?JcLNEvD583eE>FcQnG&dYn?y1k9jC^r*LQGr8L)aU{=sK|idkT`+AA)_eb zg_v{xBxOwmdl0=wnpQ~#1z4EhTQJz)kW+2W-rRhMNCPhR()KABK^A!FqI zCBTgg4Y=3?=FL&&evmEP7&_8eSB&?ZkS3r%EBynh`%oTxPL+4^q00Y|;KQfV1d8+D zp@>Ezz`^^s#YtN3cbA!|7^8rp0yb3+XBD-A^P5>)G?oc=68mSXv7DYR)>AmW^Zh8N zsG@Sn)6jIFsCkmv1}5A{Ca-P>hp(OVJIT*{9_+`$>ar=;T}AJYV^EhZ=l!1c9@n*< z*BvNzRpEq(ui%@;wgWn^bM;^wu;~1YP`-MnS1#|YU(nE;-vJ8&T+Ek_8QoA3M@@Q= z_L`Uurg&m#4kJy$zfjw0UjlQ_qMVb|4ss&_&X*#&0_e2Y9PW*M<>NoyXKKJ_e zU{P`Nx|W7=;Fa+Xzlr$G#E-tyD*QI)N{e>obkd`hmKl8bD z4h~fxhg$r z%o2(mEcFLTvypi1Wfaw|t_{3haZA*89lTLs74ob<)_k;IPl0odmo-a9=4h~FmuNKj;5i?xRP8!P6OKvT%C94EJ#Fpb<%O z53rQJaeM-WJXx8MMh2h}V=w9J_mhE}Cy#xm^$B()PzE(Wl3r_~F;fmyr#>J(p3for zYKq>LqUzZx4}PjwPp?}-vFz7VqMtV0Ku|#cCear`C+5wnKFz#dL31l@=KRUp;B1zk zCM-!FZ`(2IX^W2!&)EAfD?fkMk!2)@;YjI@4p{}R zX|THRQ0@9p8b`yLq+pAV2JIBa{rG;cdHo8WtdsGJwD}q*f>D#_aP77k@jD{5`YuN} zwY@k`J4is2AG?_n=p41 zuEE?~{PA~E=A;fN-wLDe*z%gbXm+mkFP?@pS|0+lY6(|MoFcG<88Nd#()^ih1Qf5M zqbMe3(fsAo(Utz1oGr`wS1DX9&M1<|lpNV+4Vx!dV%TP(H8o#ZlBNF{u~z+97uM=x z;2CT6vn431TU;4hD?8Fg5z5h99b4-q!wSK(=7T6{?m5K67RyxqHpwIZo$~_g4|XCe z{edjx)(v0900fA#K^cJJh*|3)l|eJ-|L#TM$v%lL^Fwm=ZFt*8M{+>au-;TI1bXOsX)o`lV!h*8%R<{lhwf#@Vx3c~)-m zp1E;9XNy}P%8MC_c@$Yoq)xo@`LH6L!De*J`+b3|wpQJ)VLu7!IdX zs;cH>WED2hFfKEa2-WC;%0IM(iygdi4*+Q2yr8gUMz;+nezok*Auy_pQlB72T+C5S z@>C!HcrC?TU}@Y)iUADGraWXT`G#^KT+bFEAhYJkAEKmN@f^heWtzO zYgmz|v1-9ZKZW<^NpT1o?1(6lx5e;Wg>t|Jlkzsc|s^pU;#YvH)E*)z}&a3!}mUT3LSvF$YV7mlYSapEnd z`ua4yaz(mJlB(P)38@H5csu1TRJ_MODrDt5(=InMELx3O!a*i!*#9ThQqT1++a>XkaO8n^@)&H$YU7Z10>A#NusROCS^ z>8%yo5PH}lhm<3u3bLBZ& zY1ZL$R4&xhs2=`a$Ia^DEzq|(J)FiCJpGNZiB_w%2ax85B;B1*E+K<_}x|OxJPyx!#IEaQmW8Buh4n zNeAUP5TsiIeH(`1W;W6 z%2Sx9a&>)&UKQ7Dg8ObYqgp@V6gKW(vt3o;@k^1YYL@0$)^$eVB5yRi8=wYTdnRgY z;L}U~D7}f0Ly?fXDMIc?NQQ$e4)(={oYbyHZ3I5Ox1zAIp(0Z6gFJSEl zmzMbawssD+5%>&NT)6J>F#(N;kLM}8yfP(lf~^-|y?d}UVuP^uEyP0W@;)3k0e@!= zTy1B6r!BxS!4AoN3k*DHY*NH!$%pV|3<6@TsvURXyM)Xp1+Fg^+TeXa(cXv?gm+)K z;`J0n~0XT&AoHRd$RVBk1>Ie$L)>=M~zIX1yEq93bG!fno9Mq`-9NiS>5 z@HOZ@zd2Y(24PLpmqzfEYe%H(54;kd@z&}Ye|v@a^t+?TPs{43L8z<6*fG!`?TCdm z?3R+<^oq7Ubb<>h%mPzc8 zipaAX+3iRNujf2Pwfz08qeVw>g|s{D(m+G&BwPch)|^VGM`l4toZJURjubzFgVJYd z>o~Cq^k^0Ba?Xu3XADk!Jp5Iee@qLHl_5id_K+0MoN*{j&7oQo8YMN`P0hcernB`8 zw6PTR+V#ntW=D_FZEm=FT``qgqVN!Bb0~~G#3`Zj@DOKLTZmU(oU=b(Gf74DFIU+wxHirGpgll!^I)2@ z=U;v~?8D@qiyiS!sa%rFCTOcT_IfhFfOrsIwzD=IS6Pz^x!sA}_RYg>`tV+Dl`+68Ib7+(OWSr4AYO9EDi=VC z5+>#*T1rkwNrP2w>ePDqKjSj+znAiV9e-#>!x=7q}3xai@%O!|1B2LD7k z_mj1Rc?Q9%^FBSh;FzS-nxApUMOzfsyi04UJqf*;gBjkAiGxGr7|FlOQsvqpFlGYx zh4J`@ppu5UymN4Seq1NSO zON@8WnxF&q6S%Jl+b~Dj6S<2`Cu=Q4U5Z*czlX_vx1-1( z@33MlXQiHefNHFAsHLLaun2sG78Sn!<&| z5HZ^&d%S8VY!A0%`Y@dwn+ZLVCWkiw^m{Da1t@V8jkFq%^U{fZ>Qi?CM8xM2b z!R7*q;?PEfZ0@6Mq71PVg$s$_kwm6sdb4HoWw{bIKf=7xX^0*pj|kQ55tekZnsp(9 zhk$41<(UuJD$>$Or;0SUv#ByAtg<(%#GcXH!ML7?$GgD_6 zT_?^#tdwHjX`5QGkI_5K?C85OgIySAw!P*mG?2C>oU(Gxwt_<0oH2(qL%5(SQX30r zgo{{^TV_2Q;E+jw1XM3-dXyRE61g%^C#>{pS0Cl@B-<4~Tn}kH#3msxkt;%`A8x?` zbX0D!>bw9&0vk53j=mXi@Po>TiDutf67`V*kK0Fp@&n?jg96-+V4JlQo8!wNjkmH1 z?(=sSrr)mvB!|;>gp?oWb$~f1)64i^b|-3gh=x`RU4>5C`73m+GuR^zEKiy;rXs>i z#U+rz+!tfzzlimVei>e1L7^|H+=^r3!%eiVA+O6YOKthU;Mz>@{r@84NIa%7Tf8C8 zb!BjEa`?`qyxES4;jgjxUfBGv+lfL7xW64m52JGB6>j=(6A5Q$(kFzn$xe z8*L2ccA3!S9xlyOI=H$*L?*$e;d&V17CLzYbgHwluEE%K2AkXktf32!$7xNVB%P7-s~|Re-=6}7 zFAEIJTA0(e^X;ZMIPm&2a5ZQmGel3l_D3sDVK&A7=5%w&X(auBI=t^i_@%tpXv_Wg zm^p*yo>!3AK%S)G?e?HKZ^gHaxXx+jAFsYe z?s9$!cw3VE0-izg3z$y&YS-Y&PWT4I$GoiT*er4VfQ|8BVAcs~#OI}ckCtX3P4y`J zuEwvdXHn63{NBcOx_eR4_c-uCV5^9D?(eU_L5sp#ZV4j8U=+_RJm7d=>a+BguzBm% zh^QD2iFh9oJ2ruPjQ!(YmJk5H#SjMmn@~the*j%kDit9W>1TIf7zb(kvGf-4tY3$+ zvQT`RM!EIs$FbC_cznD%LywCqS6?ZmjRMTfQE9*WEP4&$<82h8c_LISjtDN+HwbMp zKR3{J<7slC;2A=M2d5)9-vLX#KG#?(t$je;RaDP8S3O-dpKX8TN47kG$Z~7-=Kt|4pINZ$O{dTPwL+{t7SnZ#bp2 z44MVtQci?4?75D*`Xc+HFgji}X2jDD1vK&)5j*;X1I8~2B|XMO71-@&#iqolQ}?3F(2{}HExDiWSK^_K~RNOe^VLVyxF@0_=z9Od5W(yB=z}M9r=&upARZV3l&DB{(yZS;g6{&D0B>h@R9o89mV^FiSY3 zcyog&AL4A}#dHI#eZ~bTe9^`GdRuPZkFgxLt)Fco<1ZpJ0>1@~*m!QHQEkgBL4y8% zfac4+FASxc<-3#|D+Ow|M@)^6v6yI$3&R?e=2z%JKKbVZ$6hYD8SH8TC=b*dlIo_r9xX2_^+79 zpwJ)`JVS`^z)n7SXMS~kw}R?Ft4C;8g|w@bww6HuY2?ICYHRuyh^YSm(dfT60sYqw zN(Btcf#k*X7q_2rdu)V)+xPX>N^TCOU+ZV|ue|y%j5Hf%N;b+Z=&;nQ7&%s@`5Ud@ zB&GUppir80#BfyHQ#+ru88rgnUyQ1A>P!UJiJ|3iNDQhA|l;#F|CQVRxflS(%cu)5??`^Kn4%Prg$HdFr4#O-yyfcCVF9ye#mD0h+(fotV4!O(u_oA=#8SviMK-eI75;|1Zv8k>`TiHls%4I5u0XjOI%Ifb1furD`Y{VhAmngcuWJ}OkhN&YLR5GNcG29Jp$Cs5&_Oo+BVnZ7rd2utgY1x zorvbmz1?V@Hi7(i@%EHGjMru41y)D+&-p)7sPr4qt@YMQ?lUMu>(Ag@SO$SI5~^!8 zAu;_>m|zE3E@Em&cxS8=r&kgFM$#7vRWMgfKcVz&*m(M#K` zdIs50q9@Q!z_Aqyo*_hdFd(PimS4RktX@`NW;At32IN~cgEpDy0p7}hXlt4w85xk> zA#gDT+5|E{8RIeRL7pGL+p+z{?X3!xe&e=YZ>{9U!1T1<>d4$InFn%I(|HT;f6&YL z>2|zB0gYUR+MRD3?v|uRJcY`|%xjcej1Nn_issQejb7C4lq65VE=u}eu-UWQhVKi+ z-Xyd|vVY_pgCj0FPx$wQ06bpi=9psoU;|C2LK1{ZUTf&a)n$y(Pb5lc{)J{>a`bIC2hZ+#8DFw2+Kulj%&ykI(It@HRGEDaqc;}S zZj=T&&9obK7C3mNrtU*dS-B~@4P~uo2hEflZ>iQnwf^XXzYCid-x<9b?cj+=jP#x66*IH) z%q~42U`pxxZ6kJZ6`U(846&vlxtY_97;=<7@8DT8Im;=tw(=@8({{EDOtOiSv(7=X zGxXt`!bWWt?Wqo)ovTMWWp=`D%LdGQk?eFG!0nPoqPP1kE~hPKaM)(i^28*_apU>O z(fv|soV6TXrjM8&k6o)C$=LHd)R>ESsy)w(%Thtl{>WCDxFN?*IBsG<9pyv0Os1J6 zrS}8$z8MG3_%WwXeM6Wjdg_a4Y^50QsDfQX)`)r0%#@4px|toXJr`+9IUvEvF9$UF z2_FLSk~y|@6!cS1n&tLqbyYo^$tTF!rnaFzK3HzH^+>j=;g+}Gr5p721c-3dk_6$W(E?TJG;E>;&jr65YJ@49v9a z3X3gM4T#i|CcZk)KVHR2LIGcr)OBE-lzM{W^_?+-5TB#q7^7>vXtO$GomIP4GlAL{+ou`vg;14Oh zN#LHM^=&ye5Y4p?JR+L;;!_6s`nTz=5P)cA=&hagSL&_ujjy-rt?lw~^~hR8COGQ{ zwDtE;U1<8<)VIEbtN0*M6zu95fmGj(zD*3J@ttnE#E8I`CBUn=OnQ^^mtc_qx&R|x z`P!)k>dW+2$zuO6x5~+Fn56m!$)d#cmpG~>mFzMAGWFDN5U9tb&@^hzPE#ctt8|)R z3$ozKAF1k6E?gy>ptX+TjkCxgcd%Y(DT;Evmb{SOXtVW*VD+%m>1+BxIy-x%dCA8r z#u?eR!!fibwAPfpi?Y@aDQ`h-GQ}@Cs996?m{VrQ_K!}P9pJQ6W=Hu{_03ugsqsX) zM4OZ$LGO-ts#)gcUKWL;#+bkG9^1aj4U9p5{J`FjOms_;)#AmqXQYKxMRXCf$exy z8i@ch<@;lf7o4&ew(!~w(!#AcOw4N`m8mKd+UcsY{4>)+IvJ%iDoSVl^-j=wyZ+RA z+iSgL4@LN1e|!I;x@Jo5jICFY9iUI|Gqq$2UJ`>h^FLMF1SRIWI#29vvYE+vXEmqJ z`^S#;$faEPY1zW>OBQzQIA~GotVOBwvRdkwr57&zt|Z+|$ino}3$kYqT9j_C>nKTF zUkyT$Q{t`Af=zsfpP`BGi5-i|f!GiCGw{pe$JBrh{1yzvfBplqU~>Iz=GF%3Uw8aQ zy1LVY5K$WIamf{OB{0VEGm3=^J3pv*Kta6=wce{iy=}sJ`v&!X zKTU(GV^7<`3`+S>i^PwhpOqFML+WL9iD)?#O6CJtIMbG zU*P)O{YCV-y!GTee2dP&3vtd-8zc%Kx^%}3p&)SqeCAVH zX(T)df!%vue)ZX5^>bN0Lc2Kx9;&pp1m`zctu#PVD$T^?JKTx3WG&Ywa{hPfVMzt_ zcOZE&{l)D&3bnzCWqNDl6!&G|9>nB3OvBI=1TH6nawqYwXuiWj4(xjK9kxf?7`14= z!!}3gsP$1kO`3wlK*Dgd4O|W2ifP3p|?d@a{FCR15MQ(gl`d zqD0L^iN+~MT7tJ+^H%gkn~BMHn2)wZPpVApZF>%BnD1~Vc`@C<2>*aMnC&udKiAuG zQ+Fk9?{HpBjZX6&%43kb&Ufe?Q=`j#hvGQv^}y7^ zZgrXOFcr-f*uW_86;7D`)7a{fY@#a-q*Ohj8EO>F|tT`{;4<~yvtQf_So{ZWP5;CYkY+PL`@m{mV9 z-@(U#cbf08lSEQF$#-}heT~U?I2XfjPq}N{e1~HJ*wB23EP5R^aGm5k3=4lgn1C4ll zLB7Lv#lGJnH-ha%$2sFe}N1o9&X;*X*&88vMp=l9VLN(GGCLF6UOcley!N0S5s z=t{k{l6wl%Hb38CYYfhY<~#I9WAOtC?O?n1-0n-LqhmKG9uVd`yuP2>ealmRzQeZEZFj(vwZ>>J-~{eG-{IxU@+&r( ziZ|!a{2<@qLLsU74m?grk`W4xaT)M>%EIJ>8AH`GHeMrnvRd205tWM}p)D zPBYe9D|Ya#%k~+3G%E?~w=KY87?ba?$U(LF4y!K-t2dan_znlpuFt=5%IqRNn$7GT z^u{hTr#h&zIH5Q7PBV7F+0VhVtIm#2nO%Cm#FUE3cUS}G%68lu#~qwzY`()X2hZj^ z%yr7Ft-JxvMDiVOaggi`op*8As8}HM?E(kS&efBgGCN@hv4OmNhrMKfB*#{RFT&)H z$$_R1@%tRdapLvdb@}9jt=T=T~Kd?)_W|d_pMw> zds_tc-j~p;%jcaJ3ZF*>_3jSqy$x*T^MQhTzt(!&2K6op>)k6$@}{rtjU{mvpXl={ z7Vara;>y8T5>EiQtMie8!D)q_kH|B@@CslaaHL@0rxAgDgIN%JJQq1ic|3wuW{*P5 z!^g;hiM(j}8pV!n@4+r$w?F2#Z`N7u#Ty~Vt%Z4GRxCK@04Ke#z3<-Uld`8T%L2BXjOME(k{(ipu?vApk zQIz9hHH?b=GfYoM(#SrFtQMj00ADn@(QPnvMv-tzPX>~KF|wQ$5{$t~Wf@dDGH@J>ez zpM8T%@GhvSGmr>ci??o1k=>9tk$>vsOG!xOnuVuRKyC)|YRC`%B6DPreMcldYQ$QJ z>x-D*Y(5;6894*m*I?}EuT_t6i|jU;8L+`5g!_B-eijnHYEfmD*&bd1DMMJJx1NL%}jye-Mlm@f*-;~4VTOaD$Zf2ZKDzW8WiOZU{bD^kS}D6*9q@d+w~2=e_s za7Hp=DXOIrl>rZ4|88ItvVx}y?dHpGkQ$o8N0?D^8v_ysI#QqzSV+aGyLV7`sj0gO zcImAT(SDd-`NpIg0((#x)iY9=tH2pQ>b1l#l0Kj;eHhAAp7cYQ_$pn~uS$`#1(YXw zoiuku`U6?wa{eP^H;@77Q$mgaOi$`;UA|0nB>F0gBX_Lms|@NrQ03NXGX9>Z5Q%zy z_umZ$NwF8OzkH*rVe@G!e;PT$UNwG6$Wy{{HMGx~B8;Bm?Vnowgjh$IfAN9E3ZT5%`s}m`!)kToTC~I%f+=km-J;RH%$CSs?#u{eSE2yi)*G_C4wttCF@(_ z7l}8)X2Y>84!IZxGBF|_A>>HM7mtamE?m8o>MIO`-w{!vFRebs0TfGa0$7fIf&i)G=WC}cnx zSE0RtR6aPJm&hAr6sc~iUo`1xp^2hjvZ*wP;KPYVG{sA`0Zv8?1pkXqCWMp1~C3aUu1zn=ej=n_ecUr&Q7f0!$|_pD#~+vUci|_}bv#F~rE8deV8VODFr$ z+kjby-#+*qh9BQkJ08Eu`27Yyf2Y$ZKbpO6tsBGV@%uXk%%upB0I z37*`Qmrv51>iVbZ=iJLzl5uZdIaSnppQ&ss+!DP<4~xQQ%*;D6N6K8IPRnLtHEm1y zZo4OTqH)60@ahg_p~&;spf5~7{P$R*!XN_vj^i%PA&E>$?KHcAep9Z*(byQRMPEC4 zk2q5L6oPOtS*+Vie;NE@^Lo3wF`(!^9U%I^Mc?=WaPUe|o5>gJRa^@_bi9g*ax3qIyEW^06l^nZht0O?rnVPdv#Ye_ zRpGo14i!Fk!)It~_T@aJoS(p~ZhP0@6i0A2vp8wNF+O4^ZAIVo_4T-5Rs`M}8?4Kg zvC*3W4kT6%ifRM+`K!XWXpY3v>a-m`JL5{R(d0wMN|AHlk>X&v?efif)~3k#m%Mc? z6faDt?&5udSe*jb5|$5+fN_=|mxY&h8K#B{tSIkVS*uvYzCZ}F8ov*Hg+UF!He<9f zPbV{#aZwc`;r=j7frKG*;}3IdS{;*SJ|A=W9`N9UHm$=HPnMN!{A$U?}9k#7(WRu5}&j5?+?HAA!4A=bu{Fv2)`3 zdvP5Jl*Yer>;(|G7N~zWe|g>6Z-*{mtaC^w@O53#e#^iHNEhi_*1U>~IFF$JyN$-u zF-gD})uLzdVh2vMN4HgQPl8VrF!VX7y>uG|`zHbX3xY}Ob>1+zu63$Lq6V$7`uA{-XiZtt77LqNN8Nj{2*6 zTi7Z%?{RV`909h%X={no7T3`fL_1eJS#UEql^IRbK9{3)Ck&dtm=-oHnRsgKlLEm* zMM2E=3=&Rb>%m3cM8r;DHAWZG*wVt!)7|@Xz-;?@Km_EUfnfz+iwtRon*)wza;|O* zZ=%`7@|X&qhss|O$|5=u^-QK>^JEkuh{MEvo7$UMOLf-$)d;VNv%}oMi@~Z0F9zMg z7E>Z`x}J}QTR8)6ui2G(Rb_nPBVlj(YoUQl@T@C3emA~8#SQYaoK@lqEceeCg(L5U zsdRICWG(tW!_r_|jM3CBLYtzbQ$fguf|KK=NLI4b5I|xaXStjZ*7?QM7;>!|vm2IogqCAmgJW%VuR(M#jMh|<^C)Y_32UV(K@xSVCX(DD zXTPw*hZuM#)g`wT+@$IH+*4~Q#>qS6Wfb{WOBmBip^WmReRFC)!kYD3^HHtYz?#D& zHD$ic6~8+|?1M;=V5LA`C2~YwCoeR9y9S{x9jSDj0fE1xt0i|cqQq3#w>Yj*sckQ{ zAhr5&9BtLw*~b=0_iHhdlx~ATswa|H-4LyMjy63pD8)M@P(-PX!t}-<56|P^cA?xa zn6R1b+-zQOQW|Boe0Z>bY0>uG;dm6>0g8;T1*}5RHZ^Yw-vfn zJN1hqoYQf&Fhpi!$7g))ypgFHFL;5Lqr1Y<`6F2)q;RpJz$iF*SF9}8z%;-8gnFX* zW27E~B!^)jSe)|@L)mkjblQuYzYhxX&aZYrkv)GwPjmjJB&5N(Q6q5atT_Mc%0aE5 z9iZE!c3=kxxwDmH5%ye&~4btaky;sB5OfEDcaDL<5TfCAeEf|78P`; zJm;SHZ&!|8Brp@Ra%{)34p)vdXjjnY?RG&y%xETtlPkx!#~4(=|IE&qmE#Z6v63;D z*p=gPxssLR4bYJ}6InUVLygGFF*+zfJM=ot%JIvi(M-Y0QMbArZpTt)0zz$qc1p=O+Y<2AybCmM>8VW#ODtOPNxFcAC~Lqy?>^~uAE;CRJjAZg?ZmxYoz62VuD z?Fx~poEY}2ANz$awZwJlwWDIXWY0B&9!YKUX?nwrY;5Yfs*PqPPK0Al^E7poUW|Z` z>5`sK$Q4kL6&&Dhbb^9Sg_eB}JwaJJHX0pRY1w65%iK8%pl}ygE`m0cwqr;psFiG= zFDnb0xRQ&gZG!xw>~xfcbV`F>@&yb4{~UgSvs)|^;Y*N^l*kl*0aMdy?0!n5?u1B% zs6Zv)i0`U#nF|lDi{&;N9F5Eb8Z)noHm*a@xol)F7(e@-A}DCsU-b1Gm@Ow7P6C#C9i~ zVc?v<6^+BtWJ8zhw;mToz(IEOu7w zqmHm;c>bH5n6>9K;i}}3bM0!~eFCp!wcZ_#MpkQ3#M^sO!>-oNEO;;|z-s*g+BU28 z%)`)3-QsbMO?UOuh^0ULFKHxyu4-JHCl|6z`1I!?KJ`M|jRX$FEXJ^4LL64+Qt5mo z>CCw!*>E^0q%n%&NZ!Pzx){l^h86Vv=oCT=QP=Jx#26fCxzETO& z>mAACF&6F^zzUVo>gu;_)01#4!?QOImdv4n=tv%ZDe?9DmtJy>gZs_!0$kF@p^x(+ zM+U2u^qdgg{jw$|b$cEYf9V1<8o#=z3(RQ8PR+wapWHK<;M$!H(4_|;eP=}ySqR5G zvIIN@$KQdAYy~bS>58)(oT&h3eeLQDQ`+$Cf_eq#`AYj`tiAz`OWXFtq4#^NI00@a z^sZ8RW`Od$gQ3j%Q%6Jb(oBl$rmk~7-U(nPjYAfCaUiH8D2!?Qxruf!h$yM|c~8;4Y^EKj)?w&3gsZx%qu%q*~T9a9Q>FG+?I5MM2`Oh`)kCVGanPQA6A1nw$q6n+xC2V36kcbeTMzC;TsD*F?46BE^q2;lTvRe7S!r>_V3^|B(t#*Mb#MM_hWU(#< z3!$usKw#i+QnQ>ynmP6u1uRMc5OVZ+I|%99Z=*BK%+$J>lbM+!O9`J#?o8FQqgAWr z7V_3N>_YAmQkYCJV9_oHeKCU4&Ojm$P5PH@VX4`Y$xOf!oUMV=)*W{^;a)t%Mu37D z$=M?(-+h6?MX=qpcrzARo87qZ*Y_@$VzIF{<${osdv93PvF6uofZi z;>>_D(N(*Cbb4OD1S=yx6LLPF!j|Ry{k2+_xU{Rlm7K$F(qPGp zqwO|m`;&uh(21mJn7QykT&I}?&|t>wb6AYFBb*b>S6Q%;7Dzi-K!O5ktnpA1S?RYy z!OULi-u+ONzgH@Y$lmz#SD})TbVQ+|qgaDJ$71O$bDiBQhj6MzZL`{Us3tldea>u- zE+ZUhwJ}D3e>?;okZaB(=NTW}DdWY%60XAx7H9kciogUD?l&@(+A{Obq#p!mke#q8 zbQ>XLC%oP7-zC8lJ)eAy!S@c?21OdvGlUNkIa8_7Y|bB|ZORa=IT$VEohbDK+@2^2 z(sD&&-ER8=Kh6j5TvA(x4mBk;1cS*e3ZXodl;foJDLoOyprg`CQMksA-O9xdX3uo$ zS3^w&61Gp|JxD69{GP)C9F^Y+$jm+w_2;ides7`3A4+3kX#Y+6A2hWzU^?etBa<@v zMBXgGBl0_0ktn}K0o?IL7*Lepn3EI5SCyGkIo#@M8o4T|2kj4L>-R; z3Kpo%L8Uo$P;zNOvSAxxo;Csk0tr~H-j z#W2NY^a}<6)wVn!ut3949A2#pNEL>17R29#HGd|Sy#_FaxM~vSLu^DD6Ecg zIqmctTpZG45iCuD4!%-PDWRRfJPpzLISVX8X4DJ(!E;Wss8pi|3?I&BQ7<)m6kHeU|ez zb75BP-&nMOMJA)5pEx>goB&eic_7T?*^HU_)`wjI1pF#tB;*_eDg}d~Wo1rT8O!i; z->tw%Z(j3*;cYtzCRiFuH-PER@b&Sar4%baNc z_0wD|`9ocxf@bP@D-zl{+KtP-{A%!PFuyh6 z#a{n^`R|Yam-TZXbmjm5K~JHF|0jMsAvOJhpZMDY4_4SZvvGY?BK$p%Yik(1zQ=#& z*r(Pj(8sxW5WA@LB3xN4n2(WzU_Lq~C2smBpmiN%rf$PWDyB14v#w+B#PnBLXC7hx zn7WQ_6W2e6>xhNv3k<%MMl1~1N3k$?Z~rs_5E%XO?Ak3`mUr*Mc>Pfx{6}-Y4Xi5M zXWN_kJENQyv1TCh33o$9)6Mx~4B%7(Hgy1d8^B=%&950M=CiFA{J?2q5z9C`%`oVr!F5E~}fmbY1u~P=7mk zUft+yo_V5AV*Q?lV6-4G8a%C%){khnM*G*k^ z?X}xxs+XC*m_5(Wpg`CvK%UFi^~5tx2T9XC`ef7aXT-ly#8ZI?P+iNgKDBwEO49fW z5)?i`<7A=Hr%y{B;xm6AykBq<$jllMZ zz%Glx5)s$~5!lz^%7aHG-;TiEioiDe+?C675!hi7*xeD>qlrITq_LWiT2~p>D2zAht=hFdw=4 zJ#oeTa>|p!R9e5lmaAWi#{`**4h56V?Z~E` zxq7})ut^%+-!z!39}+NeaL5D^!9+9L%GIyH9|(d>NJ*xVC2>qF*|Cs`hrquw@glBr z^_4+`N0X zxtpbTf7K>u>)n&4$tE1Q44et;+%&Q(UFKaDndNI{b|M@VyRhg(Fi@6N96Y#ZFr zI^~OX>l#`wlm9Q2|HsS!?Pv$39a}tn1jTre|G8dCk6fDJX$e3??o${tqfPpr#I~5}S-N;-B4i zLIM6Lz*;G~0?2`c{F4xG)7kIA54&_nURT`pHf*4GND@n#Uyg7YDF1p$oxe|AN3Sc& z+qNm7^VRlnIv5;_GWrgSr?MFKzjtI^R2#3nKMS%1#soEJ}6yYxhrS*{hYE*1huRO2iGYB~tqack#*e9Ac#!DL;NgK(U(P$%a z)4zeo7Wc$|i5oxRonMXz^%K{>V<<$#UjkBXf9{N@PcU8D_y&QfD4J0$tYX~YDg}Ja zN4d6kMWI;#Kw5m&0Oj|6#NWDF))$rERiqKfZ?N=c=(Uhv`P4)!m<2Fd)4z4|xXuh= z6HgVeyAz73VlJy&N;5;RJ)VRQsO#9HrUYs_2~#GoudB92W#Jlve-AgNgGa@v$XtNi zjxt?5GSbDFX5=HnpFw;pl9M9%6AV7**12J;Wd-~lK^ku~wDoLg>)y~-9I(pr|A)CR zfv>7K+YhTqRZ@zY&niZ$h&$qjiWre-L{LfvsYRvMDpf?Zptyjn%Jp(BwV-I#MoKAC z7m7<$M7#oWQx_U3RjLTlA|4FYlu}G7%Kv$unK|1%Hwm`C|M&6JC-=;m<(+rlZRX6G zgZ0uH3{R0a77zMz{Dn!#);1lc$-HnRrerJF!n5!rw4iuIw#3YZwbf)OpWm7jx%{lt zm6cm9{G>aWl z2vo&9ed1v}t0UVsqa*KQ6~pTk?#LKS$-y1%?io1Rc49O-Q9HJM z746)Xdt+puBwBb%7L-Fyh(n>hD}VGRVyPrdc-wr!{{++}>LIWaa5F zEwOt84-?P0W4@RIUgoZIWnctWtle|ie5yR~8vkos>m~Y)^4(#1FrY}s32fLn*MN<4 z=&pIrTZ+F8+D!NPx{Ay`d?<^I+}o{ibus$j>e-Ia)o(jYbGodQN5Ih5qFP)`@!FB_ z&#_d6PPB_{pqaF_0llb5nWqwXU;nj=)bl0|npTW(C{;6kT5ELtRx$?}FveDOUMr$}RK(Sc*QFCP~H*_$;GFCrs(HTSUNF$CgvC-8zys5%bM=TvYD)g0`c%Rl9n=UCc?~= zPqgJvM(pTnMe(0wl>*{WiD$YCu*adYB6vl+y>bqiSdqptn`ypAg9o>Up54z^fDyZ& zFB7*QERa%GG-V|uR`ZvN)ND>!0$z2;mH&8ln#@3Ojs+{Y6)FKr7J-r~P_fAHZX~1RL%T=)&0>{zH0sNim^eTi2 zjf2-bThiv_CwlFe%x3p1QpNbjGk&CW@@9!@oo(6}h+Aw1Pe;MM%dvq%Pi%u-7T^}P zn(;xZ(MbFr9PAaxUANzXxu9G|1ip=6(QPGicFcaAn7V(II~&El4P~F-cSCjSQe)R* z3vFsZ^>nh!>@g^Zk;W6+Hr^=85);!yp%$>`;6-~d4Nt@|A}EG4jiJ+KC)HYB4iZag z{PDDYOaIh|NZkD=JxArk?+68xwhpDhr(Rm1$=LIi_(NTPgqP`QN}ZA|WwlR$BD*rn zmB};~XqN0WufWduqrAWkAHWNAMu-(F`6`X2otLM~EZlxx1=S8Y03ndhiYQ+-?PD~H zC}SGuryA&tnW|i+4cIIZ4d*GU@TGP^sp?rX%f4N0@?+a8|r!w*uG*Ic-4>W15Fmn#Av|p==As4Tx(>Ya1Y1TAa!7J_;EP zk`uZT>Im*L1w>P!ws4`u)d3Gf9{z;pPOeW8*%%D*rN~Oo4CP#4$I2EuBdsl`z1zbDRb&U#=5r*%c0)k{9|OR3T6o$WC}Pq0)Mvr(s($l+8QR0 zm2uc{PEB!`F^59YKjPH)NW+9*zAh$AMUr<4B`@umP{G1?e)>7NrP@4s{)u9Hzi-I^< z!(XqdJ49O>efc?^jhJmt6WhUPRb!EbW?hRcu^mbNPCa@?g@(o01wMvv(>B;cgYlPp zt)+nr8334kkXTy=UR9^2}ljarKNClh?|TjAEOdz4to@rflL&K zrRczFuy;`Jh2yPrT)UV$6xZ@Q;Vs4-(5vNG&WS*&(T3L{wc5kvr=*x-4nRche}>Tu zYKu_w2r{Z+OWhoE4eG#zU>9YFNDak`0vrLEfoK-QDB2)Vj!)WxHyG~1Mh4+Md+G88 zzGV!_;BnQE!JCed$vFkTvC#A+)|0&mvV77un zP9=@4QAuF+sN4(xfaY#B&8^C*xwF{ZP}iKbKJ7U?2n4oZGbsf^wA%)cRiuqGZA^p3 z;98Y!umikHw85L$;CR#EVAJ3me?fyEn+eqdH^KTo`0Y;iWnu}1dZz&7m4YFu3Au!IEkI?V z;FvjIyL{PeYJ8*jM4M1@&eO;SHMU}n={7sMIZpIC%HRHfshLlS{Im_VCH~#n-?Skd z%8Rq3*FuDPwfgb?y;^kO%UDIdT6UOv2mWq(QL<%vYe&4YeMo@pqnSy5r>p4DwafcK zj_RfRk@~?8qGO}g>r;Ns1tQ$JkUC*g@#6lQw!2G6n@h%S2jwbPT?ewRber~mUkB=! zM*Vul5jGmidC$T8B2*uVn$EVozl%YZ>9nkYyCaTtg_rbi;+S@Ga|t>RT4g=Igy(ZP za(0)gs{(Ii1eLF%GWvwP1>?U3wE1aN(Db8rOpGiIg2NXTeLJCz)Vb}pe9CqmtvuV; z3_u2p>KVRUqTH+ZQXFBbVyYO?cYlh1-@}XLT8$tc&NxM5A`Mt!LQx~nIqyD@sG0HL z@M|hhBDO_il^DD%Lan{H8irB3i$MXCF=SXdL>f*kYU$E)Ud9y5GVdhwTWx+%ZMNy$ z)ye4?{SwK~pw2DNqRUcS8*Jh%Eflw!>nl(vR)Z$5LlLXIhqbW!Zr2rZ-rhk$BRCtr zW=fqLl&ULoRsvngd2fSj&Ps^(S3?Qvz{9qVdPZ-lS{C{>>cG%w04A-hMF({BLu9wH z_3aW0xFIJw_LZ3Tw0wa{Gd-0C^&9Aoxx^e2*3Wt=?kGk$H@*t{$`>IP!2dMpDzXc) zExcv5Ny>TK%ykV$4*zp@s%+=L#ZS$S<$2sFne+b1Vb^V(gDDXJ9Rn6239r&g1`?OeJn z3yL#m9kvEeaSewo?LzEQa`HBIzR+B{J+#!s#d|oHo(3Nmn@g`V&+pw_`cH}~IL|cG zVU5JoUt*tdvnJEMKw08s`ro(_ANT)cGW{Y(1wCnEGW~l5hhI8p%c`(|r_(=rv%yMzDvI>Br&Gnx0I*FCPysH<5Q805fu&z`IT5Ca+B%ry(A&;g(UB9h>v4+4-M)*8+8|$O!u(4 zqLb+^(sbGSm(b(n$@J&)?r0Vc5`7uX%cdvO*TeBPJ(>QwtsC{uf`JV<$as6sYB0f0 zriUyQ6HY^t=TY*~PSYz$)aeLLLhQSfCGBMTU{msoH&OEG{E~y!o$`s{$@FL7WBz3N zG~{glWco@t#AZ*XKL&AbGClG|^>hH~{gUJ3tVquLF@vF0crty?&XB%ECexSlj-5=G z<9Fke>EFSLg4%3sGQAH9Ha3~w`Y$wMCetV3XM8fP_t?zaS9@UZZvgj0V|np1@W$Hv zfmm0By+82{@a99tWWE%XQVLQELd*`PytUJVjC{d`yI5X6u$7{=_{XyD>%(z-zcR@9 zQY2#`dw(Nm`gZa3dhFPQkoQND_XT4$U&v*DM+9|WjJgZh`#v^T)ZWVrnCZxy=y9^W z-^&#>_MWR`&9L`(m`TrYAm~cLlyaxI5 zh`ql6!Bogb%wS1t?~gSl_hrdt`6Yj-?vzgq+xy+%W4^sVA32+E?{7qu)NFhIITmxA zy}$E$_4INidHa#xz}`>cHiZgK3QB43AL1%hq4@r2BVT)N z?|+3@qH%j)t~oQ!T`0a^h<5;*XYYrBvP66TP3iN0&)&b+NJzW)oHe1g4it9f} z$@cz0SJc@1naJ1-d!I(o0uDA|?_XqP#@;`N*K7liNqb+l989qG{+2~z!lg*^+EMa+ zr>FS-y9lO2HsTSMwD!K2DR~G>u2vM_*r$?X)t&N*VSC>Jp-8^HzZ5x}Z}0Cyl+joSO~W5Lm}BKolGR^GAp{)hP8xV?V|kB<}V z{jn(6n7!YJjTn3XoxlCJ?0p7O92(0T7lSu8z90Rxc=K&6>v$~{hPbgTrM-WG>w1Ok z{TW8S_T1h-k65B{d%w3Em$1Fxw6(eRek3SMwD-qIpZ|OIz79(&=t&dyehZv@g1tY0 zk24r-gyZ`U>O%4ti|_x*doDM2HsSKC*!w<)=qBv_%@`ya61!b>Pd7)r1<%^Fz2Db1 z0#VyuAGTI;d%uZGS;nlrAIVtA-v0z^IL_Xue#WQ$X60vL4$|INV3OdOjE}IZfRupBT3HhawcoxA)f~XY=j- zPq-A)+|3aOl3r`?A9+GO9gk%l?|AbJ%|wm(QW1P;)ZX9Zk$=YMMeY4PykqVCSp06> z-hYhMm;`&@3k4gq_Xo2PWAA_P@qf$SKME-hjpbcWf;ZOQPh240d>_j?UPpx?5qtl8 z@VubC?`Py|&+YxIh$R}g_wUQk&=iK^`wura*WTX=$`bAUnbPO~p1uD!;+UrG{lDPE z6YPCggamo^{_h_l(aB%T-nRh*LiWBMS-*43VW#9+EcvM%w6hT^Ia}R{+WQkQnECepR^)8H zz5fN5LYiyuk0ia;-aq+E^)!QJ9j`a(byfs#`oM=q?fs+=16D-s{e!$??fo?TZrt8~ zj@6h1d*2@g8?*PvvJqqNfBeCJ%icc)DGrV0Pv(O+*51#YE8g6MWgV}J!Vou>rHt?Y z0G=1L_m>&@+H-sVXT%bX+xrvTxPp3$(S)#qaQ2PAev-e*!J!vAo-y7s4 z*!xrUtR@!Ux4`BIr;73Qoc(z(i0_MV`Bm)wRS3So{wD1G{pi|%VDJA9&)T%TKh8D+ zQR@Wn6A_4{9;o$V^xjd+74t-T*Mg)-`?MYoXxlQ z&u}TEx%U1v(rfMg(nr|LS+8(m zdlX;t;_ty;uxmJ|!EB8~c5Q;WwHc-TcZSdiY?8KM75bLEeS664+YZjeO^wZ>9N&?Z z%6$$|h2OXkX<7Q22jOS1F_`~BFcFJ_Tu(%D6|yPcdkR9qWmRE2tX zX;5)*RE&-e3g7N&Z_|>v{_8Q0wtaLo1LCu)y~}Nk#}wS&vYewIYH+j4Kp=A7#*N|r z(g^&O)4RP5)sH_cswX4KJIPUqBQ(}K5yIH!KX^Z1xZbn3L&Eho-H-86IYc7i$`~24 zGP{$gD=xRJhzVCJXmBzb43vq&#Z@CGTzw7IN092b$#iLFf^gl-LRPpsm_qeflkpxm zg=7&96VV8cV91Q6+WoexG9q0??;zPq*Qb7#sB{&Sl^dZgVOcT0jIF}tNLHr!Rfc6H z%~UHZxA{5pWo3Z)4esOIWLWxucM(}RGRRdL$yG>J)?k&!$;#>nBrDG#$s4XfBd~+3 zxq4)RgXdu`Svj6mTUpuqGg18}R&Bfq9O^=Lr3VXHS^1qQG>3&Q zFom*Y?KkBrIX+HSrmS&QM(oN0CR|Y=S5n1_TkgGb9tB|bRj+GrJE4SP)u3w5Iubo6a7~WfgiZ4gS zaap<4-VVviP`X1SD;FU43k%*+F1L}DxwxGtD{X=Xzl6CB`b$}9Nvf@^WPd8EAIFl9 zH%LQWz^=4qAuB6sQ)na$9byVeR(?s(mkRr!Ni~-Cs9m{}$yQdb^RqNlR_YLIgniK8 z=?&DX^FjamqiZ!RD|?wnB`g2*bL7j)AGoAsEXJZghj|x~m0t$A9*N{CBr6wT<;clO zznS9tF-Y>(D_jU&*qo@OB{D<_#koml8qQz%Ox z^lf@RX?U%TS5A1tRT+_$!p8`KUo{l$k77{HXqv#7s^Z)mc7Uq<(YWrf+<;2SvwdHNB%7vU*e zZ`=fY1m*|>b0#PX@u!6R`L}rHhO& zSWC{lflHkqBqhzlzO%cf`EQ<@+S%`J4# zoSP^Ue3U(#2{z0a_O!9i#xy@-CJ{2t_mTr{EbO>dU_sVDV}p!E&atp1vY%jb&fAY; z$f_gXZd?NkV9ks_=vumiAyTJhjAli0nQ`N>alye92Y@py;PX97L-L0s9}k!w5x+$7 zFb7iI3}xjz(^fQofJ?sSZBNa(1ecN&yw98SrlNXdj9?YikE@wIB071P5=mq0c~vMUM+2TTGGsrXLk$m^X)u5E zcfi60{a{rg;i7;=Bq}?IOD==uRTnZ4CesBo&cjjR97yX-5QD!tZwE5;+H1@x zp3*P{g?hCab55_eWAAYH=i@$umTB2>du^-eaCEkAe-86opG>K3QL*=OCN1CAVQ3cl zXX4BBMO)zT*i%*h15;S#{0u8X8G0eZwhqNCU`o%&O%vDr5i3WbLj^{eNKVzVRQ`zq zmvKokQ(lSZAz3_YSj}}WbnrOV!(^N&aC{5=#;f6HEq7_~S*BQ)c~3CE^+NvMYOu{4 zAGJjhXmXn_oB2y-@p9A|`LyK@NJ`}W{*OWls&0v7YNJ<-qW1m%TozQgPg~lz`b(n& zZlbY$*x!&hTgyT9Ho#VV?=&qAY3k5gH{-2e+l>OQ!o_afRFLN$liv$ z2sFP2PEdiYn6Zv}PMZM#jem`L$1&(hl14=g;Iq)^Km|gIVz@C2?f7+&Um(|>GQ(HM)i@zVe5yup z)?7Z71$~Sg&C-~J$luIiOO(=xbyy8CZ-kL2$!NJKgZ28H?1)=oPTtAsZ$2lTaiZPS z0aARxDM^k}&8sQn8;bC_EaEpoJEjW!J|jk}gv!T}O!Jf0GX2NML>mfOM-|@3B#Rd!l^D@P4+yU`BN3cL}*{@7ERZ736(qSSLrJd+xIigHvOpd;HFMpV5S+ z+dTXM>|ln6wZf&QTB6_Z))_GT6Q08eIM=C9qn@2(|9jpPHVc1zg7i5ei6y}XAvW3_;8f?*`B;>>wOLkwALje z!{kbdQxSYW5fKGNwX6i^ZSl}kh_JrB$h1-j#Mp1y4BaRl{9YpObPMI~R@cdq#x53tOPbbDhgrEyVfIVD@cB6rbZa;Pi; zd%Nq{_anDJE~4L$tfS(9)Nbxe;r=M3#%>ZTGD9mMR-4$&LKMeo_{P|t6Y8Y11p_gB zRVY=J=9dM=`e$nCo00Ef*=fm-4;J?p-7fCEgCwsH9C@yMR}uc<%s~i;{=$u!zpeQ< z)8=h1hNrMCBg3s39BK+g&Rg;dZu5vcd;OTXuEljdgWV2OUtk5eO5@X6>+z$C#ePpI zc7&cVf#=>CqEEl8#Qx3*py8(H7q%KoLI6R zN!}_m5B1E%)idh$;O{}4rRD-Q!GOnJAIIy{%Nx)nH{{JWvL#8phQ*+?+KS{s1MtyQ z|08Q%aYwD-8>X$5t0;Us(nUkJS{TDGG(@TUR~2lv`$B5{J=6+(Ar*8K)pg((Qd@5s z2+^scbM$RYDaHfF#Lb`?iTRVieIXUsRCJh-g?mAsmM)w@2^VVQg}r&Rqz&l1^KNXb z`6VYW36(SraUu@6!Flemlk7hz!!^#B9^Bwu0C$V&PWy^fyY!%T=9EZ8$YrHuMW_?V zW}OjD+qjC<>k!QTsce5r<@iP5N)=9tuEa-{7hs@gLQ3bLy-F0r^*e|xy;n4`umbF# z+@)Ld&8=FqGBIE#){RjbSv46RUyIYkacoxTkoCVR&Zh~}njV>sEmbSWSx-R{dxETW z@yOtwmnetSJlw)JzIl1n3VLw122r{n@;HV^H&*lhc_x}t-ZP>_kI^NTqRio9AYIW! zYk7NoSQ2GqT~+qWrD*5$a_{Dju4R{U%YH6pEArG)rag3|r}HD|NU<+BryqzWkq*vZUX7|y-CzvccnsOtb&;Vuz*G(i!7=S=oUD+>-$^S; zWZ>7!G*}!JtZ&73Kwd8jD9Yfrytx>Q-`oMoz~HM&gl-&YrWEsK`MB1?Kc%InIens{eJ)A7!B%U{TunHY-6|kJnT) zEUi6Yk3uC9d&M|EuU9YTwOW91@!)LNaAc~Pc`h((&Q6kP<}h0HMr!<<=MDdS(_ide z;zyfu3L)P<0*qV$HLJwf(`+rk*?#M$hCa^lNB9*hy$iG)K{-b@#0(NY*+{$-MLV5B zV3mP}Xdy_nTufTbv4$w(PdQ(sO<^RbN7PaY=yT4ikRX!Z)%ZTgt57paLbjp>Co3RR zT74t^Z?4?qU2gy+5wv6yD$HTYM?pRnha)OR&(@dmeX z8V6FnyU;Qo0xR~h6wg%!;MM?GE_P1rsX^E*;?je`@>$Dk|`JH`ZIT+(YW8j|yF!MN(Ev2axCdQOUjaok(iZ&DH?dp7_S8u`&g?eS0 zu|Di3^a$@xL}o;WJCY1En)9B4u()SldHyjHpWg^FgPeu9{3ygU>?;k$^}eg~--`%N zORvT#WMTQM5L_+lpMsuS({eE)B=b;e5lKCd0h2}oIdNvLjJ>{sg*QmFhJ;fP-0)Zy z^whM8)+vix(UR1?wNhQ!f?+e?Qeq54c|Z(j!`I)Sy1FZk`DJO1?r^qYmcVLlQU_WU zXnfsCr0i=PP?>DM%&{nA(o-wEzpEqbnDyxe$m-4umoN4s7^jmFPMh^KKPo|+^{nO_ z;sr&p!BTYO6QT&0czfjO=$If^Y(2=zRe{={k*5mRzJg?{F`Q)iAJ%?(UhTJrYJcyk z|BUuFd9@!Js(pM=d%kfp2mM19umFmWDD>h0lb!AT*#quruMhNAa^=bIGLnEbbTdQv zv%2oC?CLBSCmBW=dRCXNpwz#(b;?sUR{u~Wr{x<<6yTaWf?_=F%Dja#4rb&PuWUmFYvFfvT73-Qk@If zkRDOW(iF@%&#sP97LO*|{~DAB-n`V0PNs~nEz*03wX{!XO1lgLjq`gQYkCki-EE`0 z3P);<36Xy+qjI zTPAUWMxu<2zc}}RQd{90x`9d@pfvS&Qe{-!6c3A8iWQpR*5l|@h+C_18E|VYW;Bg+ z>l4tC%#;4`1Ic$5`DMa;2@yvj-ZQISS+e^b2qOdFO!-C|z3lrdiIDETNPi9a)?IAo zf~Vc+?cxkfDLHSI33X6y&f9==ZA(PtrAdXVxEWQLuIutfT;kh#2pRjQHnUWfBo@m} zsXp!MPA2nh)z`CX^ZIe?U+^bws2aM51eiOYJcgg~-L{l=_YAw$SCH-95YEtOwF8fX z(b@o+YJ9Zzf&M3t$=$vL$8EwI_z_zsFXHIt8wjoR1v*$R8=zUsDoQ$qIinYMYspzY z5U`V)FTiyY%_n?z)yagmE{;U;WRmX*2y@G0w#;sfPhiC&)lGaH&AEHd_Fx4B|3G9o zg68jHriT_0@zdy3_)CtOEr#~Megmuw?SW+--sfiA>>lm!K8pE6XpeRdckLe7=N?Ir z8rMBHYXS$)KoyaGMCO40E{xa~y8;{G{sN=u^SFC>Oi=)Q;S4CUbMBF#0C{NXG6P5p z*b{ZYHgRc6tG4(J0hltrrpP`BM-PVh^J8cZB;_5i2UDipP}9Qf=KCY1#!Q`Rj3!zW zFQfQl7!gnDm^!_{`$p}4{Btpo3;kA{O4T8!b$e+6L&g0c(YH z-*{YBT=yP^In0y@TjO(P>Y8}3f8kXnjK->$yMtlg-WWXhAs%Z)U`$GI3yZ^LrS@+({RN#% zXtxW{GPe?CLc6^i<=%T%rGnk+zqc--AonP5$vm10_nUl2YhP){y>o^*FWw!B0bRDM zHg+e&ZZvQK^xL}51<;fJnHx63(P#ZPSpEWKfmiFF`lNqq2VYv58S>+kQKGIJ4XSye zKcM0n)gSjDeok50UGKM?b47wYQ!0AWV~03OZ4P;2XJe1?S3{&BZ600f zZ+e1SwWKy-h+AL`%}*S7ELY)cmGc#>-?@;8dYZ>4h_~1QEfhQm+ZD(`Y0S<*zH(ky zSY8-pM}pRq%!8t28kb>!Pak95vh#9m>F5P3+{ z>EXhX-bbAe^@7%3b)Bjh3s%}*_b}I7RfgsE*S4;Wa4)a~X2!(n3Akpz<`n%}<5}~= z{Rv8v57Q?OMM%RVbnQ#{U)SRw`>0fxg=a};wr`LewUo-71CvTWYXP$Zafe8S75-87|1a{6i1PA2Ag&E(OL za~lo>oO2~E3~(mt1{}l2^-Ku83os^aog<}*Y?YV^%QFXS#S^hrVmc0r($@e}<}11B z*}6)bPv@F#6VEX&b)Pv;51xodP)rZ0A2PSHCVJuXcRteBtqJB<4Q??gS_C^*h1*$> zSDpBn{#p}apg&T@T4}8N{Ghacu&J^VIToO*O5|982l?z`-jk%NEGF9ccNZupTcjTw zpjFhlhkvOa)%!Dy7K})4rRQfH(zdRBgx%9K2!OlH-QtcV6MQr#(jky zGqY8fh^bq0kDD)-ZArE5!Ss-D~r$y#4RGMTQyDQGfNT> z5!ScNts30I5H~|ux0?d4_X)zfz~rbzl?lRXR2k7RY^_sPw`U~ohUJ{wavTheiI2-IgsnXxcj23ujL?M}rxXu;a<25Y;&U=jmK zaYE*N9%hQTtdAOM^e1>4eu@db=mcu~Hzr=-aMNuY?*OGyb$i{fiRUSXCpqt5To41- z!bR^;QEDoTl(X^`CN9E2DK4rv707HL&HgoQjHPp8;Ru(>2lNxtBByJ-WQ_)m_65lz z@ag-4cqmawzea`xBD6V0g@pLZdJq{_d0_!ZGjj1DU5#ma*HH|+rtEdRO zr+q(M?9&_-?JdxZ!tr`k8vHA>=Gz@rn$e?cNDauMd0gkbN6je0pweyRye|;Xn^i?* z!_#tHnr_$daon1C_E`R6Nq^%{G3{|9FYWPy$wdOgm6{*=C z|750_tDN^5!~&`=Xo*1h+n> zjHOX;&bv&VglJ7u!zs5$e4P=?$d+cTk6aLH;BiUn@`~KFo}dnmLwPd%3G#XVtDUa( zl<=99^lW~mcgwl0*uLqiqe`+i7gcUKLU$d_>M{uZt!>Q_s#VjKKc(_?n0gI4X}`{# zGGDaFW7b-!vd=G`;pg+JiuWkOe#(5MVBy?;2iZMe9?d8+Z4%S7E7+T{EtzEK4Gz#P ze~78#@eW&;Bi-@1t)>26GjPS?S@EcNq+%ahV=GeM_Af z=|)0LL2~5f%}9*2b-9s{5Z(0?S>Taq(+S%|=5s@EESi?n^qD!J3KUdY3WgdADnY@5 zI(+GTw%W~P%paN#4bW*OTNc@>>&g?Qe;zaiFL2q7k?<4n6?WWc_*Km&Mj>u*`lOXK zA@Ma_>$JCLkQ4fxDTgLXyRJZrv8078AJ?A8o{Rcr0DDk#PcN??b0X$%@G0iuO*f>5 zo(Fvcm%+o8li)01CL(5o?<%pzOhr2!(2L)Uz{h4WGQX$j@RoVwi&J|vJg^(GWI=bW zrTbHbJ-CcmP(MykBoOf$XGuvTN$Vl()%@y~JUdMDaCXQE7 zzaUbFOPSI6 z$b!_F_xQ{s*S(7ok{Lm=n~~|y*{Knza{)q%N`w@1Fq#Xn7rFn?&|c(2XHY0Hl)Ois z=G?`T4ICWwe-t`~ftV<|4Wk z`E;_-a2p&S=VnuMzf-12JMv-4Q^UA$^V4e^WKmwtne1=ugu$x6WO#j zA}by(pb}SzX>pZ!ZK_m4Gp|CDKWK1B@-N_sG%fiP%q#&8CbA3v57Sh-+V7r`{JygB zU_ear7t*zJFu~D+yYN4w$T-pe(8PPb=(khNzUc418+r3Y|K|!$jU=`cX&BMfQgOfJ zt15}Y5z+s?Eg6XZgVAF5B{n$UOxUB_{x6S~yd<%~k+!7wF9cmN(LY!f#6`cK!Xp`) zu;{l6iT*oq40c2yZ26*}w5>k03%`_-)tp`U$3ff!;lF{cN>jta|8o;xfK<-AeBnPC znY}+s99DSG>#v0W=J9O1N#XxoY>Ny3xs!ZupJ|A6kxyew{pOT=dVS z`)%CnSF+$&w)$N;M$NGLOEJcQ;P>{44GaDQCOV7@{%*u9-rI^JR(MPGSAu`r?QFV9 z!EX@L;)36ILeo}%*u^2qKY=6CwB#2XJ06$(H}6vExa9AHt|dyoqq#B3r^GnPKOJfi zmi+gnr@rKGql3&d`pad0Vv_&MXvr#-j7$D>TQZRRklH_=@RsYZB>%2k*>sbVKSWH6OMZ_#nwI>l`iCU{6pl#Kl7E1);&I9U)14|E zm;8>1x{@S+t~>{5Zbb4YQ(~OtpA9t#Oa5P_r@rJj&^zWyezlo?L<8?9q9vE9Bnn4t z{(ZJ&Ao({(i`|ph;BS+hOwVY^0f`OXYD;=U&~i-jKbJp^Oa8@VVdIkjBny6J$?rkA zYKG)jV~hjI@8=U6mi)O4UGpXXYsl<QI1KqgfKS_ykl3xxr2uuDJ>8UUIU(!A1 zN&aftpP0>mCR%c(N}_N?@@LtSf#i>i7Rw|y_`4)0(>q%7JBbaBw&WbRX3plV)?Z0}`X)Br zq~yOVro|A2)~M$DBY`CT2&joAE3N{o~I z3!w&K$^T4x>PvoW=y|^6ua*6YN&fTElCRORrtx1y@*lP(1IeEdE%q}Ni!UeHHLj?W z=^HKi-NXi`SSRCMg_dKI-%1t4C7-K;O-Ozf9r0I|{N5a+W=Q^8jBz0OL*)EPY*_N2 zX5^YL`3EAi_oJA?Mm?hFSqs6=iSZ9~Cje5mgIG>u0 z&jlm%cYMYfg51UaeuYw>B{cdOf4{;HDEhqA?ituGtkYpfURx-j=>*ry3i9(zIY#kw zIh`S&g^zOd49If2MSdBx$tKLZ!zrOCP_Q>3nY)J! z^GB!`ZX<{m@^3&=rd0N`<~phcs)w?FUo7< z_jUVnSm(xgeGkSWnb(Iv8j|k}P?@G=_cXQ~tH2BiL^woS^z<3G1uOq5mJ<=Bd5>$mv82q=FZ_gsRTca)C z9y%l8Oab^a6AlIgYu=TDsQ7ydljRvDhVF5Rg9?>U_k6CZ#U|d}{S$&qvtgl@qq`4A zH`uW7A>0F%yYQRN?cptwm51?s@|_w49m#hdV_0gHZ?v&Hz8^X$r0#pv!@Z+DEWu^a z!}ULy%szDJan9Qd!x(xKwS>xdgW;%s z6ZM9xqsn)d80@j|(N{_NqF)P&^n&J+3XklFpsevr|A=Bxf=kKdow~I9pCFBSZ>dQ8 zBE9>K6`o=6eGDBWG;YhuC)$gC^aqN`Cx@+ zRgAH-C{Z0fneKY7m$+%ub!aaK7lCG^<~N{ zdHF|i4}~KO27fiPz|hHb&qj;QQL*kQM#|wSw2Nd8*DdIM;WYgQZ;O_^BC)|MY)Nkt zT8>Sdda8o>w5bm#Q-;l8^&qnyB-je_IoyoBoy~h5E~0Bgr_t5jNnU)D!=Z`N!M0-< z60}RkNsU**eg!k6N;Z*-&yW_HsMHL9@bLRuWcJo*0=UAf(qC{b=Z(FBZ3Z(WC+AK< z(`D@tBh-ScCO#O`1N2B|4s*@p(!8dIT+*8(4GBo51nN-AsBQ))H1EkvT-s9=d4nqp zJ5tTlzVHTD6-cav(Os~r{4;PK2jHeJ2NUcur|I!o%tLT)ZRqIQmI}fc=je5f8j!m# z%nI45zgOVEegA*LshZwWKRA*^5(gx)-qtmTNH~jXv|0Qpnl1nBplt1x~JC=k(1tF zRqyF&u@x%T9mUu;=#$*j-{?`<&G6IvG0~E##0H{{NvZn5|CY54BnOP{Hbl1_vfYWLv7yyv{fq>E-_ z8;O9i-st@f>@sR{5U4{wg~ZA~NBPTZ>Yg=sTn$Kh9Bit_7-H1Ly-Cz8_BFJILOR|2 zUo*JS$vLK@P6`po`!Bq4UBbo!(bF#?y~CNMRfeclFAs!tdfUu`Z58`@FNTuGV#rkH zyh*ymcU{pl-2D(-H;!JNJWSS_jvfuRRR!+8D@ZacO7qkT)~l3TJ^ww7 ztEY6VDBa8ZW>xb1OEkE_ffPJEmo~=Q%zWhfOMxhpM z6zb+5j1f+9rL4JCKR?c-^u6A zf)7gLKmaD9U~grlFPdmyVYqCVJ~}gT{AWdD_|X7mI|te7__+dIU8q9km38wVQggtO znU*8RBgRv~OOREBy}_vy539`}o(M7?fv&-$9fo9-M>LyZ45Ub8Gvh=X*w&3VWpZ9E zhuqMO#&Dj7>ZM+QZl@Q&fT4@knzgmgG__`_19eBjv)0N$>J7~SGto+o&Bzr1)CzG? zFfz`)a}$iNd!UjZkkpg1ne@AE)cmo$J)G)~rL}Jubl6_SW_%el=k*WgHg&ifgR+6H z)(1AF#5Zhq!Qr2B7k*IOS)qd>;yQ#4TrT1gM8WmEPvw5e=X(1AFD!@t(fcLK7L;X4 z?|fNduwrmMzE?5|1M!YG6bk0s#C-m#+z6Dz=}Y{o3W}Q5*Mpi-u9w;)v%o^>XZ?4Y zZf&2uQrS=`w~X5@VyUfBItpf|!wV(-(?6`i0eNOA_fQNRR+xA)&u88(uyS?(gVg}s z=5;;Wvd=#*#!tEt^XX}8XS(}?$2nVpSF}f99m;T?mVlIjZCGy#y_G+k`svo3>|6QM z)Oh5r{DS4{q~DYoRJ+RbtX$l%_%TVrdLB)v=L>L6r&r+o$mZ7bl-6HLBJ?~T z)YGoH_54o)JvRjPd~#8=UyY9bPeD^?EwPvm?J(38Eaaz9U3ek??`YjF?zYZ zsK-}+Q;iJ^-uZ6g9s882RerfhupuHZx|~$F=Z?|d46f%LtKQ%LcF-H!U;o|zy#Bj5 zhO*i-rp-__oT$&`T|Kj^;pLDayyUy>)o2nq+`H|EDj$PO6MS6D$ye~K>pWeyDsZ=p zf48P0&9@&}hyF&Qu)-twO%qf`Mvxq_3|<1NlLuxsqsnPYvq?e+WKEvP4HBg`m-&k#ZGJH`t;E;j`{bE<6byc0}xV|PvqjaKZ|g#HpFeLp7lPABPmFb)1~L(2f%;kw zdkcEm7cmgi{XiyYLxKq1a{5mB*4=_OzYPL3W4qVUyljHmYV3TWN^}>LC~p<>%Ixd% z30;E7==nldF!+YtN59f`Co@OR7jh}V`9jwrPqWV#y6Hj@7TT&4)*mPg=8}v!Tu7Mn zPSd43U#QR=An|OWt}r_OK7c(5T>m8(6pWW|O7i76bhgk>84d*gb+RrK&K5e3H-d$k z;QMru1?x(L$_o%#&%`5@IhdDDMA$qXgT@Ic(iDI^s~Hp5Mey0A34`1W^a`j6IXME_ zh?0v?63-`D1J2F0_xhWAS=_5et&4CUzg6oK%rfN$uSMOjAwwv|DJJL0kS90YjDD?- z7R>G6=n%D)zS-&S+ew7~1-w-nQf~E^Ra!N175;BNqN+1mQ)A~YU`XTvz<)4?pGi#I z7+!{PsN^_3*)Mh9bE!t$mkY=bow9U%7Xo5j*F*B~KSLf#-p0$2%;RaLtky6362$t9P^7qE z%ThRPxdKH(J30m-tj9h7SzQm1XzELPI%l+Z9V;3Doew>s>y68hGM}JJC^J`IUNMVz z-fAYg$8v$SFk*|oGQRRdm)Nmp1vH=obT1r@R6S(=wQx!h4s4QoWJl{ZM3$l6T*p8& zFiqdXWv~GGs%~;&4UEt@T*(yIF>5%=}|Cr@1Bh!99@O83Sc$T zTg#&n0rDh!?W_MtsM9houfZg})$4NKanbE9N?U$d+SlkGSpJH5N zjV9z;9my5#NP!18hazwdOL|yq_8{hm`WG-4Vo(CD3(uFNx(7mbbX^3d(dMw?BT+^o z@?$cc$HoVW18Tr~D2-NwkCkVo21pAameK-bDJ$Wk_A$6oL*eIgk6xyIC8qsJ~CrcOt2iL7x778F7$_(IftD?$y+ zikg;&8q^_b@K?&F4y-fn)NHvyncRlhk7zag4#|*Yk<(K;9$&mJJEPjCpNXuYhdE9~ zq)$07hu|bC=pd_sO!~F%B-`4E)WmAM=e#^=!-&(gKrOJJSc}Q`1sKz>Ni=c;iBFJ-gr4U$3cx`f&z`j zm>^^FI}7Ir(RVCZK~=TbeCFwRSB7!ipg!hMDW!j&j9!d`cFP!kY$oyzp|7~|v#Ew2 zs@%9{9sX=4CY4r@Ryqr->CQm(cM;ip6xiJ1g>|@`$;+D=iExjlW;W$nv+VLN#?TeG zoiU@$-IwVKke@(zP=O{pbMSW^u3@~R&(^}@kG6_?`vbv|^B`O{Ny6z?U&oo6|dR zXFKFxcHk(AxOuyQ+u9(AG7LS@qF(SZ3pIqI`!QM!pk+aIwJrG}Ui+1n zelWUzT~SH`OZ56Vz9n)`OopP_Dm1$Y;<5mWQHiK>4j7EzId6Y33%?$EMN>{j%}CTU@2O}zbU)5(<=Fx912fGm9>dF8w1IekFZ@Bg zABr-!pQQHlBL1DH=hegLbCap3b%z%QZ=wts5qP3NCC}$qfgRj6O2a@`v5TIB}by)kUlh zFf4#D22-}4)D$zru1z!QYe)&*r?8mff5`^Ft*+SSn)mW$!mQjc?|*}cDb5B^^CA(7 z6HP0&Z-QtiwR=+TRh5fOOr7bCd|u%g1ul8Z4CBak|0_7MJ0Qr|>?X$eIJl0`7IQ97=X9drrZ#HEsb3%q17>p zuBRR9N(YH{&bvbm>N&xEkbgeb2)&b18Wgo3Jj)D*%~UjUVqo|4!+mqQb~TiTQ@3>$ zXO`FK)47|^^2{PAd9+|mB6S=Z4iEj zdt@~$F_MVhi`xjdB+Y=$1#1%ygtEwXe65Wkx}HjQ<-8g{ zmQK*D0z;Q<8LfTR)(-DL$a--i?eK5@fz;2F!B=8TEVeR+Hc?V*` zV2n5JDiHb+?mE{SA6qtpe8%^YkcUZ~we-BcGqJ(7rVpV9E#3Tz%>J8N7Cuh2aK{GP z$a$T088Z_fFfn*up-$6)7ksm;d$^?n3!P8;qoew4tP+*>poN&<;0)CIjb!;k-|WuK zo*Y&yaDyO3A%U9)&mI!Er!kEP1nyp}P?%kr`>6&59O9A2>s!d`DIK%*?c%?z#cz)m zrxM=VwED3RgADL_DMrU=P%{0h?GtnsU_fdAbnDL0mZ^9V#Gc z6#*eE9+9*J+l+xWO8JK7L(q#U*;2)dQra-G#HDS*R0q))lGbNp2^KK zsC^h!-?LVeN3USiLOZkIAB((uj8(L6d0r1k7oId+Dyt}6?Q0rpbYq?yV&?|NB)Nez zX2)&uue|K<_%g#OvyoJhZnL8w zPlnHV-BC|IU)tQ7KpjpQVTlJ$3#gcPN>XV~$#UMrP`*l-Av5}cu37ybz--o_*%rDf zNvo)jvH=*d@Sfl9QX*P&o4-Nv2F;%Pp1_6^NFx?)G6T?OMp^Q|SDMMP?CJ+BWDiIf zz;u<)c~79I^TK8!4tf^&-N)2cd4qQjf1F-kJBF_`)K;YT-+lo(D$DQ>STC#+N4_%E-OKeb2zx~X?cxPPh{m36L*VN6}9m5 zm9<93CHP_t{~cO!dd;mTYpn)le-SRLrz1htOH6^?d$B~Xx;EYtX11$4*F*~1R?CY0 z*E)9Mey)6L3m8z8oXFfh*{7Fp9e<>`99Wz#-wNuqqpoII5%RN33z2^cO4q&SO5r`) z?huQbCGAn86``5P^)jCL7I_=6>PNxVQjj9XhYz$ZriPZ9d=cjm}DP2%5@&$=K7>RF-jITBl`-jUmH4@#K*^b0|c{MGiqcJwL|f!CBXNnS36Dha0r?{_-BAIKgWtD>el7T8<0Diy7r@bv0pc?+A{{{=wddEne=_mmb=-`Iy8y@A&}GF z8w2aG(L0#D!QXw%WCS<)L76e_D2WY-cQJ03bljrGbHKWoYND#c5 zM%^?Q$nq#3^O@^*eoOZuk%rw(qzcnJa(_ebFu$6B-ike@cQQ&eLGRzVtQMztgI#NI z^coEv4O=-UHFg%3ji;l?^dokIbtzaEE(Y_7uf}3Q$5}KpXWOuHB(-RmD(&^{^WnOMkeeRYHK=_ET(%bc=u8@sd7+k!9=)E(~Ad7XZV&hgB>=Pef1T}1ON z9^oy%6JaGEk6Oxw?h-wY`lE1nWG_f8)mdN^$Dax!bkhNO8$??%xNGoUuGul zi_}17F8aHXnMI7n0-3o3;i+TK3bU#w&iszQ({1LIIhom@UmAnQ^gY=9HQB zMrNMJoDFo=pY7;8HK6kXc6ERg4q<(h z<`oeta^!^9wz> zNDW?ZYgKjY#~&7}4yQCBPRMyLf(F&}4tAl`7LDPn-nG2Z9XDJIZ2QxY8oNEk-2!^- z(V!TtUg5fVZ5Pp086;}n85pW`5ua9OPPy?D31t;K=(Pmd6`6g%|CiQ9OC}-#_iyL@ z%vnFhAMXSCJ}!kbJZ8;?LhspOxuxk^tn_e4KeZ}4@@sb52F74FXRWt_mjjQ@)~dS?hP!qI7_uJFyD zn47f~nQ8kmzJ)wh9YQA0)+L{tWu|3Cg4UCspkoN~&QacJ9cA?hEZl(ZBTTS zDeCfG&b*Qr>@gt~R-7~VZR211N-Z~RBweMdeDFqC%tesL(>!BD4^*|-!IYjY9%XnK zmuUSnTnb3gH&rtOW@16Gv&!gZmAR>}wq|ClhnbABn!=Bn``y{IOvYr}|AUX&rpk{q z_ltFZwz`?gD7U$PMd-enNc1QbIVyqf+$w87%@n~qE9P>b<>YtG9?b;I zH+<3BN?3Sneto(Zh0+}HkA%`(52gocX1m(0p#=5inoxo|bf!q$==~J_uYc;VbvU1r zJuo7Ly*M@Fw?$ zuRnpMFVI2-Oodi^U@owjXtM7@_L#-RZLOHrV*VJ?z3z0~=9y&!=aZSUe)&=BB4cCM z%B^#a6MN9`J5*zFq1Elz&&BHYL+beco6ptib`_E^>?J32*mK?>ctq61<@{yAlIJ|g zk$J{wYKD*bmfQK^r+h7xf()Mrn=^~SH~JKGzk&W@d+Kd8bt7j+Sd=j@@dmz4xtVoI zKZww>b^uc59nS1-2M$_A8-^y@z6Hki4VArkejxv3rVZCs&im1~P}E*>1w3=g4>uX@ zpT^luYK7T%))p5=*CyIz2ttwf4_FA3`~xL(g8%m(WEXVf9d9dR$rKW&sa2EsS0>`y z&0#u}d+C9ct$?((SXiqL$iH_O#cBZ?31%X+4%o=Gd&Nq1Vwl&xi2cCI?&TV1AZ zdSn}3f}@|}>M~zz!2jUcw!>Hx7u(JCdUK6cey;S>|H}sq{)SfH&oxPSE2NW(aRtJI z$FJzHEL(9RYsa34s%JrjR)9M^gYAh(wT}dBO&)RFQ7e`b47>y@SUG%aU}$e}rqEA~Y;3YEAy-JU(|IL-g1s*iJbvNbbH2 z%v9bRgTzvQeg3i_v3OZan{%uZ`SyFCGFy8ETif4dPM4K|OI&Qi;8c_bdE|LIyKI?( z=2oVnB9`TUki{B-f_;06elx#sj|9m<-+mS(27Q|lBnEwZNQwDiISIrN6EOSqmMTzBXFalv&duSeiIY;|enR37*G2YF%7a$c|CT6G;8T&u2w zqje$8K6B@Tf3xqr)^0nLGburK$ zw4jYhj`D|bt03hXA1a#$0=4?Q_=Re;ykInJ8k$wOp%YC*g{jUPh=0Mm1rixA?pABWJK(jO+-J@Ql6aHV6=8%4j9>YkVHZ z{W@%{(2ef+>uyZnvvxj)?Y8ZVO={=#LhY39Svz+H?Mz5&=Ple%>`xVLgk+~Fz8x5} zb5~M3KPuGDz&&f{83Y5CZ{w2MX;G*h4+Zz2Kj#PSj7e(eA>2>o+r(%)36kBU#Te6@ zaut{r^D|~vL>0BS6q%v$lFnA7ssstVLFsfiJ}E`-8`ZZasTzC4SEcF(G@eM+C5=(# z%xPiE>a!r+(;_xT1&#CO<3j_BsM>XpB7uc!VcTz zp(O6H#FAFE9i_`biB`2>&LZ04^!`@R#wPsBmaz^#yUCrDjhZ7&zDt@obS)(CC& zSi>ktn;9o|C+r%(TbQ=Fjn(FST6$oaSZ=gp5{ke>Q;p+#u?Dy5&N6wiyB1fP6-9_) zi?(Q-?fc_aqhp8$qqO`J3l;@vIWIy>Jy$kTn4v{zIioNwDHI53DfVMA8G)QP3%CEU zV)qgAFlXL<#C+ib;X>h)!l#9cgo}mG311La36}_$3YQ79!sWu1!d1d*;cLP-gsX)$ z!ZpIR!ncL%gzpO13pWUBg&ztx2{#Kp;U~ha!cT?u!fnFs!X3f};ZET$;g`aqQ^=E+ z!q&pJ!gj*;!hMAM35$gtg`I>42up+q2@e)_7M2RT2oD!_6?PLIEj(6uys*2lhwxhVVY&OyT{)S;7Z|bA%5I z9}zw#tQ5`_&J)fTE)XshJ}G=!xJbBI_?++sVU=)+aH(*aFe_XxTq#^7tQNi|d_%Ze zSR-5`Tq}HAxK8-4aJ_JYuvYk?aFcMe&=Y8lHgzbg<2=@~f3p)xs2@epK2oDk-EbJ^S6?PFGF6=7oCOlertnheYcVQ3V z$-+~GJ%wiodkK3B%Y=P|eTC-3^2MPxXFA)wA4i#P|945R%I9zy@@M_^T z!V$vjgd>HcgrkKw3&#j=5snkyF1%AXK{!!3SvXaAw{W`fUf~SkeZrZ-`-QWF4+!T7 z9~M3$d`ws=oGY9soG)A;Tqt}}__T15aIx??;S0hl;S%9e;WA-XxLmkWxJp`nCu}d=N4TG`SlCh6NqB&;M0k+!U}0xrsj!RiaA8+rH{sF3V}-{Hy9;{= zPZpjk>?u4$*h|=3SSIWv>?=G^SRw2u>@U1XI8Zo9c!_X`aH#My;V|J9!r{WJgjWl% z5snaECmbmpB^)ihSvW>`i*TIqcHy1E3BrlO$-=3^yM@z*_X=kS?-R}x-Y=Xbd_Xuy z_^|L1;bX!|;auT7;e6o&;X>h)!l#9cgo}mG311La36}_$3YQ79!sWu1!d1d*;cLP- zgsX)$!ZpIR!ncL%gzpO13pWUBg&ztx2{#Kp;U~ha!cT?u!fnFs!X3f};ZET$;g`aq z(JcEa|;eT4f7i-jG9orDJnON0jr4;FS7mI}KF4;OY7b`u^gJXUzTu)DB_ z@MPhs!k)r2guR5lg=NA%!oI@ugcZVm!v4aGgad_xgqH}12!{$U6AlwzAsjBeN_e&K z8sP}xb;6OtQNq!}n}uV9w+P1xZx`MvoFJSioGhFwyjwV3c&~7V@IK*8;r+r{!Uu$N zgbxcJ5k4lY6wVdS6V4Yd5H1uxDSTSENVr(|obUxNrDR`{WClW?=p6MiDxD*RMfFWe^FF5Dq(5bhN25`HNx z!sa8y|H9V7w!(J8_QHLH`w5GM9fh5Q2M9}q2MG@rb{3Wjy9f^#b`^FL9xXgpc)YN? zu!rzu;i{ zCVWGUIMv(OWMBHSwcR9G+ECfqLEA#4!t6z&p! zDJ;UKO~}8nwXm(Qov^)dAK`w&Vqr&NC*c9Y65&C@gN2=irNS=4!-ZXi-GoOAj};y- z>@MsfJXv_Eu&3}0VJ~5CVVSUxu&?kuVTG`tu)pvk;XvUa;U&T$!lA;;gu{ea2!{)= z5?(F5MmR!vop7XZlyJ20X5kp&Ey8ia+l6-uCkQ7BCkv+v?-ouM-Yc9TyiYh&c)xI# z@B!f*;lsj5gpUa;g>!}Tg!6?9gbRgF3ZE7(5-t`#CwxIzC0rt0DqJSa3YQC43RelM zg|7+U5Uv*12-gVL3f~s46TT~4FWexk6@Dn(B-||Ygr5kv3O^Or3%3ck3wH<`ggb@1 zgkK7A7Cq%(*jm_D*iP79xQ}o@VX?5Iu#@lrVTte{;laYr!ct)u;o-ur!fwK&g~tlH z-+T8F-Gx1bCksy%_7t8W>?Q0iEEDz-_7$EdtPu7S_7`3x94H(lyhJ!eI8=C!WqK* zgfoTr3ug%*5Y7=kEPO=xn6OefS2#~NU${WHQ23RChr&(5%|cK3iEyj%Q(?Vun{c~u zhp<7oQ@Bg`rLYLEd_ew%t%Yrc?S$=x`v~_F77IHHI|&aEmIx0L9xUuEEERSU9xm)E z>?S-~c&zYvVRvB<;mN{Ng*}C52zv>83(JIkgnfnQ2`hyCg#CpV2?q)X2`>>25e^kz zCLAWbLO5J_mGEleHNp|X>x3hPqlBY{Hw(uIZxN0Y-Y&dTI6*j3I9WJVc(-u6@Lu5z z;eEoH!uy4@gbxVk2p<+cB796(DV!^uC!8-_@c(GK-%xwkt*qnAGBXje5GgUUP!TDa zf7hB*#7aU$M8ZNu>>y;akq{}7=tY73p%*6Mi%19xU-UvODoiROBuq@gLc|Us5)$Sv zsSuG2>Gb(t&)VmlJ@;I5&3QlfJ;pVz>l)*kzu(#85AE@X_xO+Y_>cGaPxtsEd;HNo z{_{Ql%RT<9J^t%G{@5P>%^rVzk3X@;pWNe5?eX95@u&CrANTk(d;Hlw{@flvzQ_N( z$DiNhFYNKZ?C}@(_+R(mQz=N|v}9)ER@zqZF;-{b$;3f4gTt z*t75L*}v%7_w?*P^z1M6%=fWhKKzcJ{YKBewP&C4+dTWGo_$fz`d<47U)i&->e-*_ z*_Ze1&-d)ov%lW6FYeh7^z8F`_D_2DSv~u=J^QqteY|HcJ^Noh`*q(h{@{0r$A`bt zv(N3>FZRqV^5w&i_spMJdin6Dd*;t^zkK-PJ^NVC`l}{B_>rFVr$IjWc+dVp&wit4 zf4679=aW49{+``?_BVR=4L$oyJ^Q|%eOJ$ZqG#XUv;WbvzQ_E*@BA&EeM8T_tY=@_ zv%lQ4uk6_`^z6~I&njDA+Ose1*%$Qet9tf1J^Rx=`^=vGm7aY{&wik1zv(aG_~0M* z>{okc%P$}Pa?k!pDd-i8~_QO5)BuI*^l?^JA3w@diHHS`)@t_=AQjp&%VBApY+>3 z`|6&3X3xH&XTPs!x1ODP_9Z?0!#(@_o_$@)EG!cDbKk&M&8z%ggQM_4@L9 zdAYuv{UOuy>2`lRpU$W2>-~DYonG&^x7X|C`ucW0KQ3?A=kszozdhfc=eO(a?Qy+7 zZnx9p^6Kqxm)q_7_Iy51m+RZx^YZW~dSA}Z$K`f+^DY-n{*_^>5en_40b} z<+r!T^ZELEdApx3-uQa;&d2NJcDY<`*W1I}PPgafdfs~X^ZoRCdA;2)&)dW6*VpIW zChoV({qek?UEukA+}`Zx^>Xso*Zci^zP+6u_uKjOyu6*B&->}@a<`{HZS~@E_qVsV z)9L!WU7n{`YdEmWoo|kKx?V4~a`o<4Yu>Mqx4R8{{%Ya#_4V?2Uhd~NOADAklKygb z_Itm7TpYq4gu~ir?>Svg=gaBsd=tj|<$Ae$S#a$C^>%#~lJmo-+UQ+8AD8RHde7JA ztCt<#WiO)oDq?S!ll@&Ex5wl4{JhB6+x7f(&D-<#_Poi}%bTNJ?@yPv>9_ma_3^Zi=luZ%XFoj8_owTX2U)%gsAyVS9=G24aX!h@ z<9WRal%PqCUA~>}_8@W2`#itC-M!;^J>RdV$Mx#9J3Kf)@Z3H4yyKqB$3wcj=s2f0 zJH3kL+x>Yvoo)~Bd=u=)=^^_tDZ;m>Kt7Au{VXGraTbuL54^r!Z=Lsib+K32xVWxO z!hnp3&E4Bv^D3Ix+g(6zUbT;s(b_@E`QPq9{Wt^6^VOgDQy;2BEF44hu6OBro*q^{ zS;sFH&ddF^OWj}J-d>+x1Rhb9?DHFVT;bnQuEF_b`M#X*h5Pw6kUV< z>FrYZfuQpamhZ9x_5fY_{N?H|k;TsBFQdNkPbH1XESgG}H=hu^h zLK8xNf4*JLFmq8nu7Rp9p#Ro?)q*!zT^P7vI-L>bp|_wLp3IG&RfhB zQrq;@nTBUSNYd;1)e%skEht{`a|#$h^w52}wczc9Gfvn#X7Rsx*?*zXIsEt*|EV2O zuD*aQ*Z}QA{vRpc*;BL>F(OxJ4}9oCSLg6>DZMnwxfM%%{^odhPpHV_ zDWuMS1#TpGy7`DyJ|kT*KFQN7l6i;=#NYb|Kek?gd=MX*7xokJaM&^ss6A>P#6w|l_8B2peX6EV1Cuph6N?kj zyAVd~ysy|2|4Y{!Su4V%2ZM{S67An;KoBb#iH|~Y1DL1D$|H_bQRT1YUR*&6TO(af z2fSA-?9_9G4vBIXVr7AzyZ$R8BLd3UQ}hv)TfOwY;Jl>7POvm47SD&R02>ha&mm@D zCtqkAcF~Dy^CpSrAP~pd9=&h%tL{7TO=siGy8v6yo9Dz7s}fCi6oSjC2xwN%$Pv?m6EJ0+ zAQ7a8c#b*b4|3z;>I>0KBugwb@m&Och*HV&CxF9jsbUoE zkBTBYXM;*yENn`C6)0|mR{$UOoH$n|2!_%Dy&oWiVGE8dfFu{bm-C#d5E3F%MfQ_% z!4jKRi04R+B}tLeQsC$C$vL2Y$$7-HL0bh`FCqg#Ig&;%<`mW2l-x21ol5YOpp*?| zjkqwhlAD1U$|5&ou>R)l_9rOnl1)I~tVaG014LR_&)OH~76LGfS2I?4vcx7QoC^Pf zgx`4F;%D13kM#(Nv%NmkTU#Nv9kD2;GnzIS%Sh|%Eun&e_k7Ka<4 ztogn6!!@BNu3mO39VjTKArx~Uxh2EIwnoUeSc3vNR}h=Y=29 zPNHLoY8P>3256INR(2?kKwu5gwRJQ`A}c~QD~A=^!~STC1??M{pg`E5aS6Ot?pVqj4bGslH$MUr6ow;Eu_&>g(uk(!*!G{1S3DoM}Z zLVpxW)?7dDmjS>O$vj`>@Q{?R=a0{C^%aPhZkOPT%Sw{a%TPfQ9^llc1&E+sza-)c zB}*j*6)V1YLYa!>%TNVC`_XzwuYtiKOoF8Zp;VsaTZ+pEuaUp)e3yqDATj;na#amD zG2ftH9-c*v$Y3%QrYc-g6V7>rus8IeW^)P^7JPO%)hs}@%s4}3a)eX?Z`hslVic*O z1~v~EQq8Q?mL`YPmBjM2+N9U`!RJ(66hhfSLs>fxBA4hb_#iPbTFZwa0;8s<@?pcB z7!Gn^2sV|Gja&$xU~0%vJq8+5r>gBbevuekvHWD+M#!dPseT(}5OV1?>KGjN)o|u< zMXSUVX$) z04u*h6f;YRYOaw615qMSj+gx8BH>ZI)Om1=7l09;iLiK;4@)UVEm2jp_K3f&l(lmf)GfL;|TLLpd{#PIN#9~U7PP=IBTS*W)+ z2|$I#Om{_v1<`Jf`G#mQ_kA9p;MAsnpTxGKF`Hl4?0*PHSObqEd6;Z5rZ!X2EB?a^`di6 z!^%fL?Fx>NL$$#iZ~ZPcfaTimpuYgvhTvC-PU+*04V9IUT{~l=2m9j*uop0iW7VeL zb^)bOG2}kEQ1W8goS51r@6-ki#JtW#NW`XoX8X&-Wr^^U0>Vc)ir%4h~VDNHE$v#zHlIJR^HWVQ=NjTwZakeKJjP8%s zGPMR9t!MTnC`)M9kjXr0>%?_P+yU^Q$nvzbCpuALwk>h{hZaDox2)a}wi6Hw7gkF4 z3xV;uPa%HzsL5cV1g@zuM^g_|YO_L(H#5lOgqQ|b6i|)!-e?}CsR=oV3Y+aI zPc78J2lbjvL2N0fjieA-rW%eJ9)f~js1FOOF~K*9ywMTL$ef68LTYgG3@~_I@^B7o zHI9l93!Hp=9}ri#ITmIf*RzT2mLk$kuaL1!pk=*pTTg*jyNn5MfVI?QWgdILHxR_$ z1=Lp5xLV^^-x5Fm#^EA}Tf!kG&JhiC1e`7Q+G z<^moWC{$jf!BRfKNmvtS)GV}Kq~G>xdulnUh0sVXHduQ^KT2Bs$uEnB3#%L(vZAF# zmDn|ok?I)({srioa_4)qf{y2BoLoL?jMat%G%m?3rR6l2@~X;AmKPFvDhEeiLu(2h zyGm?hwmNiLa11z_9axE&%BALquWS{yhWE50jtHNcdxeE4@K+hcEY+LH#{QUTvySpn zn}47DrPF@;_B<-jvm}MIq%>!4+2~QP#%}6X?K9r4P8fih+LaXksL?pxQ zv@9yj09QSwdTEQX_xw=voCkr3nN_~Mu*#X-@GR0sya3_TdX{?gw7z*k0mdA7+PRgK z@_d_~%PvME(%H;10jPNJtznrM?s<-7fbjswt-`tlP=V} zX;Qd=TuFg0ya_<#@zX{>`(ZVIn~oXQyK-mqc-5V>Qs(fWwcNRZgu60$IWYg;+A1EsQW$bLPCjn)+o;T~H2^PW+L0SXKFDvD&TT^I}67dh4XH zUio#iB*V|4FMgSf$*j+ctUWqJ(<`7TqBRrZYj_v(L?RJKn37TZlUWvA1Sr!MbRYzV z-vR96)acR)X-P8Z0=xSV(~~QaCu?;|ekV7Tk*S9Ah=Py#0s8Je*r7BuRFo(Mqxf<| zK&OnmTa){?dXysG!mZOsl5M1hM=^F>^^qeZU{#Li=``*t4eCp>U>t0G!tGF9raH^i zOGD(Ejp&vxe5GF2OHdFm$y91i!I}C2nhi^68gBrsqL70N6)XsLB2RKxTQ5zjM`M`j zYdvA7{+Pb|F-@$nrGi$fQt4g$yzr&FQkGW(xF+w`^Qy`O2)qLrt(Tp!dErtxs@JhB z+u){&yv9kOChy680}gQzLG6Z`a}x2lBlK*j(t6-Gy8~xVlyh{_Xubxnp^#I{79A5S z!GqzZ_nA1b6m=V_>K(8Bt&8pcAqEtE$b+Q0ueFVpegl%cAJg1;tv1F>vYvZak`M`O zRM~RwZ@G$f1`&0NFQS}m0S>fFYeRe;iY-*r$|>Ph@aV_-Xh!{yuH7Fr)#~`4P z-LP3BFgqniYNJBPwM##9QNLIG>oejutbi@7dR_bguSNjPC=V*suvNU2L&Geg3bC|3 zH0Hxw1L3-O`hv;Cx>icXg%>zf5b~MNs(%!CDQqZG6C}qAo{&g7buxh~pQ%r#B z_TX5WgqNPpao|RcQ`4RVt_u#%-JgzYl6;}5?oxa|d#4<$GWBY^5;awiEO`x?5M^1d z36*To2fX&jib+Uj1>H#$+@sZF1spjkhEIkBg1SsaZU&IeZ~}>vVok_l5AcH@1 z4S;IGn<2nVPQA&s@ zwu4#*r*95;r~_yfRTM-e-{HzfV9f#SkSvC@p$@&A5Yt;z87*-2hpr^yG94D?urCBGcp82rE&;LQ$};a zp)*r%weW~i!>6UXq}po52Ie(s+aK=hPDbaFB|I&`QI?7%i`^8+q2akIj6p}&POnDU z&Z>d65-Vui7Y6LD?`24W5>E-+qVuR_@~K*y7pZn5K~;no9lN_nK9bofv5|OqJk}%F z*$Sn^R=@$PRRCExVX51fth_pH5s$5!K*nadejCInjuS~aFRdFMg>9gu50y@%RDBJ{ z0S)#!Jz?Ag#?N?Levn+fkt(S2-|yGrkDBpPE4GYg{UGE8S&c@v3UB~h3bSnOi{TQ6 zcuag$u_9HGvw!n1qT?z8m+@xyrtt0#p$P|4`eH<_DPs)}%JB>`L2w2ikX5x3bX@)* zKUuX!@Gh9l=%F|Q2-NswpK7Qfxd9d`u6hVpon-VUzRnv7M5x%*(IN|-vtrNd>P>hI z3@ZM_yXH)hGZL5#xd}$~a}0}M5w28|Z5;c<&`eM^Vq>d%(FRv_B6Y^tP6aCOSQrva zWQv3sic)=2eCV3Vq6I;p&^kP>?{=Pj*k^2^GlDhXY;Yw{X|4j}4J*0oEqP~9ZJ?p- zaRamBf$-+dD4Kht+K$i&#(z}-hXUkrG(oBnskBfHf)7lt7OB^F?}naYC3t8OWh$@6 zyDd)3li}=SG}XyjaR2H?kWkP){9naXov~biEWe7{XJIa9v-<@ixORPUl}yEwiF3F@ zE8V(*;wT5rFce?ogl>VAU#ZWDk--F8t%EO{fqq1iq(F|V37MWw;CbiFO5IFEhhFf1 z^JoWr&#zZSAQZqb!jA)__>tI#_mTuS!rSa7Zx8k) zPATAWhj-TOuR}9Pbxf#CO~6lPLjxhP))Qh|(DK13cDVG zmK7U�t2ce>IHeyXFrVwG6iP^AU+JdEqs5c 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 me3Go@!ij)bBp?Swv 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 + int _compIdx_1; + Circom_Sizes _compSizes_1; + int _offset_2; + int _sigIdx_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_1; + int _offset_3; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_2; + int _offset_7; + int _compIdx_3; + Circom_Sizes _compSizes_2; + int _offset_8; + int _sigIdx_5; + Circom_Sizes _sigSizes_3; + int _offset_10; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + int _offset_12; + int _compIdx_5; + Circom_Sizes _compSizes_3; + int _offset_13; + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + int _offset_15; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_6; + int _sigIdx_8; + Circom_Sizes _sigSizes_6; + PBigInt _v_7; + int _offset_20; + int _compIdx_7; + Circom_Sizes _compSizes_4; + int _offset_21; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + PBigInt _v_8; + int _offset_23; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_10; + Circom_Sizes _sigSizes_8; + PBigInt _v_9; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "250", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + int _offset_25; + int _compIdx_9; + Circom_Sizes _compSizes_5; + int _offset_26; + int _sigIdx_11; + Circom_Sizes _sigSizes_9; + PBigInt _v_10; + int _offset_28; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _tmp_5 = ctx->allocBigInts(1); + PBigInt _v_12; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "250", 10); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_12; + Circom_Sizes _sigSizes_10; + int _offset_32; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_13; + Circom_Sizes _sigSizes_11; + int _offset_33; + int _compIdx_11; + int _sigIdx_14; + Circom_Sizes _sigSizes_12; + int _offset_34; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_13; + int _offset_35; + + + /* signal input in[2] */ + + /* signal output out[2] */ + + /* component pedersen = Pedersen(250*2) */ + + /* component n2b[2] */ + + /* n2b[0] = Num2Bits(250) */ + + /* n2b[1] = Num2Bits(250) */ + + /* var i */ + + /* in[0] ==> n2b[0].in */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset = _compIdx + 0*_compSizes[1]; + _sigIdx = ctx->getSignalOffset(_offset, 0x08b73807b55c4bbeLL /* in */); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_1 = _sigIdx_1 + 0*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); + ctx->setSignal(_offset, _sigIdx, _sigValue); + + /* in[1] ==> n2b[1].in */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset_2 = _compIdx_1 + 1*_compSizes_1[1]; + _sigIdx_2 = ctx->getSignalOffset(_offset_2, 0x08b73807b55c4bbeLL /* in */); + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_3 = _sigIdx_3 + 1*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); + ctx->setSignal(_offset_2, _sigIdx_2, _sigValue_1); + + /* for (i=0,i<250,i++) */ + + /* n2b[0].out[i] ==> pedersen.in[i] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_2, 0x08b73807b55c4bbeLL /* in */); + _offset_7 = _sigIdx_4 + 0*_sigSizes_2[1]; + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset_8 = _compIdx_3 + 0*_compSizes_2[1]; + _sigIdx_5 = ctx->getSignalOffset(_offset_8, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_3 = ctx->getSignalSizes(_offset_8, 0x19f79b1921bbcfffLL /* out */); + _offset_10 = _sigIdx_5 + 0*_sigSizes_3[1]; + ctx->getSignal(_offset_8, _offset_10, _sigValue_2); + ctx->setSignal(_compIdx_2, _offset_7, _sigValue_2); + + /* n2b[1].out[i] ==> pedersen.in[250+i] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_4, 0x08b73807b55c4bbeLL /* in */); + _offset_12 = _sigIdx_6 + 250*_sigSizes_4[1]; + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset_13 = _compIdx_5 + 1*_compSizes_3[1]; + _sigIdx_7 = ctx->getSignalOffset(_offset_13, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(_offset_13, 0x19f79b1921bbcfffLL /* out */); + _offset_15 = _sigIdx_7 + 0*_sigSizes_5[1]; + ctx->getSignal(_offset_13, _offset_15, _sigValue_3); + ctx->setSignal(_compIdx_4, _offset_12, _sigValue_3); + mpz_set_str(_tmp_3[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_3); + while (_cond) { + + /* n2b[0].out[i] ==> pedersen.in[i] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); + _v_7 = i + 0; + _offset_20 = _sigIdx_8 + ctx->field->toInt(_v_7)*_sigSizes_6[1]; + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset_21 = _compIdx_7 + 0*_compSizes_4[1]; + _sigIdx_9 = ctx->getSignalOffset(_offset_21, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(_offset_21, 0x19f79b1921bbcfffLL /* out */); + _v_8 = i + 0; + _offset_23 = _sigIdx_9 + ctx->field->toInt(_v_8)*_sigSizes_7[1]; + ctx->getSignal(_offset_21, _offset_23, _sigValue_4); + ctx->setSignal(_compIdx_6, _offset_20, _sigValue_4); + + /* n2b[1].out[i] ==> pedersen.in[250+i] */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_8, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_8, 0x08b73807b55c4bbeLL /* in */); + _v_9 = i + 0; + ctx->field->add(_tmp_4,_const,_v_9); + _offset_25 = _sigIdx_10 + ctx->field->toInt(_tmp_4)*_sigSizes_8[1]; + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _offset_26 = _compIdx_9 + 1*_compSizes_5[1]; + _sigIdx_11 = ctx->getSignalOffset(_offset_26, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_offset_26, 0x19f79b1921bbcfffLL /* out */); + _v_10 = i + 0; + _offset_28 = _sigIdx_11 + ctx->field->toInt(_v_10)*_sigSizes_9[1]; + ctx->getSignal(_offset_26, _offset_28, _sigValue_5); + ctx->setSignal(_compIdx_8, _offset_25, _sigValue_5); + _v_11 = i + 0; + ctx->field->add(_tmp_5, _v_11, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_5, 1); + _v_12 = i + 0; + ctx->field->lt(_tmp_6,_v_12,_const_1); + _cond = ctx->field->isTrue(_tmp_6); + } + + /* pedersen.out[0] ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); + _offset_32 = _sigIdx_12 + 0*_sigSizes_10[1]; + ctx->getSignal(_compIdx_10, _offset_32, _sigValue_6); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_33 = _sigIdx_13 + 0*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_33, _sigValue_6); + + /* pedersen.out[1] ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_12 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_14 + 1*_sigSizes_12[1]; + ctx->getSignal(_compIdx_11, _offset_34, _sigValue_7); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_15 + 1*_sigSizes_13[1]; + ctx->setSignal(ctx->cIdx, _offset_35, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +Pedersen +n=500 +*/ +void Pedersen_e89189a40b66818b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + Circom_Sizes _compSizes; + int _offset_16; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_18; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_21; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + Circom_Sizes _compSizes_1; + int _offset_27; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_17; + int _offset_29; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_19; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _offset_32; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_20; + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _v_21; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "250", 10); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes_2; + int _offset_39; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_40; + PBigInt _num_33 = ctx->allocBigInts(1); + int _compIdx_3; + Circom_Sizes _compSizes_3; + int _offset_42; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_43; + PBigInt _num_35 = ctx->allocBigInts(1); + PBigInt _tmp_20 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + PBigInt nexpbits = ctx->allocBigInts(1); + int _cond_1; + PBigInt _v_29; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + PBigInt _ter; + PBigInt _v_31 = ctx->allocBigInts(1); + PBigInt _num_37 = ctx->allocBigInts(1); + PBigInt _num_38 = ctx->allocBigInts(1); + PBigInt _v_32; + PBigInt _v_33; + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _cond_2; + int _compIdx_4; + Circom_Sizes _compSizes_4; + PBigInt _v_34; + int _offset_56; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + PBigInt _v_35; + int _offset_58; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + PBigInt _v_36; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "250", 10); + PBigInt _tmp_24 = ctx->allocBigInts(1); + PBigInt _v_37; + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _offset_61; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _v_38; + PBigInt _tmp_26 = ctx->allocBigInts(1); + PBigInt _v_39; + PBigInt _v_40; + PBigInt _tmp_27 = ctx->allocBigInts(1); + PBigInt _v_41; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "0", 10); + PBigInt _tmp_28 = ctx->allocBigInts(1); + int _compIdx_5; + Circom_Sizes _compSizes_5; + PBigInt _v_42; + int _offset_68; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_69; + PBigInt _num_42 = ctx->allocBigInts(1); + int _compIdx_6; + Circom_Sizes _compSizes_6; + PBigInt _v_43; + int _offset_71; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_72; + PBigInt _num_44 = ctx->allocBigInts(1); + int _compIdx_7; + Circom_Sizes _compSizes_7; + PBigInt _v_44; + int _offset_74; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_75; + int _compIdx_8; + Circom_Sizes _compSizes_8; + PBigInt _v_45; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _offset_77; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_78; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_9; + Circom_Sizes _compSizes_9; + PBigInt _v_46; + int _offset_80; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_81; + int _compIdx_10; + Circom_Sizes _compSizes_10; + PBigInt _v_47; + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "1", 10); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _offset_83; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_84; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _v_48; + PBigInt _tmp_31 = ctx->allocBigInts(1); + PBigInt _v_49; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "2", 10); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _compIdx_11; + Circom_Sizes _compSizes_11; + int _offset_90; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_91; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_92; + int _compIdx_12; + Circom_Sizes _compSizes_12; + int _offset_94; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_95; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_96; + + + /* signal input in[n] */ + + /* signal output out[2] */ + + /* var nexps = ((n-1) \ 250) + 1 */ + + /* var nlastbits = n - (nexps-1)*250 */ + + /* component escalarMuls[nexps] */ + + /* var PBASE = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + ] */ + + /* var i */ + + /* var j */ + + /* var nexpbits */ + + /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_16 = _compIdx + 0*_compSizes[1]; + _sigIdx = ctx->getSignalOffset(_offset_16, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(_offset_16, 0x08b73807b55c4bbeLL /* in */); + _offset_18 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_21 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_21, _sigValue); + ctx->setSignal(_offset_16, _offset_18, _sigValue); + mpz_set_str(_tmp_13[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_13); + while (_cond) { + + /* escalarMuls[i].in[j] <== in[250*i + j] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_27 = _compIdx_1 + 0*_compSizes_1[1]; + _sigIdx_2 = ctx->getSignalOffset(_offset_27, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_offset_27, 0x08b73807b55c4bbeLL /* in */); + _v_17 = j + 0; + _offset_29 = _sigIdx_2 + ctx->field->toInt(_v_17)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_19 = j + 0; + ctx->field->add(_tmp_15,_const,_v_19); + _offset_32 = _sigIdx_3 + ctx->field->toInt(_tmp_15)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_1); + ctx->setSignal(_offset_27, _offset_29, _sigValue_1); + _v_20 = j + 0; + ctx->field->add(_tmp_16, _v_20, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_16, 1); + _v_21 = j + 0; + ctx->field->lt(_tmp_17,_v_21,_const_1); + _cond = ctx->field->isTrue(_tmp_17); + } + + /* if (i==0) */ + + /* escalarMuls[i].inp[0] <== 0 */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_39 = _compIdx_2 + 0*_compSizes_2[1]; + _sigIdx_4 = ctx->getSignalOffset(_offset_39, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_4 = ctx->getSignalSizes(_offset_39, 0x2ba003192bd4cf0aLL /* inp */); + _offset_40 = _sigIdx_4 + 0*_sigSizes_4[1]; + mpz_set_str(_num_33[0], "0", 10); + ctx->setSignal(_offset_39, _offset_40, _num_33); + + /* escalarMuls[i].inp[1] <== 1 */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_42 = _compIdx_3 + 0*_compSizes_3[1]; + _sigIdx_5 = ctx->getSignalOffset(_offset_42, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_5 = ctx->getSignalSizes(_offset_42, 0x2ba003192bd4cf0aLL /* inp */); + _offset_43 = _sigIdx_5 + 1*_sigSizes_5[1]; + mpz_set_str(_num_35[0], "1", 10); + ctx->setSignal(_offset_42, _offset_43, _num_35); + mpz_set_str(_tmp_20[0], "1", 10); + mpz_set_str(i[0], "1", 10); + mpz_set_str(nexpbits[0], "250", 10); + _cond_1 = ctx->field->isTrue(_tmp_20); + while (_cond_1) { + + /* nexpbits = (i == nexps-1) ? nlastbits : 250 */ + _v_29 = i + 0; + ctx->field->eq(_tmp_22,_v_29,_const_2); + if (ctx->field->isTrue(_tmp_22)) { + mpz_set_str(_v_31[0], "250", 10); + _ter = _v_31; + } else { + mpz_set_str(_num_37[0], "250", 10); + _ter = _num_37; + } + ctx->field->copyn(nexpbits, _ter, 1); + + /* escalarMuls[i] = EscalarMul(nexpbits, PBASE[i]) */ + + /* for (j=0,jfield->copyn(j, _num_38, 1); + _v_32 = j + 0; + _v_33 = nexpbits + 0; + ctx->field->lt(_tmp_23,_v_32,_v_33); + _cond_2 = ctx->field->isTrue(_tmp_23); + while (_cond_2) { + + /* escalarMuls[i].in[j] <== in[250*i + j] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_34 = i + 0; + _offset_56 = _compIdx_4 + ctx->field->toInt(_v_34)*_compSizes_4[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_56, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(_offset_56, 0x08b73807b55c4bbeLL /* in */); + _v_35 = j + 0; + _offset_58 = _sigIdx_6 + ctx->field->toInt(_v_35)*_sigSizes_6[1]; + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_36 = i + 0; + ctx->field->mul(_tmp_24,_const_3,_v_36); + _v_37 = j + 0; + ctx->field->add(_tmp_25,_tmp_24,_v_37); + _offset_61 = _sigIdx_7 + ctx->field->toInt(_tmp_25)*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_61, _sigValue_2); + ctx->setSignal(_offset_56, _offset_58, _sigValue_2); + _v_38 = j + 0; + ctx->field->add(_tmp_26, _v_38, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_26, 1); + _v_39 = j + 0; + _v_40 = nexpbits + 0; + ctx->field->lt(_tmp_27,_v_39,_v_40); + _cond_2 = ctx->field->isTrue(_tmp_27); + } + + /* if (i==0) */ + _v_41 = i + 0; + ctx->field->eq(_tmp_28,_v_41,_const_4); + if (ctx->field->isTrue(_tmp_28)) { + + /* escalarMuls[i].inp[0] <== 0 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_42 = i + 0; + _offset_68 = _compIdx_5 + ctx->field->toInt(_v_42)*_compSizes_5[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_68, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_8 = ctx->getSignalSizes(_offset_68, 0x2ba003192bd4cf0aLL /* inp */); + _offset_69 = _sigIdx_8 + 0*_sigSizes_8[1]; + mpz_set_str(_num_42[0], "0", 10); + ctx->setSignal(_offset_68, _offset_69, _num_42); + + /* escalarMuls[i].inp[1] <== 1 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_43 = i + 0; + _offset_71 = _compIdx_6 + ctx->field->toInt(_v_43)*_compSizes_6[1]; + _sigIdx_9 = ctx->getSignalOffset(_offset_71, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_9 = ctx->getSignalSizes(_offset_71, 0x2ba003192bd4cf0aLL /* inp */); + _offset_72 = _sigIdx_9 + 1*_sigSizes_9[1]; + mpz_set_str(_num_44[0], "1", 10); + ctx->setSignal(_offset_71, _offset_72, _num_44); + } else { + + /* escalarMuls[i].inp[0] <== escalarMuls[i-1].out[0] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_44 = i + 0; + _offset_74 = _compIdx_7 + ctx->field->toInt(_v_44)*_compSizes_7[1]; + _sigIdx_10 = ctx->getSignalOffset(_offset_74, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_10 = ctx->getSignalSizes(_offset_74, 0x2ba003192bd4cf0aLL /* inp */); + _offset_75 = _sigIdx_10 + 0*_sigSizes_10[1]; + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_45 = i + 0; + ctx->field->sub(_tmp_29,_v_45,_const_5); + _offset_77 = _compIdx_8 + ctx->field->toInt(_tmp_29)*_compSizes_8[1]; + _sigIdx_11 = ctx->getSignalOffset(_offset_77, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(_offset_77, 0x19f79b1921bbcfffLL /* out */); + _offset_78 = _sigIdx_11 + 0*_sigSizes_11[1]; + ctx->getSignal(_offset_77, _offset_78, _sigValue_3); + ctx->setSignal(_offset_74, _offset_75, _sigValue_3); + + /* escalarMuls[i].inp[1] <== escalarMuls[i-1].out[1] */ + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_46 = i + 0; + _offset_80 = _compIdx_9 + ctx->field->toInt(_v_46)*_compSizes_9[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_80, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_12 = ctx->getSignalSizes(_offset_80, 0x2ba003192bd4cf0aLL /* inp */); + _offset_81 = _sigIdx_12 + 1*_sigSizes_12[1]; + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _v_47 = i + 0; + ctx->field->sub(_tmp_30,_v_47,_const_6); + _offset_83 = _compIdx_10 + ctx->field->toInt(_tmp_30)*_compSizes_10[1]; + _sigIdx_13 = ctx->getSignalOffset(_offset_83, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_offset_83, 0x19f79b1921bbcfffLL /* out */); + _offset_84 = _sigIdx_13 + 1*_sigSizes_13[1]; + ctx->getSignal(_offset_83, _offset_84, _sigValue_4); + ctx->setSignal(_offset_80, _offset_81, _sigValue_4); + } + _v_48 = i + 0; + ctx->field->add(_tmp_31, _v_48, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_31, 1); + _v_49 = i + 0; + ctx->field->lt(_tmp_32,_v_49,_const_7); + _cond_1 = ctx->field->isTrue(_tmp_32); + } + + /* escalarMuls[nexps-1].out[0] ==> out[0] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_90 = _compIdx_11 + 1*_compSizes_11[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_90, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_14 = ctx->getSignalSizes(_offset_90, 0x19f79b1921bbcfffLL /* out */); + _offset_91 = _sigIdx_14 + 0*_sigSizes_14[1]; + ctx->getSignal(_offset_90, _offset_91, _sigValue_5); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_92 = _sigIdx_15 + 0*_sigSizes_15[1]; + ctx->setSignal(ctx->cIdx, _offset_92, _sigValue_5); + + /* escalarMuls[nexps-1].out[1] ==> out[1] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); + _offset_94 = _compIdx_12 + 1*_compSizes_12[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_94, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_16 = ctx->getSignalSizes(_offset_94, 0x19f79b1921bbcfffLL /* out */); + _offset_95 = _sigIdx_16 + 1*_sigSizes_16[1]; + ctx->getSignal(_offset_94, _offset_95, _sigValue_6); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_96 = _sigIdx_17 + 1*_sigSizes_17[1]; + ctx->setSignal(ctx->cIdx, _offset_96, _sigValue_6); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_num_33, 1); + ctx->freeBigInts(_num_35, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(nexpbits, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_v_31, 1); + ctx->freeBigInts(_num_37, 1); + ctx->freeBigInts(_num_38, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_num_42, 1); + ctx->freeBigInts(_num_44, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); +} + +/* +EscalarMul +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +inp[0]=0 +inp[1]=0 +n=250 +*/ +void EscalarMul_f29b0428f5d364a5(Circom_CalcWit *ctx) { + // Header + PBigInt _num_4 = ctx->allocBigInts(1); + int _compIdx; + Circom_Sizes _compSizes; + int _offset_266; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_268; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_271; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_138 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + PBigInt _v_205; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_140 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "250", 10); + PBigInt _tmp_141 = ctx->allocBigInts(1); + int _compIdx_1; + Circom_Sizes _compSizes_1; + int _offset_279; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_208; + int _offset_281; + PBigInt _num_12 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes_2; + int _offset_283; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_210; + int _offset_285; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_212; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "0", 10); + PBigInt _tmp_143 = ctx->allocBigInts(1); + int _offset_288; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_213; + PBigInt _tmp_144 = ctx->allocBigInts(1); + PBigInt _v_214; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "4", 10); + PBigInt _tmp_145 = ctx->allocBigInts(1); + PBigInt _tmp_147 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond_1; + PBigInt _num_15 = ctx->allocBigInts(1); + PBigInt _v_218; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "4", 10); + PBigInt _tmp_148 = ctx->allocBigInts(1); + int _cond_2; + PBigInt _v_219; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "4", 10); + PBigInt _tmp_149 = ctx->allocBigInts(1); + PBigInt _v_220; + PBigInt _tmp_150 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "250", 10); + PBigInt _tmp_151 = ctx->allocBigInts(1); + int _compIdx_3; + Circom_Sizes _compSizes_3; + PBigInt _v_222; + int _offset_302; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_223; + int _offset_304; + PBigInt _num_18 = ctx->allocBigInts(1); + int _compIdx_4; + Circom_Sizes _compSizes_4; + PBigInt _v_224; + int _offset_306; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + PBigInt _v_225; + int _offset_308; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + PBigInt _v_226; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "4", 10); + PBigInt _tmp_152 = ctx->allocBigInts(1); + PBigInt _v_227; + PBigInt _tmp_153 = ctx->allocBigInts(1); + int _offset_311; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _v_228; + PBigInt _tmp_154 = ctx->allocBigInts(1); + PBigInt _v_229; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "4", 10); + PBigInt _tmp_155 = ctx->allocBigInts(1); + PBigInt _v_230; + PBigInt _tmp_156 = ctx->allocBigInts(1); + PBigInt _v_231; + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "63", 10); + PBigInt _tmp_157 = ctx->allocBigInts(1); + int _compIdx_5; + Circom_Sizes _compSizes_5; + int _offset_319; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_320; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_321; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + Circom_Sizes _compSizes_6; + int _offset_322; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_323; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_324; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _num_27 = ctx->allocBigInts(1); + PBigInt _v_233; + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "62", 10); + PBigInt _tmp_159 = ctx->allocBigInts(1); + int _cond_3; + int _compIdx_7; + Circom_Sizes _compSizes_7; + PBigInt _v_235; + PBigInt _const_11; + _const_11 = ctx->allocBigInts(1); + mpz_set_str(_const_11[0], "1", 10); + PBigInt _tmp_160 = ctx->allocBigInts(1); + int _offset_329; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_330; + int _compIdx_8; + Circom_Sizes _compSizes_8; + PBigInt _v_236; + int _offset_332; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_333; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_9; + Circom_Sizes _compSizes_9; + PBigInt _v_237; + PBigInt _const_12; + _const_12 = ctx->allocBigInts(1); + mpz_set_str(_const_12[0], "1", 10); + PBigInt _tmp_161 = ctx->allocBigInts(1); + int _offset_335; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_336; + int _compIdx_10; + Circom_Sizes _compSizes_10; + PBigInt _v_238; + int _offset_338; + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_339; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _v_239; + PBigInt _tmp_162 = ctx->allocBigInts(1); + PBigInt _v_240; + PBigInt _const_13; + _const_13 = ctx->allocBigInts(1); + mpz_set_str(_const_13[0], "62", 10); + PBigInt _tmp_164 = ctx->allocBigInts(1); + int _compIdx_11; + Circom_Sizes _compSizes_11; + int _offset_345; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_346; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_347; + int _compIdx_12; + Circom_Sizes _compSizes_12; + int _offset_349; + int _sigIdx_18; + Circom_Sizes _sigSizes_18; + int _offset_350; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _sigIdx_19; + Circom_Sizes _sigSizes_19; + int _offset_351; + + + /* signal input in[n] */ + + /* signal input inp[2] */ + + /* signal output out[2] */ + + /* var nBlocks = ((n-1)>>2)+1 */ + + /* var i */ + + /* var j */ + + /* component windows[nBlocks] */ + + /* for (i=0,ilog(_num_4); + /* for (i=0,i= n) */ + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_266 = _compIdx + 0*_compSizes[1]; + _sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */); + _sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */); + _offset_268 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_271 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_271, _sigValue); + ctx->setSignal(_offset_266, _offset_268, _sigValue); + mpz_set_str(_tmp_138[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_138); + while (_cond) { + + /* if (i*4+j >= n) */ + _v_205 = j + 0; + ctx->field->add(_tmp_140,_const,_v_205); + ctx->field->geq(_tmp_141,_tmp_140,_const_1); + if (ctx->field->isTrue(_tmp_141)) { + + /* windows[i].sel[j] <== 0 */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_279 = _compIdx_1 + 0*_compSizes_1[1]; + _sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */); + _v_208 = j + 0; + _offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1]; + mpz_set_str(_num_12[0], "0", 10); + ctx->setSignal(_offset_279, _offset_281, _num_12); + } else { + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_283 = _compIdx_2 + 0*_compSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */); + _v_210 = j + 0; + _offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1]; + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_212 = j + 0; + ctx->field->add(_tmp_143,_const_2,_v_212); + _offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1); + ctx->setSignal(_offset_283, _offset_285, _sigValue_1); + } + _v_213 = j + 0; + ctx->field->add(_tmp_144, _v_213, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_144, 1); + _v_214 = j + 0; + ctx->field->lt(_tmp_145,_v_214,_const_3); + _cond = ctx->field->isTrue(_tmp_145); + } + mpz_set_str(_tmp_147[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond_1 = ctx->field->isTrue(_tmp_147); + while (_cond_1) { + + /* for (j=0,j<4,j++) */ + mpz_set_str(_num_15[0], "0", 10); + ctx->field->copyn(j, _num_15, 1); + _v_218 = j + 0; + ctx->field->lt(_tmp_148,_v_218,_const_4); + _cond_2 = ctx->field->isTrue(_tmp_148); + while (_cond_2) { + + /* if (i*4+j >= n) */ + _v_219 = i + 0; + ctx->field->mul(_tmp_149,_v_219,_const_5); + _v_220 = j + 0; + ctx->field->add(_tmp_150,_tmp_149,_v_220); + ctx->field->geq(_tmp_151,_tmp_150,_const_6); + if (ctx->field->isTrue(_tmp_151)) { + + /* windows[i].sel[j] <== 0 */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_222 = i + 0; + _offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1]; + _sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */); + _v_223 = j + 0; + _offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1]; + mpz_set_str(_num_18[0], "0", 10); + ctx->setSignal(_offset_302, _offset_304, _num_18); + } else { + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_224 = i + 0; + _offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */); + _v_225 = j + 0; + _offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1]; + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_226 = i + 0; + ctx->field->mul(_tmp_152,_v_226,_const_7); + _v_227 = j + 0; + ctx->field->add(_tmp_153,_tmp_152,_v_227); + _offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2); + ctx->setSignal(_offset_306, _offset_308, _sigValue_2); + } + _v_228 = j + 0; + ctx->field->add(_tmp_154, _v_228, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_154, 1); + _v_229 = j + 0; + ctx->field->lt(_tmp_155,_v_229,_const_8); + _cond_2 = ctx->field->isTrue(_tmp_155); + } + _v_230 = i + 0; + ctx->field->add(_tmp_156, _v_230, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_156, 1); + _v_231 = i + 0; + ctx->field->lt(_tmp_157,_v_231,_const_9); + _cond_1 = ctx->field->isTrue(_tmp_157); + } + + /* windows[0].in[0] <== inp[0] */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_319 = _compIdx_5 + 0*_compSizes_5[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */); + _offset_320 = _sigIdx_8 + 0*_sigSizes_8[1]; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _offset_321 = _sigIdx_9 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3); + ctx->setSignal(_offset_319, _offset_320, _sigValue_3); + + /* windows[0].in[1] <== inp[1] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_322 = _compIdx_6 + 0*_compSizes_6[1]; + _sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */); + _offset_323 = _sigIdx_10 + 1*_sigSizes_10[1]; + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _offset_324 = _sigIdx_11 + 1*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4); + ctx->setSignal(_offset_322, _offset_323, _sigValue_4); + + /* for (i=0,ifield->copyn(i, _num_27, 1); + _v_233 = i + 0; + ctx->field->lt(_tmp_159,_v_233,_const_10); + _cond_3 = ctx->field->isTrue(_tmp_159); + while (_cond_3) { + + /* windows[i].out[0] ==> windows[i+1].in[0] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_235 = i + 0; + ctx->field->add(_tmp_160,_v_235,_const_11); + _offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */); + _offset_330 = _sigIdx_12 + 0*_sigSizes_12[1]; + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_236 = i + 0; + _offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1]; + _sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */); + _offset_333 = _sigIdx_13 + 0*_sigSizes_13[1]; + ctx->getSignal(_offset_332, _offset_333, _sigValue_5); + ctx->setSignal(_offset_329, _offset_330, _sigValue_5); + + /* windows[i].out[1] ==> windows[i+1].in[1] */ + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_237 = i + 0; + ctx->field->add(_tmp_161,_v_237,_const_12); + _offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */); + _offset_336 = _sigIdx_14 + 1*_sigSizes_14[1]; + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_238 = i + 0; + _offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1]; + _sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */); + _offset_339 = _sigIdx_15 + 1*_sigSizes_15[1]; + ctx->getSignal(_offset_338, _offset_339, _sigValue_6); + ctx->setSignal(_offset_335, _offset_336, _sigValue_6); + _v_239 = i + 0; + ctx->field->add(_tmp_162, _v_239, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_162, 1); + _v_240 = i + 0; + ctx->field->lt(_tmp_164,_v_240,_const_13); + _cond_3 = ctx->field->isTrue(_tmp_164); + } + + /* windows[nBlocks-1].out[0] ==> out[0] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_345 = _compIdx_11 + 62*_compSizes_11[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */); + _offset_346 = _sigIdx_16 + 0*_sigSizes_16[1]; + ctx->getSignal(_offset_345, _offset_346, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_347 = _sigIdx_17 + 0*_sigSizes_17[1]; + ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7); + + /* windows[nBlocks-1].out[1] ==> out[1] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_349 = _compIdx_12 + 62*_compSizes_12[1]; + _sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */); + _offset_350 = _sigIdx_18 + 1*_sigSizes_18[1]; + ctx->getSignal(_offset_349, _offset_350, _sigValue_8); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_351 = _sigIdx_19 + 1*_sigSizes_19[1]; + ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8); + + // Footer + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_138, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_140, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_141, 1); + ctx->freeBigInts(_num_12, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_143, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_144, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_145, 1); + ctx->freeBigInts(_tmp_147, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_num_15, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_148, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_149, 1); + ctx->freeBigInts(_tmp_150, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_151, 1); + ctx->freeBigInts(_num_18, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_152, 1); + ctx->freeBigInts(_tmp_153, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_tmp_154, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_155, 1); + ctx->freeBigInts(_tmp_156, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_157, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_num_27, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_159, 1); + ctx->freeBigInts(_const_11, 1); + ctx->freeBigInts(_tmp_160, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_const_12, 1); + ctx->freeBigInts(_tmp_161, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_tmp_162, 1); + ctx->freeBigInts(_const_13, 1); + ctx->freeBigInts(_tmp_164, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); +} + +/* +EscalarMul +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +n=250 +*/ +void EscalarMul_013c1dd4c0cce6a8(Circom_CalcWit *ctx) { + // Header + PBigInt _num_4 = ctx->allocBigInts(1); + int _compIdx; + Circom_Sizes _compSizes; + int _offset_266; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_268; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_271; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_138 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + PBigInt _v_205; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_140 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "250", 10); + PBigInt _tmp_141 = ctx->allocBigInts(1); + int _compIdx_1; + Circom_Sizes _compSizes_1; + int _offset_279; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_208; + int _offset_281; + PBigInt _num_12 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes_2; + int _offset_283; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_210; + int _offset_285; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_212; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "0", 10); + PBigInt _tmp_143 = ctx->allocBigInts(1); + int _offset_288; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_213; + PBigInt _tmp_144 = ctx->allocBigInts(1); + PBigInt _v_214; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "4", 10); + PBigInt _tmp_145 = ctx->allocBigInts(1); + PBigInt _tmp_147 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond_1; + PBigInt _num_15 = ctx->allocBigInts(1); + PBigInt _v_218; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "4", 10); + PBigInt _tmp_148 = ctx->allocBigInts(1); + int _cond_2; + PBigInt _v_219; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "4", 10); + PBigInt _tmp_149 = ctx->allocBigInts(1); + PBigInt _v_220; + PBigInt _tmp_150 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "250", 10); + PBigInt _tmp_151 = ctx->allocBigInts(1); + int _compIdx_3; + Circom_Sizes _compSizes_3; + PBigInt _v_222; + int _offset_302; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_223; + int _offset_304; + PBigInt _num_18 = ctx->allocBigInts(1); + int _compIdx_4; + Circom_Sizes _compSizes_4; + PBigInt _v_224; + int _offset_306; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + PBigInt _v_225; + int _offset_308; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + PBigInt _v_226; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "4", 10); + PBigInt _tmp_152 = ctx->allocBigInts(1); + PBigInt _v_227; + PBigInt _tmp_153 = ctx->allocBigInts(1); + int _offset_311; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _v_228; + PBigInt _tmp_154 = ctx->allocBigInts(1); + PBigInt _v_229; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "4", 10); + PBigInt _tmp_155 = ctx->allocBigInts(1); + PBigInt _v_230; + PBigInt _tmp_156 = ctx->allocBigInts(1); + PBigInt _v_231; + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "63", 10); + PBigInt _tmp_157 = ctx->allocBigInts(1); + int _compIdx_5; + Circom_Sizes _compSizes_5; + int _offset_319; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_320; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_321; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + Circom_Sizes _compSizes_6; + int _offset_322; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_323; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_324; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _num_27 = ctx->allocBigInts(1); + PBigInt _v_233; + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "62", 10); + PBigInt _tmp_159 = ctx->allocBigInts(1); + int _cond_3; + int _compIdx_7; + Circom_Sizes _compSizes_7; + PBigInt _v_235; + PBigInt _const_11; + _const_11 = ctx->allocBigInts(1); + mpz_set_str(_const_11[0], "1", 10); + PBigInt _tmp_160 = ctx->allocBigInts(1); + int _offset_329; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_330; + int _compIdx_8; + Circom_Sizes _compSizes_8; + PBigInt _v_236; + int _offset_332; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_333; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_9; + Circom_Sizes _compSizes_9; + PBigInt _v_237; + PBigInt _const_12; + _const_12 = ctx->allocBigInts(1); + mpz_set_str(_const_12[0], "1", 10); + PBigInt _tmp_161 = ctx->allocBigInts(1); + int _offset_335; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_336; + int _compIdx_10; + Circom_Sizes _compSizes_10; + PBigInt _v_238; + int _offset_338; + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_339; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _v_239; + PBigInt _tmp_162 = ctx->allocBigInts(1); + PBigInt _v_240; + PBigInt _const_13; + _const_13 = ctx->allocBigInts(1); + mpz_set_str(_const_13[0], "62", 10); + PBigInt _tmp_164 = ctx->allocBigInts(1); + int _compIdx_11; + Circom_Sizes _compSizes_11; + int _offset_345; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_346; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_347; + int _compIdx_12; + Circom_Sizes _compSizes_12; + int _offset_349; + int _sigIdx_18; + Circom_Sizes _sigSizes_18; + int _offset_350; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _sigIdx_19; + Circom_Sizes _sigSizes_19; + int _offset_351; + + + /* signal input in[n] */ + + /* signal input inp[2] */ + + /* signal output out[2] */ + + /* var nBlocks = ((n-1)>>2)+1 */ + + /* var i */ + + /* var j */ + + /* component windows[nBlocks] */ + + /* for (i=0,ilog(_num_4); + /* for (i=0,i= n) */ + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_266 = _compIdx + 0*_compSizes[1]; + _sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */); + _sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */); + _offset_268 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_271 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_271, _sigValue); + ctx->setSignal(_offset_266, _offset_268, _sigValue); + mpz_set_str(_tmp_138[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_138); + while (_cond) { + + /* if (i*4+j >= n) */ + _v_205 = j + 0; + ctx->field->add(_tmp_140,_const,_v_205); + ctx->field->geq(_tmp_141,_tmp_140,_const_1); + if (ctx->field->isTrue(_tmp_141)) { + + /* windows[i].sel[j] <== 0 */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_279 = _compIdx_1 + 0*_compSizes_1[1]; + _sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */); + _v_208 = j + 0; + _offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1]; + mpz_set_str(_num_12[0], "0", 10); + ctx->setSignal(_offset_279, _offset_281, _num_12); + } else { + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_283 = _compIdx_2 + 0*_compSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */); + _v_210 = j + 0; + _offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1]; + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_212 = j + 0; + ctx->field->add(_tmp_143,_const_2,_v_212); + _offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1); + ctx->setSignal(_offset_283, _offset_285, _sigValue_1); + } + _v_213 = j + 0; + ctx->field->add(_tmp_144, _v_213, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_144, 1); + _v_214 = j + 0; + ctx->field->lt(_tmp_145,_v_214,_const_3); + _cond = ctx->field->isTrue(_tmp_145); + } + mpz_set_str(_tmp_147[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond_1 = ctx->field->isTrue(_tmp_147); + while (_cond_1) { + + /* for (j=0,j<4,j++) */ + mpz_set_str(_num_15[0], "0", 10); + ctx->field->copyn(j, _num_15, 1); + _v_218 = j + 0; + ctx->field->lt(_tmp_148,_v_218,_const_4); + _cond_2 = ctx->field->isTrue(_tmp_148); + while (_cond_2) { + + /* if (i*4+j >= n) */ + _v_219 = i + 0; + ctx->field->mul(_tmp_149,_v_219,_const_5); + _v_220 = j + 0; + ctx->field->add(_tmp_150,_tmp_149,_v_220); + ctx->field->geq(_tmp_151,_tmp_150,_const_6); + if (ctx->field->isTrue(_tmp_151)) { + + /* windows[i].sel[j] <== 0 */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_222 = i + 0; + _offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1]; + _sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */); + _v_223 = j + 0; + _offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1]; + mpz_set_str(_num_18[0], "0", 10); + ctx->setSignal(_offset_302, _offset_304, _num_18); + } else { + + /* windows[i].sel[j] <== in[i*4+j] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_224 = i + 0; + _offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */); + _v_225 = j + 0; + _offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1]; + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_226 = i + 0; + ctx->field->mul(_tmp_152,_v_226,_const_7); + _v_227 = j + 0; + ctx->field->add(_tmp_153,_tmp_152,_v_227); + _offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2); + ctx->setSignal(_offset_306, _offset_308, _sigValue_2); + } + _v_228 = j + 0; + ctx->field->add(_tmp_154, _v_228, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_154, 1); + _v_229 = j + 0; + ctx->field->lt(_tmp_155,_v_229,_const_8); + _cond_2 = ctx->field->isTrue(_tmp_155); + } + _v_230 = i + 0; + ctx->field->add(_tmp_156, _v_230, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_156, 1); + _v_231 = i + 0; + ctx->field->lt(_tmp_157,_v_231,_const_9); + _cond_1 = ctx->field->isTrue(_tmp_157); + } + + /* windows[0].in[0] <== inp[0] */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_319 = _compIdx_5 + 0*_compSizes_5[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */); + _offset_320 = _sigIdx_8 + 0*_sigSizes_8[1]; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _offset_321 = _sigIdx_9 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3); + ctx->setSignal(_offset_319, _offset_320, _sigValue_3); + + /* windows[0].in[1] <== inp[1] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_322 = _compIdx_6 + 0*_compSizes_6[1]; + _sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */); + _offset_323 = _sigIdx_10 + 1*_sigSizes_10[1]; + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); + _offset_324 = _sigIdx_11 + 1*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4); + ctx->setSignal(_offset_322, _offset_323, _sigValue_4); + + /* for (i=0,ifield->copyn(i, _num_27, 1); + _v_233 = i + 0; + ctx->field->lt(_tmp_159,_v_233,_const_10); + _cond_3 = ctx->field->isTrue(_tmp_159); + while (_cond_3) { + + /* windows[i].out[0] ==> windows[i+1].in[0] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_235 = i + 0; + ctx->field->add(_tmp_160,_v_235,_const_11); + _offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */); + _offset_330 = _sigIdx_12 + 0*_sigSizes_12[1]; + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_236 = i + 0; + _offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1]; + _sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */); + _offset_333 = _sigIdx_13 + 0*_sigSizes_13[1]; + ctx->getSignal(_offset_332, _offset_333, _sigValue_5); + ctx->setSignal(_offset_329, _offset_330, _sigValue_5); + + /* windows[i].out[1] ==> windows[i+1].in[1] */ + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_237 = i + 0; + ctx->field->add(_tmp_161,_v_237,_const_12); + _offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */); + _offset_336 = _sigIdx_14 + 1*_sigSizes_14[1]; + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_238 = i + 0; + _offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1]; + _sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */); + _offset_339 = _sigIdx_15 + 1*_sigSizes_15[1]; + ctx->getSignal(_offset_338, _offset_339, _sigValue_6); + ctx->setSignal(_offset_335, _offset_336, _sigValue_6); + _v_239 = i + 0; + ctx->field->add(_tmp_162, _v_239, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_162, 1); + _v_240 = i + 0; + ctx->field->lt(_tmp_164,_v_240,_const_13); + _cond_3 = ctx->field->isTrue(_tmp_164); + } + + /* windows[nBlocks-1].out[0] ==> out[0] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_345 = _compIdx_11 + 62*_compSizes_11[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */); + _offset_346 = _sigIdx_16 + 0*_sigSizes_16[1]; + ctx->getSignal(_offset_345, _offset_346, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_347 = _sigIdx_17 + 0*_sigSizes_17[1]; + ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7); + + /* windows[nBlocks-1].out[1] ==> out[1] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_349 = _compIdx_12 + 62*_compSizes_12[1]; + _sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */); + _offset_350 = _sigIdx_18 + 1*_sigSizes_18[1]; + ctx->getSignal(_offset_349, _offset_350, _sigValue_8); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_351 = _sigIdx_19 + 1*_sigSizes_19[1]; + ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8); + + // Footer + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_138, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_140, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_141, 1); + ctx->freeBigInts(_num_12, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_143, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_144, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_145, 1); + ctx->freeBigInts(_tmp_147, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_num_15, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_148, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_149, 1); + ctx->freeBigInts(_tmp_150, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_151, 1); + ctx->freeBigInts(_num_18, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_152, 1); + ctx->freeBigInts(_tmp_153, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_tmp_154, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_155, 1); + ctx->freeBigInts(_tmp_156, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_157, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_num_27, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_159, 1); + ctx->freeBigInts(_const_11, 1); + ctx->freeBigInts(_tmp_160, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_const_12, 1); + ctx->freeBigInts(_tmp_161, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_tmp_162, 1); + ctx->freeBigInts(_const_13, 1); + ctx->freeBigInts(_tmp_164, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=0 +*/ +void EscalarMulWindow_8a817f91638c8624(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); + mpz_set_str(table[3], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); + mpz_set_str(table[4], "15150626452948049369558454258951944998473656205066551147085410927099501966490", 10); + mpz_set_str(table[5], "21657770039429068954764921491703322863664647353875839647666513628925174100369", 10); + mpz_set_str(table[6], "12375647682928562990039117402012071427352325391824695643601018682085452638238", 10); + mpz_set_str(table[7], "9696868317396279261837202143848861924577319768494794671291368604054247291948", 10); + mpz_set_str(table[8], "3130380021407515466435960164775738901895857113899159372434882655061141364448", 10); + mpz_set_str(table[9], "18102228934286149264792705129260071916752899315308330715218539844598422882310", 10); + mpz_set_str(table[10], "8551445319073033375759400485987251808645632829495239854551666892161995946634", 10); + mpz_set_str(table[11], "13715625823309341099903685995231383734500240362885643328284543897544381196961", 10); + mpz_set_str(table[12], "1071048883351535085908093037304866435256934156776904846490118217237361098737", 10); + mpz_set_str(table[13], "20854215571198841364829663267379838853490562481900760695333560192054323741723", 10); + mpz_set_str(table[14], "451742354061234398202942031427425541585568519587278011340406631715764214869", 10); + mpz_set_str(table[15], "7008953828174351950820007899838518061264921925985394872864563300390722582167", 10); + mpz_set_str(table[16], "18682226731572883983941560819888138208429437649272924591500726355772361327632", 10); + mpz_set_str(table[17], "14160273483664597213372238267221229171717604664820533120344803077042384771915", 10); + mpz_set_str(table[18], "18222732225423011121551971127588778239571766638073592878070311814365350641293", 10); + mpz_set_str(table[19], "13284867948681397133337172135467128366145371196968663290890751743231551931878", 10); + mpz_set_str(table[20], "14160185613158107798945126702461707263750732592693844435344327640031183275191", 10); + mpz_set_str(table[21], "11830396168076579692702235358699790800475074014009773686686326060660146786379", 10); + mpz_set_str(table[22], "3326483685855382848182588769539637112000666370396534958047548918750324603222", 10); + mpz_set_str(table[23], "16878873365676175365094896795813029886044607049292897108776152812655455545976", 10); + mpz_set_str(table[24], "13907843177061409552237236896137033893405437763125042864904283357224378465002", 10); + mpz_set_str(table[25], "8600752263405888453232384867315826708424372752559981680127649623750881631521", 10); + mpz_set_str(table[26], "691645234475582606646247678040476724837141568943984905122797935509348392353", 10); + mpz_set_str(table[27], "2377906462163329191225978849192141728635064580835916630401887266320251299799", 10); + mpz_set_str(table[28], "15319480474450861398156325467777956436693656940155642034815349827789193495632", 10); + mpz_set_str(table[29], "6089164252766459118514096883183711304294501281632971542887946331593610196441", 10); + mpz_set_str(table[30], "10476146512781846234997263827806045286680090602876753777393063096484049772152", 10); + mpz_set_str(table[31], "3479033062979676359862906038951730311469771023590116324970835153503819282935", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=1 +*/ +void EscalarMulWindow_8a818091638c87d7(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12450335349329341951046673370985198995222494147242666947722075876342898395656", 10); + mpz_set_str(table[3], "9951734758650769346072820441375790271574478261506572354164134999444817046690", 10); + mpz_set_str(table[4], "19288661644384445567273764070445136288401533258430891225396664309826062816922", 10); + mpz_set_str(table[5], "454717370483229603965078433113457308346330984244000560668425630921663575610", 10); + mpz_set_str(table[6], "11036550395057651695234945879842344316734685308809511563725205116871198726415", 10); + mpz_set_str(table[7], "6686916819114264470862404866673814030449184260418962781299313931714774958060", 10); + mpz_set_str(table[8], "11584943071743990469508450940068622113650840004743485388763638062519996976262", 10); + mpz_set_str(table[9], "2522205361323446980614269252690299877339317999520959868458265302988689726558", 10); + mpz_set_str(table[10], "8862984334279247389113661975279196551279284945293462186056309366789662542073", 10); + mpz_set_str(table[11], "15395361587300412106702374789905586594677297428929197922286281992041217586471", 10); + mpz_set_str(table[12], "1931730024949759486022373864868442812837862161882630865815922811946342189368", 10); + mpz_set_str(table[13], "2837709313580552424458270943701300651891214069392024997961926106090207487040", 10); + mpz_set_str(table[14], "18713933290215210467667666175419441778784903473223318601715795623470468893312", 10); + mpz_set_str(table[15], "15912943479108146633148323572548567749167211598791020854575103168570576406641", 10); + mpz_set_str(table[16], "3371330846548270252366274792614979796607657190522123380466170276619028673364", 10); + mpz_set_str(table[17], "20118851005658061473865583030477744410974510198771734020012411384826972467628", 10); + mpz_set_str(table[18], "20709849873119480107722994252823030617564606162682289843354773199114126432181", 10); + mpz_set_str(table[19], "11147937764687065541845952286338417174555516372389007686854433431785989855320", 10); + mpz_set_str(table[20], "20612342549336571233586824192667026435576965443231669760489093690131842758093", 10); + mpz_set_str(table[21], "9036856941211088274038458568357979705491504773280274233521497994979112550438", 10); + mpz_set_str(table[22], "480590051872373936783058017174694527804992021578591277936264925023938790998", 10); + mpz_set_str(table[23], "2698124413369660851243824606305933154363836527909961862981550117290381348488", 10); + mpz_set_str(table[24], "8506910167507337132174870917683467139024088663894919990248817817475205504033", 10); + mpz_set_str(table[25], "8554604844761436393257862151218354239170681209260064002339003071598032229201", 10); + mpz_set_str(table[26], "6568114972191142651303903458372393214875879773896760094673312697224863241834", 10); + mpz_set_str(table[27], "6022617941898614236743457388428151699027252864984103881453208601076128436750", 10); + mpz_set_str(table[28], "17904639434028839898854823561909720619694932433031819449561382276651823544685", 10); + mpz_set_str(table[29], "12639124190122096702065279211096375988549941348271364477539292011603099800289", 10); + mpz_set_str(table[30], "12039858934261588004400698759124361551292695794647935041975177089639743130014", 10); + mpz_set_str(table[31], "10517658053139539508761071910886478401086580256794382403111190159835923441057", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=2 +*/ +void EscalarMulWindow_8a818191638c898a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "7045697552349898261743966576765076077631482247492318530240889472256588204028", 10); + mpz_set_str(table[3], "3395600428544429233510781819124998700741425532230423692905830980889097341765", 10); + mpz_set_str(table[4], "6744549111917530764513512331120487629893685943837744536663616011599465271187", 10); + mpz_set_str(table[5], "10883183306544818491710667232582222974396909896870947271118527221832239568413", 10); + mpz_set_str(table[6], "9244276130453639577883773738976340753082221103199659084800755483749918131527", 10); + mpz_set_str(table[7], "6309158401731278546929483611199073290102324720279201651395299984768656633602", 10); + mpz_set_str(table[8], "18227663628445682323588752862251736106950133905035517599142834318656635672008", 10); + mpz_set_str(table[9], "15968707818136024145730173609960933090598188161418032518329451945197694785985", 10); + mpz_set_str(table[10], "19790161925513641826173521251384042096462565971113368646790449092272638453440", 10); + mpz_set_str(table[11], "18951820515407881634811076974479241881307945078262723139621621617846859199313", 10); + mpz_set_str(table[12], "13487050806667939269092637257391470973644431334875501423021305009427050716809", 10); + mpz_set_str(table[13], "12923547377386110192128869129856285188526426572837523038386982523330544314397", 10); + mpz_set_str(table[14], "21595003021079211179013842845440988224380451106449478764549685302177957739947", 10); + mpz_set_str(table[15], "2987285477165593498047221190363008617921622332189886015935950416396747649655", 10); + mpz_set_str(table[16], "17303634213618199102056016372664412129974431859446453359105581009608817565571", 10); + mpz_set_str(table[17], "4450561540112488104624518245870286278550351737495215477889950501752432376996", 10); + mpz_set_str(table[18], "3141434226421849222585969678304762759887991737941353354470224912622168084115", 10); + mpz_set_str(table[19], "12728396654376398892005506962757163454896562186292741787142186040205618719757", 10); + mpz_set_str(table[20], "9708925788058813188621214393567192686293251962885674485685327950703484002553", 10); + mpz_set_str(table[21], "16420582083000958736719513297067794235930227358340173099890447851853731872661", 10); + mpz_set_str(table[22], "8426171837936956756584231006242663573899977959855831777118983630418281594454", 10); + mpz_set_str(table[23], "21388114408852548357590937768281753554991961266563093834359119510507376442369", 10); + mpz_set_str(table[24], "7190802720337575053729990306351192292605145136761733161542487626494418221101", 10); + mpz_set_str(table[25], "15318743785409755455502646372484385216424688000540061704513269039598380428474", 10); + mpz_set_str(table[26], "18923683823879719599598708766579911888522321064235431411188398308336104365686", 10); + mpz_set_str(table[27], "20992568491574006565936670738179100584028276810392805245209584525954307542318", 10); + mpz_set_str(table[28], "19300331083157559470280216349912136259644153736182668201472510882275436089814", 10); + mpz_set_str(table[29], "6033956060419111513024628634700765726136642761460226434669674407924867833274", 10); + mpz_set_str(table[30], "19716255736785937137183198048246845793934322373972171133044602969842516937714", 10); + mpz_set_str(table[31], "10080336237463613513581482521894656187906305499367291706009680418102193762660", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=3 +*/ +void EscalarMulWindow_8a818291638c8b3d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "10299499580313288351648961258372184361356275910507094340865623417151085556338", 10); + mpz_set_str(table[3], "9266467220996834961927872985896756998782524262982604694296119855882960023673", 10); + mpz_set_str(table[4], "11278840426758671324186407245785960482558955431814194534244066083912343084227", 10); + mpz_set_str(table[5], "2180566018272958353843165270558616027185910742538683657057390264471380585940", 10); + mpz_set_str(table[6], "215386845435812979771368409990753763520312920616630494958085743901823917800", 10); + mpz_set_str(table[7], "20407592108330400213379184310602975524691762015018801167152885076939923197266", 10); + mpz_set_str(table[8], "17529622850650575122288637014439737838354836376247976403583484982429641171584", 10); + mpz_set_str(table[9], "12455268132672690277725610326071579764591886067575992196312484188216927540619", 10); + mpz_set_str(table[10], "15188152099486947620269392050023940852211965590522310494001669288153455445916", 10); + mpz_set_str(table[11], "16643644469936369507016635388414064434540207698803410127096478208351815132679", 10); + mpz_set_str(table[12], "8178132823820298648421993186324434673405971480934619017343528184894419827335", 10); + mpz_set_str(table[13], "14782298368407909246033862767035319927800423265218646860423700734647085090760", 10); + mpz_set_str(table[14], "16315046440322011462423889148453525506600915057243039875408831302480406347036", 10); + mpz_set_str(table[15], "11081031008295030156345410714660120182935106059911302280322724839366319120844", 10); + mpz_set_str(table[16], "9727719397303946402023174236663500405972296934381725453257310851467439253642", 10); + mpz_set_str(table[17], "9273145391697533576939976503752079006823997138797717025042581388890194138374", 10); + mpz_set_str(table[18], "7284954265501748654567633026783041508150147023538928043692704712804217808340", 10); + mpz_set_str(table[19], "5188552586189946101151630268070618252715222420305958317789629045279543150116", 10); + mpz_set_str(table[20], "10785941615172681349444165278918869766333016424678843594832313471120540730478", 10); + mpz_set_str(table[21], "5932771768255819196486763330142236670298720914165226901554418807229936846474", 10); + mpz_set_str(table[22], "2028721811486633247308830142589029331529082029687419498839147830840323984363", 10); + mpz_set_str(table[23], "3017857322436314880341693098842398234815284060974563745722139842760120971581", 10); + mpz_set_str(table[24], "18296259486767382700015511503733209798422188966251188911514604063029222028546", 10); + mpz_set_str(table[25], "15180141133736660652107717504927632409749020733332496982418082413845344259403", 10); + mpz_set_str(table[26], "21726279678732560769833680642948162345979007579422305294648581199670674279821", 10); + mpz_set_str(table[27], "20841398550339602351135248720837985529268757070690515168116806731996799790138", 10); + mpz_set_str(table[28], "21282638032408430997306033364705899080528942581677852490145502518808933725567", 10); + mpz_set_str(table[29], "13903620002574949602329475381210150875367865253860756684620613597151406554467", 10); + mpz_set_str(table[30], "11609675030878572557983311167493301410885694396865259923714699971882730337193", 10); + mpz_set_str(table[31], "641323983519843603430479660621578922121635387933802210359009390561663899453", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=4 +*/ +void EscalarMulWindow_8a817b91638c7f58(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4152637325631936004620374572177627550442342730547146361150006894931391929814", 10); + mpz_set_str(table[3], "2180367166602885287952962653941971483151584153956761815327641890395546522883", 10); + mpz_set_str(table[4], "17080322430714894370085335406415912347921332943892515519091272280414189987214", 10); + mpz_set_str(table[5], "8494574418412741183111083814796810418721782459448593747717027920516647175700", 10); + mpz_set_str(table[6], "17728021599237737787197631959143443552148617809674045394361671154284354186242", 10); + mpz_set_str(table[7], "9267678837483990782127158138507503647206006042119316230564850934588871651810", 10); + mpz_set_str(table[8], "15160890345615204326166092626214588149676637139644790189601178926476813716358", 10); + mpz_set_str(table[9], "11374387429070567029034484634553768966914308691474791950791645253730682709009", 10); + mpz_set_str(table[10], "10678466208351502397877880528021155331277793487192349956740757112468444707849", 10); + mpz_set_str(table[11], "8190655992869345245045359828215583356622306673546575090446072621991944775429", 10); + mpz_set_str(table[12], "17762181337476536955590643741916820380461675457054832411733021785061810440533", 10); + mpz_set_str(table[13], "20451970925628477628286894751575162727823345451099151964964174136280858943261", 10); + mpz_set_str(table[14], "13292833921138496806187651666335498027312372687909414228778945993380861428942", 10); + mpz_set_str(table[15], "10487170910013047897637679529351943901530567046368452227558237974249088811619", 10); + mpz_set_str(table[16], "20759698136517597571684798693842032656828405219206888345138651470913002897286", 10); + mpz_set_str(table[17], "16058819041904626730663137648530951263426680277649947229782256328297555532981", 10); + mpz_set_str(table[18], "13320523481006562893020500681642189554952463035370425252039716356578464963045", 10); + mpz_set_str(table[19], "8799514829565047209126067817437375895787209352159804960101618242161839525951", 10); + mpz_set_str(table[20], "5866468963637476981400985857527044765867964812856846323487892495456443741777", 10); + mpz_set_str(table[21], "401553102066206944718793182019809421052564381627968135878126448667394086484", 10); + mpz_set_str(table[22], "2716411494364331665129154806933170438183297068054907180270986518830578042712", 10); + mpz_set_str(table[23], "18439592130459086491266800132296802694103730000695016079581620779245803665472", 10); + mpz_set_str(table[24], "10936946011006937891444595577824545764470199547488998946086523659824401983007", 10); + mpz_set_str(table[25], "19901433082800065174799376682234529651901940793106941153214111754453162322508", 10); + mpz_set_str(table[26], "13706928738199343026920573380236589493583670491143152449984889204007175138678", 10); + mpz_set_str(table[27], "6624239682483323245003772292813775827295960014778625321845307519288526880291", 10); + mpz_set_str(table[28], "2596288971144515943757696290543687200323089740599685000991244283938365997270", 10); + mpz_set_str(table[29], "13700075398258237145901186732874668417282240332802293950518984212255553187508", 10); + mpz_set_str(table[30], "7276525175456025197755876167641478885798347632114620699422652394291294023406", 10); + mpz_set_str(table[31], "13792453969170265798597018249025953963597948938469190276132321943433124083845", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=5 +*/ +void EscalarMulWindow_8a817c91638c810b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "10059471356981080526161248310431238683905879239618874867630614905951922554524", 10); + mpz_set_str(table[3], "2893219258903194185350877973287422615284317574227301248398827645216092040124", 10); + mpz_set_str(table[4], "7955688620811353537502456371741345360010174295430488337082479317466754374641", 10); + mpz_set_str(table[5], "1552479587286910636067135316997525992163242693116944777924976792867265673234", 10); + mpz_set_str(table[6], "4076752434376815976672943629774991129727632722349304506829384779336306655967", 10); + mpz_set_str(table[7], "14156394013880982635009488035283281586885725913140497270917348481118569169555", 10); + mpz_set_str(table[8], "12277712837538028259413714493049635386935447875583313929221891977691317215420", 10); + mpz_set_str(table[9], "347082090294630958999344374086054629628043379985548264666637705321047972062", 10); + mpz_set_str(table[10], "9169985224880045685902862270400314197219835660697585696719219583921506497896", 10); + mpz_set_str(table[11], "2129375120322868027710690230696050562503615089761456135973356178075539108353", 10); + mpz_set_str(table[12], "4735709784947571026584600363686132054784294573927568774792208273415890571854", 10); + mpz_set_str(table[13], "1356360814089129098026853266681803599235409327843206313454889960114721040615", 10); + mpz_set_str(table[14], "11110136120351033016809650067584456424031521001483843267966391083954699894567", 10); + mpz_set_str(table[15], "10678309826727527905695072767024982194005595346260724019307182267806309842511", 10); + mpz_set_str(table[16], "17949059661190708618242018953109839994685894956236807772121590081765534153240", 10); + mpz_set_str(table[17], "18512350870077032292031574152764607530023778042410022653599994942486346526940", 10); + mpz_set_str(table[18], "309250638089897597225380749328145384131390904717859175953395013759107326860", 10); + mpz_set_str(table[19], "6881906736513386327385824245964033360827939339794911899560753901232820158992", 10); + mpz_set_str(table[20], "15693694149102271963649517494810630420111979369528801952689672462869233913819", 10); + mpz_set_str(table[21], "14850959645647438773263301097027004240286323742991400428766062614208557633805", 10); + mpz_set_str(table[22], "10508269604303515446429184177367617809863720311655641405406090551242461640548", 10); + mpz_set_str(table[23], "13835558159627105067527834001068856785443803703769379992201578489656910931938", 10); + mpz_set_str(table[24], "16446138449439094147266330807719036578121180036988374809688364988157885458804", 10); + mpz_set_str(table[25], "842885020979433634997456604456132473705102342538041421936252105952545460182", 10); + mpz_set_str(table[26], "5402387649315196401476528831700695288422587804949701721078113803037816700568", 10); + mpz_set_str(table[27], "18954463848378153626407256721564024459724384275474304584054102951285145180121", 10); + mpz_set_str(table[28], "18687290318246424046658404736952875314563619805513613694304987465542576775030", 10); + mpz_set_str(table[29], "10328927280537345889935307985540911534621045190440081255660374119784055050825", 10); + mpz_set_str(table[30], "1364906674338461585656434739107222827428022180855057060418931389021020199648", 10); + mpz_set_str(table[31], "1813852328577833166873790138854991737348346378766433059621698765008781073762", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=6 +*/ +void EscalarMulWindow_8a817d91638c82be(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6696924227194880599213411252496702532588707496216166438794048914046613861251", 10); + mpz_set_str(table[3], "4582991448152463823047001667952825587496013160285877022547286223286690499209", 10); + mpz_set_str(table[4], "7913817789053702567228757915143867322337287975194114128817460553462139932642", 10); + mpz_set_str(table[5], "7036385166032666440237714017827254061958169005584911850628710951649014222296", 10); + mpz_set_str(table[6], "9469355211527074219420241360733803585653229140457284765010162520939095632790", 10); + mpz_set_str(table[7], "12807013954329784456536831758295815293345625504234061413707283538626744152070", 10); + mpz_set_str(table[8], "11632888711758463757298576569782447197685100413818678716919070764097162224518", 10); + mpz_set_str(table[9], "8161402736996445649697452071607849971538046900561021646104181668783454772688", 10); + mpz_set_str(table[10], "20085116934187058842911275196176217801258351861285263904565203190322984514161", 10); + mpz_set_str(table[11], "15084641497000452022929002528992190844267865333921041163628790717191570819600", 10); + mpz_set_str(table[12], "4601694861190311597213771397743548058400010202974248033338216641255844991066", 10); + mpz_set_str(table[13], "17232201236512944377112575168094403944070558811116318274904140246175644194762", 10); + mpz_set_str(table[14], "7813231740184032615735414864659503190895979676720562745632579495298679726579", 10); + mpz_set_str(table[15], "3660919817188380268430242452249693618001631207503673980428892176343926918974", 10); + mpz_set_str(table[16], "10458087548997809852151692969375762626326308930367907121204344506582106226522", 10); + mpz_set_str(table[17], "10092952565093341975387585887077362479531342081004807551176088631139596391390", 10); + mpz_set_str(table[18], "10410805271360662804564177092824947153052731972330045769052296785843573755308", 10); + mpz_set_str(table[19], "10184554845273300794471160283775900976483776102785799278287154448466003906961", 10); + mpz_set_str(table[20], "7863345532039581963597155222390714576813044449694149912972526081533432780186", 10); + mpz_set_str(table[21], "3472528823549877129962329001613282308877458799069109356073868564811626993060", 10); + mpz_set_str(table[22], "1879172298402130618776736833191662822721427345494123786055320389554063592778", 10); + mpz_set_str(table[23], "17596875527836912880378640066645254223645475679543471698138050019448508665523", 10); + mpz_set_str(table[24], "10896586639510202270166905811852720926404979591478172310284490856284228939325", 10); + mpz_set_str(table[25], "20419355217121322212632570642891834919613783447152622251213364180805924444119", 10); + mpz_set_str(table[26], "15792356390499443346936821474600266270596533763281151634845043786540149049987", 10); + mpz_set_str(table[27], "21284823598750804978716981081597932436486136876248122410024870449480994659627", 10); + mpz_set_str(table[28], "14436939288590862471438099071760394876959844576112487944052265738246439305903", 10); + mpz_set_str(table[29], "17027592766450782707182617434964390901664505248342575660291535599785038453407", 10); + mpz_set_str(table[30], "14874956003623327854605831627331487499357528479854928757336712078349160565284", 10); + mpz_set_str(table[31], "11533494496164056110911632202226183076948644848618805512291485177899023548301", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=7 +*/ +void EscalarMulWindow_8a817e91638c8471(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18391202230277166150190352475756632650774606644341512870017380816737002767028", 10); + mpz_set_str(table[3], "18710055256634775773116987174919809067587720956975115175369267430633625213067", 10); + mpz_set_str(table[4], "14778458914017941207129752308841192179807874219218045182415770357199972826613", 10); + mpz_set_str(table[5], "3425436024629949830749920214649525143076612409459562222613982846650118284684", 10); + mpz_set_str(table[6], "8143077758693209412905125140226887050652407780210736990534800217833536409512", 10); + mpz_set_str(table[7], "237505014231011999664820876893177676392206921106485191752137176516823119455", 10); + mpz_set_str(table[8], "21286695644914650826227005775384111743699352138127585452386892073162616242676", 10); + mpz_set_str(table[9], "16275297493048463522435789944039046152795453447530692541766470345251903814920", 10); + mpz_set_str(table[10], "5534407414098019921741548441009649919786948715587234534851751865620200059513", 10); + mpz_set_str(table[11], "17583783309789499331596931276739842210477446390922102133826713255679850961003", 10); + mpz_set_str(table[12], "10429362291381891675156024305697777333590711164789159993595868881740508768966", 10); + mpz_set_str(table[13], "3606220552903413690428978603995277267515491833422158562841893817985869925859", 10); + mpz_set_str(table[14], "1001057897919264913898056752999698513328670461115886374304687034763697867971", 10); + mpz_set_str(table[15], "11961826954032588591745697380610775802434702597428828622863524197168690192704", 10); + mpz_set_str(table[16], "21719300939210305969336098672434704978644727386282683375797180914132352647081", 10); + mpz_set_str(table[17], "20453261227160641682983540960072213023042543450742671631864688999932994522613", 10); + mpz_set_str(table[18], "6688983196951156663368010771635876014643306651412273525340890404677802990925", 10); + mpz_set_str(table[19], "4329154909589481026794874206365184995137307020487431828235471079255153097124", 10); + mpz_set_str(table[20], "20325703716097484328542721016811239537381679153530208986569993689407256022107", 10); + mpz_set_str(table[21], "17129805598995142684907479478577672063861620183999483700890055263589330374369", 10); + mpz_set_str(table[22], "17626867705954721998808081461454564919455319262600774701457347225857871402252", 10); + mpz_set_str(table[23], "6476877185714610927878101542892313487041395393552616927067505163129600889254", 10); + mpz_set_str(table[24], "14453563974743541630501009650505073017082333546432723218044789842310325612592", 10); + mpz_set_str(table[25], "16697636864004950106851433052186891762936466379440718045270640770134549628983", 10); + mpz_set_str(table[26], "16336674064314851614598481721706263435060040374841423735400910189293645280257", 10); + mpz_set_str(table[27], "8643211243739084707684167937814313951250086187718900960591235775032686826058", 10); + mpz_set_str(table[28], "7229789946143905262758593287001330902886040426051310686284434676444730461489", 10); + mpz_set_str(table[29], "19515735738256349212167994764047635285407275421276140212886542730371119812132", 10); + mpz_set_str(table[30], "1306200308139743373499206147170159234654094600717342494219942953142013964121", 10); + mpz_set_str(table[31], "14902929803127111256459071785248970670810887660129923405529827222127335396956", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=8 +*/ +void EscalarMulWindow_8a817791638c788c(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4888136755887548458736137558751290520252510159838688780934499339730661336887", 10); + mpz_set_str(table[3], "8045182454056122038334995490813076640902705577725505071179760811662775533287", 10); + mpz_set_str(table[4], "4707718335866205590821127522634187193893956013471850612191382701068690358110", 10); + mpz_set_str(table[5], "12616986710715852761430502133036506881381430082511453824810102320032285252420", 10); + mpz_set_str(table[6], "8474545829245280705438810607022100876485976341434114568447927952585072070096", 10); + mpz_set_str(table[7], "13257362948581236174493065293833589402318622435238077410808789863766025475596", 10); + mpz_set_str(table[8], "2284971236118159637795435604157963666497151957964113764944401766777791353243", 10); + mpz_set_str(table[9], "21295034208782650311864455974071790640311399176852592105237671419235475989836", 10); + mpz_set_str(table[10], "11337163204383659330318732546273292342109166814523743433003008693091772799617", 10); + mpz_set_str(table[11], "17372059106790278103966691675948566004139966205121679300419852859192599945222", 10); + mpz_set_str(table[12], "19174077617038844599562100614027325309645085302610884230842261135413647345264", 10); + mpz_set_str(table[13], "21812413513058204811359699655543922329822362339098083538977769446800088958694", 10); + mpz_set_str(table[14], "18379685254134779434206714344865833928571234289581223465904305008334467213227", 10); + mpz_set_str(table[15], "13977970906502195816767053426564182896465327159304171861273808073830560444852", 10); + mpz_set_str(table[16], "13913230509000240030418535763044623348995851945830856321470675781189941060270", 10); + mpz_set_str(table[17], "10704444671848051590686015586308748841660651630338942934797538287144904345222", 10); + mpz_set_str(table[18], "12306143812320135300291143616859322652369153919646756679335340762083853222688", 10); + mpz_set_str(table[19], "11215230859057581114602129078023821452246254660839798599005880420132997947349", 10); + mpz_set_str(table[20], "19949756785350024959941282901515649485325534245205679859231439243717522124403", 10); + mpz_set_str(table[21], "15911591928499127282066443519991156153110806473026639657579917467365534724988", 10); + mpz_set_str(table[22], "8567981818297665123860819607155467865529335698989977274239775073911444544930", 10); + mpz_set_str(table[23], "20994142232702052824908265107277127000680266832039291931249748306241787844791", 10); + mpz_set_str(table[24], "20686672495093347004626369122608156769123774114009290372048917304937904522885", 10); + mpz_set_str(table[25], "15178225316396866308378338582424637262447466085622109818180851173262809562837", 10); + mpz_set_str(table[26], "20700655209652843149305136845371051230645623647757487066289603661741658346467", 10); + mpz_set_str(table[27], "14595139838565171084145708418002338749266829368743709625855308558124863161120", 10); + mpz_set_str(table[28], "2642505462230357493978998294670651882384664314032710169461744708420848222272", 10); + mpz_set_str(table[29], "14006548708426651013908646882496035559246730330230393257394283183226384168497", 10); + mpz_set_str(table[30], "4823634301877161950052014962396374904828625331905947510450953591356916732342", 10); + mpz_set_str(table[31], "13978665686343081797529931728257642748657915225026950983809650871159942043616", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=9 +*/ +void EscalarMulWindow_8a817891638c7a3f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "14392666584016431061370266677995476241875374542231426119230651372149502582351", 10); + mpz_set_str(table[3], "66225971351226860555745322617284829458484282176684455868646629122675256444", 10); + mpz_set_str(table[4], "485199691192871257688115544311139959017759100528583874431916044885638397874", 10); + mpz_set_str(table[5], "9699938951644413178903993187150520256951040422157510278309597565671792849610", 10); + mpz_set_str(table[6], "2595607140210170261290628709835520141081633734713543652560415677738296555954", 10); + mpz_set_str(table[7], "9695332069813308406042561223596510643220316193295157119891417448538942943499", 10); + mpz_set_str(table[8], "1437917280108914885189724497466243283477490664582471879120892112128068082697", 10); + mpz_set_str(table[9], "15307433244740362820450471032555788262039487494048352243080829630606214655811", 10); + mpz_set_str(table[10], "855969964811906346010743263563452371648984806422553257966545336978471197059", 10); + mpz_set_str(table[11], "836181924930265617418971139619982716045130896685804294579114237671053490158", 10); + mpz_set_str(table[12], "4335450768929135102997782435994431198285892392070577465086986821369677100946", 10); + mpz_set_str(table[13], "12600323862045901795283092102095437359011105590455896668175414199754440213680", 10); + mpz_set_str(table[14], "21787759461957311942967012934978428987670145375006042105741286678276835580970", 10); + mpz_set_str(table[15], "17242090291245779401502371665121596674364645480000906589019619236088992868826", 10); + mpz_set_str(table[16], "12408800755104460517235188504357780681292564645180958147840010959619787066560", 10); + mpz_set_str(table[17], "16205369603740153520729740943167659313050557216102628692844498072917394003839", 10); + mpz_set_str(table[18], "6892738909474373874944861763143982325565511932540154035829883455117299421093", 10); + mpz_set_str(table[19], "1040755370900746605928411055724625378522990046881639817161339039817907068693", 10); + mpz_set_str(table[20], "15048455963139536655833063700714044628907986752734434884419211481829993831244", 10); + mpz_set_str(table[21], "2626660769740051470160271797832900916837394302051759656896564175629113945383", 10); + mpz_set_str(table[22], "16876977790832671002745762264253746289637891030470244132400743082513649244615", 10); + mpz_set_str(table[23], "1598394011433740560513193119540044467961903112334484885938744727873699132641", 10); + mpz_set_str(table[24], "9355195150709234577080554783149944158889458437204408531046409892945480646919", 10); + mpz_set_str(table[25], "16323162977104162845901600868001171425085795328591350810440376484407731185207", 10); + mpz_set_str(table[26], "19119686481324947128929259173521918520753225410928048551701130161791462454313", 10); + mpz_set_str(table[27], "5969827327422986316003420641296569332244415662231141979781463673457966942201", 10); + mpz_set_str(table[28], "7292083159810360742183767336957217851772607559079821447221078542221696197224", 10); + mpz_set_str(table[29], "11060060645561768633086255189035870067870470495567114078557414129042277936317", 10); + mpz_set_str(table[30], "747357122757882496462826560533366388757001439657389104774684800890404769423", 10); + mpz_set_str(table[31], "6217828469201264039076990047710929698750797266478292248089409259837920256735", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=10 +*/ +void EscalarMulWindow_e6955e0c27caed85(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "20361211142478617929322832251348360766371561505165322057813543895777653688807", 10); + mpz_set_str(table[3], "7720847332287658112391035368674462378880944025513946193241421401524560723374", 10); + mpz_set_str(table[4], "19836457202936052088053580821357357262299502604592150459440095339333515236997", 10); + mpz_set_str(table[5], "7989971350986700441512122750798828134102939565725340088235077429177142314696", 10); + mpz_set_str(table[6], "5093941028160539078398141203132019477309564551644167622249216114666581368694", 10); + mpz_set_str(table[7], "21622286600266773181786173872134891748536286083980403824274215251510798697816", 10); + mpz_set_str(table[8], "5341454683820540059886068752211480655549586158458781633093819459770248823563", 10); + mpz_set_str(table[9], "722084453313468124098012269031763291544030295440046192079097277830445294726", 10); + mpz_set_str(table[10], "12383787100751844934177772618313993803020585089264454200337093580737926886641", 10); + mpz_set_str(table[11], "11461096535276407173122835067709178917974375202402225745304896511090745058187", 10); + mpz_set_str(table[12], "14012431958774534026707918346344894245771690306135809328705061761298919899988", 10); + mpz_set_str(table[13], "5029393341094852930642926045997523554135247170389262246988649129264967832267", 10); + mpz_set_str(table[14], "19398195757550054940339194627375585634177280216479616823169872236721997129321", 10); + mpz_set_str(table[15], "9894925754866849782337688791752188178686065455775974100979256399479679534678", 10); + mpz_set_str(table[16], "13667518277431329867898208499282766533424487948939991189767908122942211817156", 10); + mpz_set_str(table[17], "17938371561404345797831935261950956431059634946086232408351558984452516087671", 10); + mpz_set_str(table[18], "11122000103090960950703254500957516254286139138773423732307093683729105953953", 10); + mpz_set_str(table[19], "19202935301740120381424849790833665310852282765012854305529238796681392353884", 10); + mpz_set_str(table[20], "19411643216740576041388070440636673354425023624279731275148447643470533176108", 10); + mpz_set_str(table[21], "17943406513113907697079800031621059187704226867382695473796304307147980548978", 10); + mpz_set_str(table[22], "2093472171194815147423313598724689865552536934700615244812202566868735165877", 10); + mpz_set_str(table[23], "217121898847118066968265343115284384382609494705235033397096191493220358680", 10); + mpz_set_str(table[24], "21730567621944329666740276746935641916756949876990540083416805095812473298511", 10); + mpz_set_str(table[25], "2742331690620053548929597484252332827485567535167060149256870274544281015069", 10); + mpz_set_str(table[26], "2265917002229290962037728573397694532981947172398479965202906048595835435904", 10); + mpz_set_str(table[27], "11896434941996349809268496612359605556183243453877202147139509958528614525099", 10); + mpz_set_str(table[28], "9851903387322129477802340563057521355334646777579058834816886344374028709183", 10); + mpz_set_str(table[29], "19664917765333760896588538992098112258300061269501383409550266721114664417869", 10); + mpz_set_str(table[30], "13557306798066104563543696608067587401751889285647949108849287625945991897160", 10); + mpz_set_str(table[31], "13201528537934914656108851035478997564257665545218852903604367843764289520553", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=11 +*/ +void EscalarMulWindow_e6955d0c27caebd2(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "21198307553188557840674416595861921102643943996644836140576710647837505121191", 10); + mpz_set_str(table[3], "8486897366735499578342411927300032398861749534106806748708254887195429814714", 10); + mpz_set_str(table[4], "11907183312356474599598395230603943849223699932826123897514352441828826549655", 10); + mpz_set_str(table[5], "115414612007510769997441890387686681299270578556303120460163008793867737300", 10); + mpz_set_str(table[6], "12008164561134226667166915483475445214894491640168864847501109146314404037016", 10); + mpz_set_str(table[7], "1998250265241791192807567306880793109956200709221181692818595253920510842869", 10); + mpz_set_str(table[8], "14465659935435067428242191803896424556358050908158478982532965759737416638391", 10); + mpz_set_str(table[9], "46591929719995891587317598544673747274505648568646107030457210252112232211", 10); + mpz_set_str(table[10], "4639165636404831429025689649526249382212715920941048877616340988481069338312", 10); + mpz_set_str(table[11], "5101588537555727893777370321204298512116074682415534657357438018311244961112", 10); + mpz_set_str(table[12], "179410057434168342906464145544812694852069933120245430229949419159981426906", 10); + mpz_set_str(table[13], "7695516875485310118844092773966973097957930556442670262323959281491994433115", 10); + mpz_set_str(table[14], "12683550083733369011440086364491019222088425588874390710788576264914142440960", 10); + mpz_set_str(table[15], "5694948114741864866240681009450947435252051335267634097805434165868160801782", 10); + mpz_set_str(table[16], "10724211750162894341858286653187126858727209348645058793237618331955502601156", 10); + mpz_set_str(table[17], "7404460343826361878310069770697755540627651028947710330320611132691144506559", 10); + mpz_set_str(table[18], "1011170870375244730350333627815408632571247698112378278848951880844557316980", 10); + mpz_set_str(table[19], "15839603285187070925446911844129559981300686209269995113230508481293613865756", 10); + mpz_set_str(table[20], "2966612230474186285505233270277233118605232383741804140458053968962877154542", 10); + mpz_set_str(table[21], "13702056390780476051263475408543339551228516609913108580223589540885452739154", 10); + mpz_set_str(table[22], "10963234875495494601395535836243998941272642760952464991497708069444262559963", 10); + mpz_set_str(table[23], "2313520401681800825415168240027059682003498260489731314978285350627677801694", 10); + mpz_set_str(table[24], "11034676630727630465992071313438030599204014910399338092870866086372070510430", 10); + mpz_set_str(table[25], "2060048681445111788650301830220172336819820520964630499489820926379279481510", 10); + mpz_set_str(table[26], "2774450720991608895558431208622796553538525207994706762219257872508653556024", 10); + mpz_set_str(table[27], "3428484919643505156893699812728369438055460535778176776923034814683617936057", 10); + mpz_set_str(table[28], "13727651093264767308318630844306701587568511903238944307513013210976622573656", 10); + mpz_set_str(table[29], "4853566076707666529275856983695806185544001245561094515687608931511302679988", 10); + mpz_set_str(table[30], "19350093072616770865787416601808923840896875448915275598193881451430045444190", 10); + mpz_set_str(table[31], "20972943759177552012956670836637021009913280735465683487859400257087986794196", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=12 +*/ +void EscalarMulWindow_e6955c0c27caea1f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "2245347420758998939601654915995759625570985735341286336862442404872284134277", 10); + mpz_set_str(table[3], "15600175216381544552162631322926832543867192616889508483792352405318394642470", 10); + mpz_set_str(table[4], "14713865636919274091387959936103511533017542622393004097024935873614305897986", 10); + mpz_set_str(table[5], "17082625238523827448579554042313125725489283468823329082230295837384544233360", 10); + mpz_set_str(table[6], "4130026987217455767293805517306273233305342983329742849082125930467911416664", 10); + mpz_set_str(table[7], "10427566142023265496688306087768308692554502369400973363134953889632181224913", 10); + mpz_set_str(table[8], "6432639534516096181991465779290379785562296854334528132085060549479709848596", 10); + mpz_set_str(table[9], "1784795157568636441341662901777646713310578755953977660795499303703719571112", 10); + mpz_set_str(table[10], "4188448501446497232967490158035521078116554185178851266709803061285616915224", 10); + mpz_set_str(table[11], "18716609095958144499747870698088891449596409740920092406022692563942168106153", 10); + mpz_set_str(table[12], "11411143655461973929715106465762266920378002689451141098350251890901080754639", 10); + mpz_set_str(table[13], "4898331285085817394186656633537281460866984315900582467822782217930629428800", 10); + mpz_set_str(table[14], "18706504029181538330837254521202224871170423469228154336979744558006722716627", 10); + mpz_set_str(table[15], "11425737589440965626741300958354870954297271473381910590120025121312944309519", 10); + mpz_set_str(table[16], "14373297324723915662114010513594200237305079767549879990374133101163954873458", 10); + mpz_set_str(table[17], "12045492905144839731840907843406000625454021439217533469599751608893972225697", 10); + mpz_set_str(table[18], "19340989026995676830834288982924328205918588128160356789649480022935938198158", 10); + mpz_set_str(table[19], "19752302409498079714867589577926877405267276060968957871070901857256661726904", 10); + mpz_set_str(table[20], "13464875825580746985517504034538589218190085341524823968835123538888636945009", 10); + mpz_set_str(table[21], "8167772782583493720839381230687433814612677789514088304123412844438607241121", 10); + mpz_set_str(table[22], "4744904024698765717952474357298703055900563249035813028371198731432509923289", 10); + mpz_set_str(table[23], "2823120529755392839175955074757632624330497277595719362322612087619994941261", 10); + mpz_set_str(table[24], "9695157492707235559874372581215361762782235869574540976632726494241962301237", 10); + mpz_set_str(table[25], "21373123160048467958919275182570525520676861218159828303727159127127593554922", 10); + mpz_set_str(table[26], "15438903139881052863241187342839703536770433555405846571728272078532995082881", 10); + mpz_set_str(table[27], "1543603774684625087996312027447844378316307241548186021113635683648320181719", 10); + mpz_set_str(table[28], "18726865242160767157127530668053720978006703713376239560987532445354419204351", 10); + mpz_set_str(table[29], "5926539098260937576132254761980048389949550146457836951695936714501148551838", 10); + mpz_set_str(table[30], "19037522830886200238496308840217816377880495211080114221275962396131691377387", 10); + mpz_set_str(table[31], "12749637905634617692307388131106696770111381313017158407997328078770530837740", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=13 +*/ +void EscalarMulWindow_e6955b0c27cae86c(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4092213701451706983421451188429404938730274104365496627715502983148034881365", 10); + mpz_set_str(table[3], "17793652202913438129989529738660378946020613503107319358235937582964372639678", 10); + mpz_set_str(table[4], "11930436627630820972865983369632835385367920927579552565277074705346972639623", 10); + mpz_set_str(table[5], "9918552317041935150997218140636443022160505100677547029559924853649552764668", 10); + mpz_set_str(table[6], "1471219075881024374457272705680818525101798378348921919930008272829546277026", 10); + mpz_set_str(table[7], "17051853606173695875486117250441221308458718054091039533732662655659589151922", 10); + mpz_set_str(table[8], "12087843304878022388655817917721571564163932537830088640246521337576020950600", 10); + mpz_set_str(table[9], "4084795181125416995646851923845414765385547454014098157614130447188900627946", 10); + mpz_set_str(table[10], "1810775050179665154818001977851498185923554044640089228433226321159491434383", 10); + mpz_set_str(table[11], "20066530790299499783486518088429744183934930139575767620805627953005193764246", 10); + mpz_set_str(table[12], "17324807295416975789879562398972586541363122087738814227711509325208663721738", 10); + mpz_set_str(table[13], "14426381127567588742051902302631726575844365575849847669913699864371310260722", 10); + mpz_set_str(table[14], "7847460266676931542476622121224084681018228345553823201331428517420386952394", 10); + mpz_set_str(table[15], "5818923946956804780352206579452314631743217554075593994088654568090420154901", 10); + mpz_set_str(table[16], "4248846726502195915173240346834948714999010286170778883112240286154201952104", 10); + mpz_set_str(table[17], "7632923667592291289557139255975057139747337016692743142228858776103199664278", 10); + mpz_set_str(table[18], "19024162230503116686255250476367589888459974926057445284461264086806538778867", 10); + mpz_set_str(table[19], "1202513615254711348911745822650872570789134083290576514775065814850788677359", 10); + mpz_set_str(table[20], "6224305771315374284734872626599693896570675031967690266987469786804372856578", 10); + mpz_set_str(table[21], "3530300870942886350704766815315787795571868570095125871349234225278352515548", 10); + mpz_set_str(table[22], "12390816528108879345589592952441588328101994806720591386452636692705717659236", 10); + mpz_set_str(table[23], "17218869607347433174736907703022554580657198141224427837254456611728755854040", 10); + mpz_set_str(table[24], "6618636545466035375932824422591883022916218856904792104037999057184464910127", 10); + mpz_set_str(table[25], "10198677541515604372458184317401496736720254142883990874208587798605183791315", 10); + mpz_set_str(table[26], "14413275103636465561016184267040054208360781504208805792927035947659891511197", 10); + mpz_set_str(table[27], "1348472316920548112882160252515348571001775397511284392517972772202557707501", 10); + mpz_set_str(table[28], "12600929613358523599405700037817948085436664561586929667937447861190247132445", 10); + mpz_set_str(table[29], "19369234812379679318064953129273060230610856817150760020483509620755516617954", 10); + mpz_set_str(table[30], "17758947516728063757985703522427945963218668227181991298748549353809987743225", 10); + mpz_set_str(table[31], "18070337596977817585149248772943298633173257200381629950059698812143441512345", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=14 +*/ +void EscalarMulWindow_e6955a0c27cae6b9(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "17779059894087356572227327102786279369030113869405414408135868357363844731965", 10); + mpz_set_str(table[3], "2328409910752853022546763316586250201350601552222316917735210220203738637156", 10); + mpz_set_str(table[4], "4249426964365172719920270929525397535868778967365753653579283745016664978011", 10); + mpz_set_str(table[5], "15020622618196256624082775358907317933079721990116496693064897198125913914308", 10); + mpz_set_str(table[6], "17244801856314402077335104689146525196060834720208615275177080437772071310141", 10); + mpz_set_str(table[7], "3388585943978364820288092081718529089585865922623586825418596639981421469449", 10); + mpz_set_str(table[8], "7859076674731565208968997439315163737987493769575570984237687199279755082574", 10); + mpz_set_str(table[9], "1357559521562969693511321565426644733540418620658500295933263453294924051330", 10); + mpz_set_str(table[10], "16161060698916004028333246304424642857206015654481621693382543447174966445278", 10); + mpz_set_str(table[11], "17823497092938548913896021782411753411337913475841619024848476797419756808886", 10); + mpz_set_str(table[12], "14175498322298878519036832519215284462004085466033760038320160582340861796702", 10); + mpz_set_str(table[13], "18957416875983044281235379823255058750116379101389129247035954106812825384038", 10); + mpz_set_str(table[14], "12474348198020880659670989520670491881100378257819705899243657076957126525434", 10); + mpz_set_str(table[15], "14868753699029029411994959760692956119744418579996458495253787307769615445331", 10); + mpz_set_str(table[16], "2072604572856849996118086748971994241569621842227724611314640483877164720890", 10); + mpz_set_str(table[17], "6177760074914096077332065839411798022497129487778918582154300659711495071167", 10); + mpz_set_str(table[18], "12703885648648298697057920089743647645116061208434544261384001242841993572016", 10); + mpz_set_str(table[19], "20205494493768526302905082944408326714300722062529947538173468971846075454170", 10); + mpz_set_str(table[20], "17479863575217104067907226202411754435124411447227168333277100081352589545061", 10); + mpz_set_str(table[21], "12293780854507134802651095011199348704332167417624836222990254172912911320079", 10); + mpz_set_str(table[22], "8558007797982939123754140378051766266754244359012612039895275544393797945369", 10); + mpz_set_str(table[23], "14925893803508054460499792517137824544350401886442688791315696630611319130879", 10); + mpz_set_str(table[24], "30783169846240288545096502405237995423748948038561734366526935932169059666", 10); + mpz_set_str(table[25], "14965887452636090372377108590180974781725357719383225713794164799471566792181", 10); + mpz_set_str(table[26], "300704248545831258587054612142812126546226502557278422354350618503240718575", 10); + mpz_set_str(table[27], "18508954300746009354471989540537599220684253049204198342398877648296684724908", 10); + mpz_set_str(table[28], "11950855798893731106082339624511307389765591106567591203096213607304046337854", 10); + mpz_set_str(table[29], "16712492673422169415412311716459251218615374349109271649234601343131043184571", 10); + mpz_set_str(table[30], "19603509089876781156532105957376291076165355281826172007213555416636455928408", 10); + mpz_set_str(table[31], "21070404643442440238002764266236284070715796944413636848692970257727353770553", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=15 +*/ +void EscalarMulWindow_e695590c27cae506(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "423262405806741856453467552437191110943449074516076654517690366110662887142", 10); + mpz_set_str(table[3], "5821598692871327127790265153450790237441118952595259277838443277944753918858", 10); + mpz_set_str(table[4], "19084171342624229095574789283636708256479388400563532006203339823528805279739", 10); + mpz_set_str(table[5], "7876256815944134472589007163636851702847231634040527792189163010928562071586", 10); + mpz_set_str(table[6], "20015992494605509459918247649355165975143760660682132993050570364486308299664", 10); + mpz_set_str(table[7], "5020896878938623851536712703737884113946536293720348955754765178962577770203", 10); + mpz_set_str(table[8], "3527451134099029201046780563600675019708670110572416347683813902306473212920", 10); + mpz_set_str(table[9], "152077109331720324836754822966517188311278098441312028621008510069260382192", 10); + mpz_set_str(table[10], "16390670180070236116015764572577584813119708452219458629684557968685238399571", 10); + mpz_set_str(table[11], "1606961266972646000906512364532658965396200302916648542982621156853114712945", 10); + mpz_set_str(table[12], "3516159058656497722036861333831290228548887091683711536469842055497058000435", 10); + mpz_set_str(table[13], "7794024361678874424894512187791487732218419722927940126607220943986556977764", 10); + mpz_set_str(table[14], "13587159961357308304449437527458632267817908953102264623588753230664467550572", 10); + mpz_set_str(table[15], "13025515381118553214534871233703966582949056430011605081972534899681059843072", 10); + mpz_set_str(table[16], "3379500887852182176198435393440886544701373997861912596324907826584799597781", 10); + mpz_set_str(table[17], "21325352476176470557263509850164969716951279702106311082939505954894610104808", 10); + mpz_set_str(table[18], "15862993518009461331529344023740928273190119759942075926693529957985784396064", 10); + mpz_set_str(table[19], "5704397868224605965441723755110116902270812496571121115153436935891514472446", 10); + mpz_set_str(table[20], "11237721199213012134172757784497616723953217832076135628348477412391661505698", 10); + mpz_set_str(table[21], "15172658004049539646757237014588943751494352570679239369087218661914350981054", 10); + mpz_set_str(table[22], "9220526738427911320952231865655681379690667959730262712160712063588372497502", 10); + mpz_set_str(table[23], "21685179430160098648244308814438386707560408104194799861850477231642799900382", 10); + mpz_set_str(table[24], "6625576931122133302463563334617882057903243032081248639331250555608604850938", 10); + mpz_set_str(table[25], "2061452977735715482856930888437796178444867837900651237034207457133067834207", 10); + mpz_set_str(table[26], "593094746615633977769310038643117733320498696970488234483744033706915835478", 10); + mpz_set_str(table[27], "10635470850898962244064401750419878765514394447457872569398074817467300542063", 10); + mpz_set_str(table[28], "16462922282420858160324657155640719344929066745413973267682588241346193994431", 10); + mpz_set_str(table[29], "21103611084476225987205556872841552833963417786929607438225110976093765620882", 10); + mpz_set_str(table[30], "5295156621155114539472539804011402261531162865079512645408935293189970824781", 10); + mpz_set_str(table[31], "1745666707826988476708736645981628943792814888220610243504699383565568902007", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=16 +*/ +void EscalarMulWindow_e695580c27cae353(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "13673742648586412167973390593398110038460134366916722178249500508067777214401", 10); + mpz_set_str(table[3], "15153854928186390613089538110391429883429324114698359329893828068591912384924", 10); + mpz_set_str(table[4], "14086366920345489600294299402406463424534933247544640736526073747648683530543", 10); + mpz_set_str(table[5], "17953005418808413954218877176527531523109883488457469119995129848659058111732", 10); + mpz_set_str(table[6], "7188067729446111956185059007412149525812314846009684638157692459778095090561", 10); + mpz_set_str(table[7], "250533206918719832354080542968881818562813203850084947078357483696534154226", 10); + mpz_set_str(table[8], "11141010770936235778267696314074560879820287224539894280527409654579468401355", 10); + mpz_set_str(table[9], "12541596359563940232820840149414845048948332822490564006200384437768366047625", 10); + mpz_set_str(table[10], "9420274270603019033608124025135061690642264375167389719883841080689952432565", 10); + mpz_set_str(table[11], "3950897603186404710014778954124240548138424459091498250365433022567245775188", 10); + mpz_set_str(table[12], "8380793094791398545005772410981404244043084629739302591073362302431561529847", 10); + mpz_set_str(table[13], "1710354099589138508952439251039738395982680457280308210969074628864066408532", 10); + mpz_set_str(table[14], "19666430225967680828553398542227135818809470198121780169520949516269528303155", 10); + mpz_set_str(table[15], "21308969666085519878937772163236795038117616515466974334611923989290881101920", 10); + mpz_set_str(table[16], "1864688919425172582901176226686519981673837470649313877770968918640342831622", 10); + mpz_set_str(table[17], "21541515704901196796528447446114142415692035400266185591088487293537642122535", 10); + mpz_set_str(table[18], "21711317258635983012742628538368142078544492503535857358103428156920898392923", 10); + mpz_set_str(table[19], "3147148199278303661020530236335764597055926445880998300559261919787462107204", 10); + mpz_set_str(table[20], "14649344050441883707513106132599985820354259133208401765169478669411385873210", 10); + mpz_set_str(table[21], "11330655277064737956701043407974887580653645181285246026977434064183062608591", 10); + mpz_set_str(table[22], "2731878170105948130666723179176869428833202729535598821213953046536610235137", 10); + mpz_set_str(table[23], "21681581585186625779352495977987369647182072747060769489020375085501671988208", 10); + mpz_set_str(table[24], "19108227063794066786285438106669139907252201688445841688637054359944873786303", 10); + mpz_set_str(table[25], "3791567753430001147104120981816124554557464174760301146314040411733099763153", 10); + mpz_set_str(table[26], "17421192848581767531262021609281960868684458668010608747438233190304005895632", 10); + mpz_set_str(table[27], "1387758121382894023538119922883613164816025901331058952477955849082540033969", 10); + mpz_set_str(table[28], "20733966020068005859445093350305664601623171392000968480892183702282777318412", 10); + mpz_set_str(table[29], "18583770857949903712514354200683653597557898839561369836551952242513017409859", 10); + mpz_set_str(table[30], "4326826542511768684940275292218624545040747486405704341406195469440356115011", 10); + mpz_set_str(table[31], "21714779059321849837236921059022211106966726817757022040500807366635187465810", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=17 +*/ +void EscalarMulWindow_e695570c27cae1a0(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18697830820747369862818107604423804812602341785181434790209421536046851564778", 10); + mpz_set_str(table[3], "11539488201447339629953416808120094534361385427330186126655240041232739801455", 10); + mpz_set_str(table[4], "5207064971754711715584022540143552143994385843040148457364832940872161067274", 10); + mpz_set_str(table[5], "18858648787888455728559470941883346609945171301867546198786117369203554407325", 10); + mpz_set_str(table[6], "14881415147963441466719591747385961746042162836505585349051285204846778454242", 10); + mpz_set_str(table[7], "21520354740499411303496037816382454442091701826916392899394997083789811518044", 10); + mpz_set_str(table[8], "390098382447767190982601356754144582047756793010573561674530468565130005298", 10); + mpz_set_str(table[9], "5611458464882321581874244734012086917894599810551663437993947968904892579952", 10); + mpz_set_str(table[10], "17296929351693435105217701594275476254423148100622890751783867985800290971581", 10); + mpz_set_str(table[11], "654665264453508269374430455158162365524512478454248573088692011960483721526", 10); + mpz_set_str(table[12], "10185241660253897094431825256756938641250445976574939921126671915394640364158", 10); + mpz_set_str(table[13], "12267093644468108766834368003036679992781112009019839956293681664142766596792", 10); + mpz_set_str(table[14], "3757291619675613323086416221359657888317617290639704141780963808253967321799", 10); + mpz_set_str(table[15], "18789844804651422155922217369669256490380864683801279421538978664075834206803", 10); + mpz_set_str(table[16], "15038013445974030210226312173302604299782417377463336629646867686239759540160", 10); + mpz_set_str(table[17], "8766393721130999332560660228490707042688972062902432684608359836188319391021", 10); + mpz_set_str(table[18], "2859848204130892831504747832165793298470965479110097700796011997502483355139", 10); + mpz_set_str(table[19], "5745650640780073915096459013280252744216760267659730264259106058547270430146", 10); + mpz_set_str(table[20], "8118361704753430650102336829679477113449716483239345834060058005733238848602", 10); + mpz_set_str(table[21], "8303921291423077955057063829308214078039980895060694751597677127009797093954", 10); + mpz_set_str(table[22], "17475765136846321057386870807802759443162287492338094750152139224989348692222", 10); + mpz_set_str(table[23], "10232111231604638574549990969871435952172655729432029678526665492565707527923", 10); + mpz_set_str(table[24], "3105936608424393704733128510781825709845341515380419966220226599811368250369", 10); + mpz_set_str(table[25], "10889413405732414258721097394812067810935850529655097676996803038772702348400", 10); + mpz_set_str(table[26], "14793717548628830425036623072175273325474708379407922825900640764910903474843", 10); + mpz_set_str(table[27], "2801190169295877274789958017512670277700721482168044384184698741437044268810", 10); + mpz_set_str(table[28], "13498571610580730994466628231215171603843682927224882391896974684628609048434", 10); + mpz_set_str(table[29], "523251342147181654372725839079151558931332486013985622615293078279863278860", 10); + mpz_set_str(table[30], "12083598852191563441940388724287463910411975370779524202844187656946257599152", 10); + mpz_set_str(table[31], "12049527931656405181261031923035041309077868546808493626072700786196661899439", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=18 +*/ +void EscalarMulWindow_e695660c27cafb1d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3379399181699432623217731510552154316202713990781648613218490208311270562931", 10); + mpz_set_str(table[3], "10843172049773670618847385298229699253090504724495681049657926722247413594206", 10); + mpz_set_str(table[4], "14450248596460811383463621049248166504478681759608610076046949290640449826731", 10); + mpz_set_str(table[5], "3267178159467603284343355542430787551407027131759407913239021434671761847922", 10); + mpz_set_str(table[6], "12276701952657897291522073256988116333714581502742580546355221628133509526283", 10); + mpz_set_str(table[7], "19628076275083041844585341704276483246810841615692306681621002929075216962132", 10); + mpz_set_str(table[8], "7836859926450919877392120543511887050200836970258849183524929885412009975572", 10); + mpz_set_str(table[9], "5290105560450361023117254506795255266192778633174124871604526803022892152977", 10); + mpz_set_str(table[10], "12775319610399810211576125106746148104640396577705143761824887075312989156479", 10); + mpz_set_str(table[11], "4844450962757146340769785944220536747207173906342842768226923464392598683670", 10); + mpz_set_str(table[12], "2199989780260332865856459579875939893218366948316638554485144631557561507080", 10); + mpz_set_str(table[13], "1664500376583587314841324394496401407727486534559623483032338283391356988842", 10); + mpz_set_str(table[14], "14237539326374514604959623487456571185100490104875487400668998754288228106703", 10); + mpz_set_str(table[15], "11371911393534201524121140820879016362055034651119156810853760003987338884417", 10); + mpz_set_str(table[16], "13574292992612715305482056774524172214479202315848802894891300107368000824755", 10); + mpz_set_str(table[17], "20217291280820077572468081599924902384629354106755300130023851694437616357241", 10); + mpz_set_str(table[18], "17332729190444715821932502887166457272095696917189529950018485836811171781074", 10); + mpz_set_str(table[19], "8928571711955816190541028868163833311345675545855227592104872357692329080326", 10); + mpz_set_str(table[20], "7799640264959817050048971275919550445796424852011403014499619703139339854165", 10); + mpz_set_str(table[21], "18615349518994979191330979165097072614971723389820866626957446795183019690572", 10); + mpz_set_str(table[22], "6581651959083860015823010745090266616505792466124212892337109699895687892764", 10); + mpz_set_str(table[23], "10402246954385227223038639511584415609404705100489141992307792115166168769186", 10); + mpz_set_str(table[24], "20845574286178959300819553568420309876368540864175100473707273778102241618163", 10); + mpz_set_str(table[25], "19795923763417135016749435917436011703813878339667538123976670743547933350885", 10); + mpz_set_str(table[26], "13587054233876770749105277042314317974732014628844426366463387352962746283261", 10); + mpz_set_str(table[27], "10389213639519702947776149799131365059577130058525957370304352638201792337016", 10); + mpz_set_str(table[28], "6024293295226361852520916496651927092000048941454794442038155618681187309775", 10); + mpz_set_str(table[29], "21691561303962662299824255087006740041372142465133418306100633464529832321914", 10); + mpz_set_str(table[30], "14791532627712874458023155956255404764020250490858735045063876208720881888981", 10); + mpz_set_str(table[31], "20027425569693737017249784632939478816350967266450234041828730341740353118482", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=19 +*/ +void EscalarMulWindow_e695650c27caf96a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "379349425903821713550630532223576441440513381186397819079208216532411422952", 10); + mpz_set_str(table[3], "19107892239350785984077211943912850532760596891759051444710776654351045614222", 10); + mpz_set_str(table[4], "11280353594541512257574919685002060568207172068669532689768981258321449648547", 10); + mpz_set_str(table[5], "2137545202489257402266811734996928871794892737105559738080320028884283943764", 10); + mpz_set_str(table[6], "19983691625229909059805340205014294793098548369714579680834342307520147481639", 10); + mpz_set_str(table[7], "13830778936281094104099977298590683701505929576344779379566337187189320425932", 10); + mpz_set_str(table[8], "11086690746568527490600096068541542994486918982463335794795545473443368478131", 10); + mpz_set_str(table[9], "11580662810343539560080461955379908514477007894619637726623583621727337423837", 10); + mpz_set_str(table[10], "18955642799938985797972948003387147464454494551005077761001815253098042290904", 10); + mpz_set_str(table[11], "18597029718187982506882415805891494366787558404517871246454909924289796333513", 10); + mpz_set_str(table[12], "14305074609156097955952312588218951195345339166404421339047415565869596559012", 10); + mpz_set_str(table[13], "690623514523908708493027960805697385269507890581332882596566116480176034659", 10); + mpz_set_str(table[14], "20611706075838341423633915098290191545949708122744561495239121618765313930802", 10); + mpz_set_str(table[15], "3845575718579933343278139898013486390823378547870337023307353525027835942660", 10); + mpz_set_str(table[16], "2478043406005879623483017719950300866241503815933009862378703830485598229119", 10); + mpz_set_str(table[17], "1383631236499289476784713841116640798000700551077308900873060639255959590025", 10); + mpz_set_str(table[18], "12349784917285116305247291251371396729363143696525117666455067432646235314146", 10); + mpz_set_str(table[19], "16334223641716971764757547192903169353455781326280623687815241771687572129865", 10); + mpz_set_str(table[20], "15882892205970355631107815584572321201763891439907568323360981499144978834621", 10); + mpz_set_str(table[21], "18783023729403057852350213269844944783961625452585774749570435945310202678554", 10); + mpz_set_str(table[22], "9596730397664164141672412456152963833582528965966793039880273162632961791662", 10); + mpz_set_str(table[23], "15409274789759147195506796454688186976288543457706237430805957138587635100441", 10); + mpz_set_str(table[24], "4813269313006480048070988100749027302180611382429427271089699256053609550378", 10); + mpz_set_str(table[25], "4428333261400869870098137668784767735793049338845931567987062597321127081604", 10); + mpz_set_str(table[26], "15833799957140371690428662200025618893900834090445452632012559616472171663251", 10); + mpz_set_str(table[27], "12623216000145546996949783338552280132976394381301068136242560086691735805150", 10); + mpz_set_str(table[28], "3359488754919514056157827364813642645567362222485560814947284570012139282296", 10); + mpz_set_str(table[29], "13182633811136778326412290071915964950552694407726567248121591272059828493900", 10); + mpz_set_str(table[30], "18344403849859881128576637682617943766394705082113421550049141843443730503163", 10); + mpz_set_str(table[31], "4359734782083362965519911663713090977500958121224832706764918936303087023658", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=20 +*/ +void EscalarMulWindow_e698e40c27ce070e(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16777655066149369327124291278088574671112030619368469048779993756310513268616", 10); + mpz_set_str(table[3], "4634019888105622973807563829540165825498623150484770039567692393175833637671", 10); + mpz_set_str(table[4], "53372432075113461294212927623034318312986384016964247987299954466217724572", 10); + mpz_set_str(table[5], "21222280082852734327876908204262711706179553933131055021830879442555702909056", 10); + mpz_set_str(table[6], "10446611131569744194879930309070342482915314388262602168777260257945844413581", 10); + mpz_set_str(table[7], "17932039171865762615513115651971768508779260034202570792438758021028159091683", 10); + mpz_set_str(table[8], "4667012780388820804018655167035141203405144059674350075656822472462063278033", 10); + mpz_set_str(table[9], "2921856238642177739916590840023080274550242539569173642325118194745464517315", 10); + mpz_set_str(table[10], "1489960209940786061583080321981151805314315232360824425984553880933186990694", 10); + mpz_set_str(table[11], "21120780874579052859918422123517089781900831596441921602412235108476581780668", 10); + mpz_set_str(table[12], "8718474883888947110768435025682732572992203457115241377990223014391596665523", 10); + mpz_set_str(table[13], "19032472091844184846046885535846801715513552788617620197536449678878065381489", 10); + mpz_set_str(table[14], "16996157389333632677607961816610117660887306489831803292557097776507757525888", 10); + mpz_set_str(table[15], "11493940525966459763233057014223427028694376288802979773223809318032814817300", 10); + mpz_set_str(table[16], "9261677088939894748499361830764337859405453699942819789001890423637089102586", 10); + mpz_set_str(table[17], "11388921744174066538406314201891921507634460789084367604976972575203373469874", 10); + mpz_set_str(table[18], "7442141633407347441990485354276773483423576236543645618533984231826068244096", 10); + mpz_set_str(table[19], "16688217174667942192597745826670674120092209845993400563091585503457408326438", 10); + mpz_set_str(table[20], "20844308047584040195262432415475351812716112266301592095205905452208541213584", 10); + mpz_set_str(table[21], "21306710929855482749401890110600956011811406776992362749776938848913343866004", 10); + mpz_set_str(table[22], "14649534122562536167873619926958729444834379257504527673023839845348170644831", 10); + mpz_set_str(table[23], "20377195103787159261672413214784820833464632336785446645173093182127746835635", 10); + mpz_set_str(table[24], "8895577731263932062426513852464333814611638514946485929000615303545101303911", 10); + mpz_set_str(table[25], "16690272539101338741331854476710213982646608128095492874978686907076211193441", 10); + mpz_set_str(table[26], "14637801588902173078883728435205979605383582994403761904993772951178658661612", 10); + mpz_set_str(table[27], "15556352645043640590481313403684214937884749350715627679499043108304560580032", 10); + mpz_set_str(table[28], "16491440686422045546754825555510545537573484719469285180489726866779631365499", 10); + mpz_set_str(table[29], "13780819536949712747062711170626282770117877673882735852691539576219013514205", 10); + mpz_set_str(table[30], "18671122420482751944784190861631715819837944784726989949485471870702575441012", 10); + mpz_set_str(table[31], "12124425748835041858630547955816658525946943092845541228047681400237566091687", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=21 +*/ +void EscalarMulWindow_e698e50c27ce08c1(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "14039197829042233210185992800840342338003761045566389158900335456277860044633", 10); + mpz_set_str(table[3], "8825106331433947656958915899633977149289341414166936703486542876338734902214", 10); + mpz_set_str(table[4], "15095982714695416100950522019908470501539408862098883269490380922208216675423", 10); + mpz_set_str(table[5], "11134287379122613107431340219535935486629784643918964780778070509925919379798", 10); + mpz_set_str(table[6], "5806201066651812452198307007415788883737166770230134675945470912181901667971", 10); + mpz_set_str(table[7], "12452641974926388987777634332185366482718581358103397919534820807764346134679", 10); + mpz_set_str(table[8], "8496487741736967816307239370860081844148540610563304614572223166141136450664", 10); + mpz_set_str(table[9], "6515186124495517742442831064908301488276696577969746807825777021832272589753", 10); + mpz_set_str(table[10], "8871163556873554542872859188884917500024534701895773736991779860033475779351", 10); + mpz_set_str(table[11], "5872890099072019124719769182033635424291362213376682736999065144487817779759", 10); + mpz_set_str(table[12], "17363735306352581795343563046819247342835214329878310600616704142028848838008", 10); + mpz_set_str(table[13], "18218880869117473387164603473407741784276076176538509089634130399730952915316", 10); + mpz_set_str(table[14], "8386027477772807656627708391171963446157480648802305735918259265732668808083", 10); + mpz_set_str(table[15], "19687762281102340388295514091188028726571729879857295884771308963589952102337", 10); + mpz_set_str(table[16], "8806763414527422646706033124211503226600069612325976159796810560741498397039", 10); + mpz_set_str(table[17], "10424251286473947322555629541873479079353717031160753124405152609735324493117", 10); + mpz_set_str(table[18], "8987709772963618298966745145118843765322233650190155659262677249069516573186", 10); + mpz_set_str(table[19], "5578835771954576245231452735207876212611195360812441579084934075056958891196", 10); + mpz_set_str(table[20], "4869328133149460425264838007327139122108036937512762624940110432985398319451", 10); + mpz_set_str(table[21], "12344885618218737754001075231836794789316562440817685636965946874834953534874", 10); + mpz_set_str(table[22], "20148954836171788174151641924728853539276128095104101269607371794973427007889", 10); + mpz_set_str(table[23], "108627741403201139219994129516748292558174334922005804559682235652656708457", 10); + mpz_set_str(table[24], "16746877888501324922778335102840498994406347621229831804541408927766874982532", 10); + mpz_set_str(table[25], "12434588185890169427234865922008840089282230238237531488960588024283025549395", 10); + mpz_set_str(table[26], "7575769996674802953350195897976424883998358416953812121252598358433246209742", 10); + mpz_set_str(table[27], "12388142876628989256808051406377609190565003868936540259767536756674086073749", 10); + mpz_set_str(table[28], "12843407186058112922591119347576760766573049789955675584163470702929813803767", 10); + mpz_set_str(table[29], "2343208966296086685915997004650955416323127803733138229449364650755663867389", 10); + mpz_set_str(table[30], "6840986370106186924969966814197656097828314884143462176667073174093378152881", 10); + mpz_set_str(table[31], "18209760968771446985408737819211774799307141621073325377962355588454216355527", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=22 +*/ +void EscalarMulWindow_e698e20c27ce03a8(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15631711555578033258523500940835561294499401563342292872379915306758380894815", 10); + mpz_set_str(table[3], "18834791205884987258643654447945418758890737034482227278884571064075678439760", 10); + mpz_set_str(table[4], "1232924394558455398273647587599522706537624058132586202779115272248911202682", 10); + mpz_set_str(table[5], "17833303230895080889959216902701836679189654685265718226911692537025674353649", 10); + mpz_set_str(table[6], "2985363010675498776710035823973308534779126283248947419911729203894216782228", 10); + mpz_set_str(table[7], "995303174859503655015441933597716185437178818415965659684359338901424452267", 10); + mpz_set_str(table[8], "437566714976308452367214633122809687986656634437990370753266749790119013519", 10); + mpz_set_str(table[9], "19529206272648706004490579965157400080492296701179993666393115871715434934725", 10); + mpz_set_str(table[10], "21053932545637636866460507256262585574248024459625275400196428552255217832688", 10); + mpz_set_str(table[11], "13238505236844161302108237022958600105239284560425932588497153806620891820284", 10); + mpz_set_str(table[12], "14738221885741907026496168859762855130638313123865194793394713686883659078666", 10); + mpz_set_str(table[13], "10130473349809524005586022957872835334035485889815302054938803046567229332021", 10); + mpz_set_str(table[14], "19082597823767183986973149369595319402986068587362854892674691192121539866770", 10); + mpz_set_str(table[15], "2974712380689759096651038103638866419244930106689442976125603176942104057564", 10); + mpz_set_str(table[16], "4968377445231331394612662291766375940519266178117277611205543326105819696507", 10); + mpz_set_str(table[17], "308051870163380961668450783238640324240158897655551649879309242257625464516", 10); + mpz_set_str(table[18], "143145578578409144355991313510326323032732394846904084168106976181727124291", 10); + mpz_set_str(table[19], "4534228930726044913960469025859070803171449727902123790808775304997038006854", 10); + mpz_set_str(table[20], "7549398425930664276585051299523370291040048032792053800127951108759026819473", 10); + mpz_set_str(table[21], "8381514489184948217242976309236859270111448224406737907949391219157807502391", 10); + mpz_set_str(table[22], "7081728363625164803461197468983646976360826316144988521407728588347844357868", 10); + mpz_set_str(table[23], "2220441304837452587602205209854024148821448161516925267269425769789244849682", 10); + mpz_set_str(table[24], "7600566888315861787276475227149240118535535675131854594794725935293156156345", 10); + mpz_set_str(table[25], "2518543267736502482525749979499206659205623975068592128089538541609356397646", 10); + mpz_set_str(table[26], "15964546934255736197215107778492678732154813344410741849144170794983572901045", 10); + mpz_set_str(table[27], "11108260911019516113738169910743348501977642236570099384754413111216036967235", 10); + mpz_set_str(table[28], "1268409639470179650151777579305834369087781077158435876229349716093818630860", 10); + mpz_set_str(table[29], "12116692109562525117748684272446381207063947914491907158883458255351001755339", 10); + mpz_set_str(table[30], "21880068498434663893026435732702345344466753678404381230836174069069830790061", 10); + mpz_set_str(table[31], "16324265685603273807052115540100128665715365875271278209751006495035490162717", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=23 +*/ +void EscalarMulWindow_e698e30c27ce055b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11798301185410583790831982960921750325182175352689111003919084769704803694695", 10); + mpz_set_str(table[3], "10320507559881538305442440388599880600101961708359800619588812325976600071175", 10); + mpz_set_str(table[4], "10992380046202553728861226116804750801860495309222180455192050912656571103720", 10); + mpz_set_str(table[5], "20746504294608920109139695193353753766924548979974787683175107063649821757148", 10); + mpz_set_str(table[6], "12803271769506889229569359866195264181650659426122199129217985985677245964497", 10); + mpz_set_str(table[7], "12777208000963804772914758731979577679411982369114737894261616814245396577238", 10); + mpz_set_str(table[8], "5056256971231365636008952459055560403127127971967423375879203995246080587426", 10); + mpz_set_str(table[9], "14679552420354879541770922331850106484158970802232913124170883214669637080939", 10); + mpz_set_str(table[10], "10919301278344548707513020306219902524837796055556405511996756103297555727874", 10); + mpz_set_str(table[11], "21859364279343042815097100425563438652377978005395579703935946388999354651538", 10); + mpz_set_str(table[12], "1484608924137526623693394879926039469672374869781472619727808552028062310694", 10); + mpz_set_str(table[13], "2464071424631007604234496176677676463718240755275391610330172152263542025526", 10); + mpz_set_str(table[14], "12080718782101260122650814197245474681608191865292176042822521203797695910346", 10); + mpz_set_str(table[15], "20650658053855156593275428272170432524538387387078934253383897576552964739457", 10); + mpz_set_str(table[16], "18960132970055859574487738159906249609630408737632122614927969256399073906464", 10); + mpz_set_str(table[17], "830663679062394654079072360240041554084938025612663365619389564309524341706", 10); + mpz_set_str(table[18], "12516550835764888840186918457921749644134691645556312835447177614210820171445", 10); + mpz_set_str(table[19], "6911599512264570767810838558833828125239613928732247342257488973404472882679", 10); + mpz_set_str(table[20], "3063684577483271534878882054606130869308747135806272583291883524655496335146", 10); + mpz_set_str(table[21], "2464467942685338240514728971637190802634050463763588371327509072888928899673", 10); + mpz_set_str(table[22], "7366277537661412068861569927151816204215121201677392619777906606437971565388", 10); + mpz_set_str(table[23], "8315416474862471676494982738677636031784175446210295818644731945649792214419", 10); + mpz_set_str(table[24], "13930433247833341929562607678253063529932503298466873358130636444227790229005", 10); + mpz_set_str(table[25], "13657364666783669374405500135099069628416465670878715674244742119551618915641", 10); + mpz_set_str(table[26], "1117973501212793165418659143600582146453616982398874520894316241927249104029", 10); + mpz_set_str(table[27], "20484777878246356526658870888718785100679283234214202485954611267340543194576", 10); + mpz_set_str(table[28], "319520992354708541373755758310984768204770492971774523929151706353780111164", 10); + mpz_set_str(table[29], "6574194972508636233014241106289769969597988543755001082232573920749262646233", 10); + mpz_set_str(table[30], "2656051586347266298016418493880420612948988466424561544900583311287142485018", 10); + mpz_set_str(table[31], "2761572019450156499564749645009342056734978070352838294058294953587033665276", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=24 +*/ +void EscalarMulWindow_e698e80c27ce0dda(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "17351845850750176330302386143271454019986956878302371623825420752743851593735", 10); + mpz_set_str(table[3], "12075532622678853701341956212463986752947878251561614929554858573655664204828", 10); + mpz_set_str(table[4], "5268310846833705826772381806671280491475489620656583480880246943710981141691", 10); + mpz_set_str(table[5], "9385490350823108296999850757050916322228290280677181904320714202439717767422", 10); + mpz_set_str(table[6], "11865950769220096390634285805117550010278460558176997058880860355046049428568", 10); + mpz_set_str(table[7], "459442895305814190695826238160158989509240406275369337352052544557769056319", 10); + mpz_set_str(table[8], "11000060784145321905235302876930287466345760160566048613958488699577356496533", 10); + mpz_set_str(table[9], "609499755531011926711350038473050375887336787225016040024184562095663706097", 10); + mpz_set_str(table[10], "21047770345286746752322681107649806746441393632604503304194248718852944411487", 10); + mpz_set_str(table[11], "13516973722741553768025367021591301011638417327217220496926066123804629317971", 10); + mpz_set_str(table[12], "6905161585723141809795614685402288575865116931801978697601302106968481529140", 10); + mpz_set_str(table[13], "3076769530411085661908443419093838945279270383088064927883723494868312673502", 10); + mpz_set_str(table[14], "9261886629687258503004959961033285420916245813210880613548148699873216759374", 10); + mpz_set_str(table[15], "19071566171207295778784283346809732267737033620433376836792563962313994578625", 10); + mpz_set_str(table[16], "3469109305797854135905737624675722807114122156120072619139732155200769710979", 10); + mpz_set_str(table[17], "5202070023884855698159514560052546547100308770238216654942333256709433129892", 10); + mpz_set_str(table[18], "4992965992430408256947356700901520022475757622279126070463091524658354958973", 10); + mpz_set_str(table[19], "2023062360307938396554186189143829458322972472122709188385752138612458811877", 10); + mpz_set_str(table[20], "8731784736964002767378468136309109957646284246937833729933610769447991753480", 10); + mpz_set_str(table[21], "21538327300874802284756748222604848360706643956609924106140479577847893198530", 10); + mpz_set_str(table[22], "15139692648767211280809789134986093832610632490099251208879432098934898968358", 10); + mpz_set_str(table[23], "6985531268899350934330829853646066145744407151797019745970665801002511588287", 10); + mpz_set_str(table[24], "21765270233564657427425235463772724927598377592934022924205782566750681233935", 10); + mpz_set_str(table[25], "18508890223188965053204091822551140811335348826333579433323525784334430383927", 10); + mpz_set_str(table[26], "10461271546216443746217170370116972218127141442243227395112643512011677972023", 10); + mpz_set_str(table[27], "17467239786415991962502641293398074788116214050307575611282756538107265894383", 10); + mpz_set_str(table[28], "20482469263305679290004142039681971451024512516948743030512746362959388606066", 10); + mpz_set_str(table[29], "7843334092669307652128131850517982100364152376975332666229835309829819065753", 10); + mpz_set_str(table[30], "12590285961903499113253265859992170165545260023329770070095707580664645730275", 10); + mpz_set_str(table[31], "7194233330489109228257570457060236313303750551497443588936654850618121652054", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=25 +*/ +void EscalarMulWindow_e698e90c27ce0f8d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18679633421357654521429185503276703378250966807467092342363108178634864479079", 10); + mpz_set_str(table[3], "21322315859973860093357705236759883291428485443465435890046826520653536618283", 10); + mpz_set_str(table[4], "16642285143607761383883324682448523114695799787227861058116862475673283006949", 10); + mpz_set_str(table[5], "233581951758829149128702218334194499409350081300098466120720723649572707213", 10); + mpz_set_str(table[6], "20974658634486132093705671932681722132897896514661015785562171583158773737580", 10); + mpz_set_str(table[7], "8791264643433259523666474626308297984570323489497414318772346289739068232836", 10); + mpz_set_str(table[8], "11176221570195373612721281952327875203495526127141048535478678557221449823853", 10); + mpz_set_str(table[9], "7462162874881624749823731845900700394235375213388839519316359385077363220280", 10); + mpz_set_str(table[10], "5730468668692984643292903661060232785422008088596341963377282156198188262958", 10); + mpz_set_str(table[11], "13880692275923108251424145304764532477324187976384582509950817933695417187332", 10); + mpz_set_str(table[12], "10262998670148401490193774870662111933850697960129404081368385914799358805628", 10); + mpz_set_str(table[13], "12742482583977661789154654347088028749540785078974457382985405288984678035164", 10); + mpz_set_str(table[14], "14111560712981869778122242802015376496460779107025771699026299115246670934437", 10); + mpz_set_str(table[15], "15928417708975887467177234569851001993585687826100243460026847781812459726208", 10); + mpz_set_str(table[16], "3898915993666074238116912364165206661219183814743442999904170575467252889957", 10); + mpz_set_str(table[17], "4616095144417919052091654987916140814851717669962214065129348701941975173376", 10); + mpz_set_str(table[18], "870009940025555473305507854684809281347899361202817384983799877982065196106", 10); + mpz_set_str(table[19], "18199770521874754046070636155276052104443705262572115667514250178291336769446", 10); + mpz_set_str(table[20], "5251452573312677858772700111593560102764530626161156239221062730062471072200", 10); + mpz_set_str(table[21], "4060189221230632720236127908229618353861583103088859388581197386021336748799", 10); + mpz_set_str(table[22], "500553746406741276509290104078504756910494237842934089170143016496262397600", 10); + mpz_set_str(table[23], "16342504650027689201120271210626364278078361371933992329345633699279035849372", 10); + mpz_set_str(table[24], "3057974382061198115697574311500592432050261591627854043988857243519190484788", 10); + mpz_set_str(table[25], "7249454878981887710537707113195771725592827230097529557963231200376729030686", 10); + mpz_set_str(table[26], "1899688882688929949967362568662327212286796491797008294852911776840902024498", 10); + mpz_set_str(table[27], "17472782395001309162859323574187283949441334006250084213168260969193966757100", 10); + mpz_set_str(table[28], "378299894228858407457921286909295340958233177787553440136437193154547375645", 10); + mpz_set_str(table[29], "9967905892241280854723126176088418640170565284173233172864591940781488067362", 10); + mpz_set_str(table[30], "16935061331481138061051393509541369107079939306980690938637605416392462815374", 10); + mpz_set_str(table[31], "13639971176145374610214912111253055280702049309421061897395334403386234245691", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=26 +*/ +void EscalarMulWindow_e698e60c27ce0a74(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18149639217555882877415078714125918722233175652167252147515809362370647289497", 10); + mpz_set_str(table[3], "16128676484931873977405252903059378046701253412534303083732069827214517104783", 10); + mpz_set_str(table[4], "21741062837605799338950050028689809033616873164346586869014921358902994674254", 10); + mpz_set_str(table[5], "7796406175627857618905064986966731948348273442392637473687724192421057957219", 10); + mpz_set_str(table[6], "7534601249392079530124354518063963801086048546794269780112021066678388981410", 10); + mpz_set_str(table[7], "6677588957553654931783406597190407679134037329597451248476267121733886730791", 10); + mpz_set_str(table[8], "13115340974748485205002137809244391754597074876194778118669788315774020494136", 10); + mpz_set_str(table[9], "13802687287376990740555296070886027524867599566216721044853226069655875214431", 10); + mpz_set_str(table[10], "2999073202325105769717112095763592563858464380343177250544812825539071688027", 10); + mpz_set_str(table[11], "10064086351590110255577947800085273710339883743811947148186517159294056376677", 10); + mpz_set_str(table[12], "6852897146568312467692829313474435837990386224049340482823215485917508827876", 10); + mpz_set_str(table[13], "1210401895753268854214897638425674885738268429911727465370896469648125714193", 10); + mpz_set_str(table[14], "2576582090501413037812575145260792860793836296589021856439629924170761073413", 10); + mpz_set_str(table[15], "20727417578871676794417712575420264288632929992165664741952551486518603808280", 10); + mpz_set_str(table[16], "13230367140527495135201406179219097468955118203095633648770852711515921471138", 10); + mpz_set_str(table[17], "2940475370559210314943904699892612174743036200726254902311869106763910922960", 10); + mpz_set_str(table[18], "4375673118740629477057287977271234385371086429826301848882292947782430241436", 10); + mpz_set_str(table[19], "19214483773944962915121480650397137996182578224815495099888995681365662248643", 10); + mpz_set_str(table[20], "19221602970431180863398127125693575735223010517157104577954453152509466503491", 10); + mpz_set_str(table[21], "2812067302822347878200352298687086974654660652866649971988072238017953747521", 10); + mpz_set_str(table[22], "5008886347059271337779850699333927536827007984024878438848354317160095383734", 10); + mpz_set_str(table[23], "15497994055658328443367445917737913747258359388862053147533085127115066729126", 10); + mpz_set_str(table[24], "3042905534015373077782584239723106622236565352224986873088578482289642706325", 10); + mpz_set_str(table[25], "1731988411085023288614536237087215168558933538164107600051818802279377810575", 10); + mpz_set_str(table[26], "15244994035690954925459854555924816526957680464700034071754296697534232205597", 10); + mpz_set_str(table[27], "4961042611843774276830686504678143537634042868988093197151531923202165896428", 10); + mpz_set_str(table[28], "820995330704602082023389942001516326818113276056207117608315994303105783846", 10); + mpz_set_str(table[29], "17063503948258759982521687096337367273424027932919494422489905984616783526940", 10); + mpz_set_str(table[30], "655009840659097098746477536921819669236312244709885557472771258585495863198", 10); + mpz_set_str(table[31], "5565526667065270568125894359845653415385789737081157482315205604882968801772", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=27 +*/ +void EscalarMulWindow_e698e70c27ce0c27(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4269413356809688023055171952319783340807847112986096639848456682256125645198", 10); + mpz_set_str(table[3], "17891026128563673965161829930746344980280606142672216508664431337850809882768", 10); + mpz_set_str(table[4], "7028665825486996498137491933204532735387436324626373156761028606127092857898", 10); + mpz_set_str(table[5], "16394852272472558952431643649001704750983750210094468004673310412404620285269", 10); + mpz_set_str(table[6], "9575116358732551192150870969228086842347680104624158647630582324869335466440", 10); + mpz_set_str(table[7], "3169542329348866242122582288569568831399118696572711471864800613462373064713", 10); + mpz_set_str(table[8], "16845773816780024268431761968937696546879583698191683564525352316650779482881", 10); + mpz_set_str(table[9], "15371046996217610175317662037035861269567606464107910978539868567748138358188", 10); + mpz_set_str(table[10], "3737865142484713569235227558864529185671037856124866291820139336391043043071", 10); + mpz_set_str(table[11], "5147619658047292583758581391647638644261462089795093902318291830912213819869", 10); + mpz_set_str(table[12], "15412517508402927450744477758569750435850928341579553211082064827884417350437", 10); + mpz_set_str(table[13], "15123306967046167736838038855522970760546316635880988480505894653019908997285", 10); + mpz_set_str(table[14], "1378997542838302882522218636718788433398457256790945020306817286210794852079", 10); + mpz_set_str(table[15], "10681378457761673700208457944265082204938467731057382775794046472907358133325", 10); + mpz_set_str(table[16], "15034216098749163077398659997000814293811394539301049023966449242170607876758", 10); + mpz_set_str(table[17], "1265117124629072894780664826608083949693736965880149409956589379362893867827", 10); + mpz_set_str(table[18], "17141931405175606365519137193715586102927833157366436473975545010128210879676", 10); + mpz_set_str(table[19], "1880341079109052932425109631866414631154435103591430808435188034892166215826", 10); + mpz_set_str(table[20], "15358552313330899939313213174873817402073115873733628011115954184269211049875", 10); + mpz_set_str(table[21], "811576326309334159355379418340956988202908503048709875595006469622118773857", 10); + mpz_set_str(table[22], "11980805963003943581544209754278668018236660791726786320615515322070456177125", 10); + mpz_set_str(table[23], "19129346817397574214942130163039735117121940671425116237677666615095191649280", 10); + mpz_set_str(table[24], "3085324543674639674035900800542024948649385413137066150025713122961690904680", 10); + mpz_set_str(table[25], "7562088399433561926096036673997995344390772153605937104657033492731868301697", 10); + mpz_set_str(table[26], "11616789518748387652676471460186977754323335645971627703992552357828756554626", 10); + mpz_set_str(table[27], "2985309710126181923271106664964882159606697141846195470517976005450302812764", 10); + mpz_set_str(table[28], "20045268470731731980457104327845120289597280757025433801093367686116425682919", 10); + mpz_set_str(table[29], "16450362315825157310960017229296433181706845131153707024014991209612395931227", 10); + mpz_set_str(table[30], "6675140004031465291382046674379185986882524818478619659668057799908410468280", 10); + mpz_set_str(table[31], "19575453177949606388513743103042856370117729503140135834457766083727148716244", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=28 +*/ +void EscalarMulWindow_e698dc0c27cdf976(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11797375556583103475936410264223169234680019331380441010099484115674003702746", 10); + mpz_set_str(table[3], "4388528957314896315680095568173136286307999846483728886086822418140788829241", 10); + mpz_set_str(table[4], "14512796928224367829315911046609507130339935623184687970713628867263115508415", 10); + mpz_set_str(table[5], "17141409409197546604539377770183982538346482127282272413030148047539390094733", 10); + mpz_set_str(table[6], "11732430130035776615471491649984617351069057911905998620220584826380474810879", 10); + mpz_set_str(table[7], "9376537503899738361300653657916351419700478308516458732431878112883192475273", 10); + mpz_set_str(table[8], "3450710052248585649078923563576676153255383176279328519038933288950963690814", 10); + mpz_set_str(table[9], "19053164269481311039996717729028852763030498876969873433965881093928272080178", 10); + mpz_set_str(table[10], "21355313626589875159629414610255849682334054368454202277940412267097837113179", 10); + mpz_set_str(table[11], "17527757806168506495012626599736222178210824889767143658744055128914425287233", 10); + mpz_set_str(table[12], "1659465447879842446146467540027271282532864557283036395430278827789636817143", 10); + mpz_set_str(table[13], "13244470474278251225936022513910782201305167905726898721032137375144042610126", 10); + mpz_set_str(table[14], "9331109824805589603749464659396966463218299078866177675680192948328969487159", 10); + mpz_set_str(table[15], "4808400526998406116861748929457949369609825340968131372779501297781241061100", 10); + mpz_set_str(table[16], "8667862274262081702893474482697473065781453341593792026682829702412730871384", 10); + mpz_set_str(table[17], "19633052771995805984567096389336158666251781701949228572771100982195433597860", 10); + mpz_set_str(table[18], "8096612061827253222675165910361428113904761835575734863433322096067565431363", 10); + mpz_set_str(table[19], "12080201316495449351674561557308329587229007477896718836895704944910296947571", 10); + mpz_set_str(table[20], "912149034276592385598424043084505877896022681633936854279201077702141729663", 10); + mpz_set_str(table[21], "457905390781590143801995368401293058071807834009296351047635713145524414716", 10); + mpz_set_str(table[22], "18373899101758750108039635085717350072838673044198411779451621654401612805078", 10); + mpz_set_str(table[23], "2265159405545722653339762168912044034720386011316093785193404030432577639061", 10); + mpz_set_str(table[24], "10187219345026498206327613890311413079749970014149744260146289389219237776444", 10); + mpz_set_str(table[25], "1840491394547951013168554418948266969441523762850662260360355531074854100525", 10); + mpz_set_str(table[26], "7397867526390808344494686461152969418537013775639108333001354721688263188410", 10); + mpz_set_str(table[27], "5036068870201753969104359010852265468410913004304733341756441896124458851828", 10); + mpz_set_str(table[28], "2404476011504470302758567636525207627527437647847268625194430360600912963850", 10); + mpz_set_str(table[29], "17364002655826848575645873861903997154349751557140302331702560914712946071167", 10); + mpz_set_str(table[30], "198041343598909913407825314031581349255349300471969617864816810014168405444", 10); + mpz_set_str(table[31], "19939953104986055173308746471355776712420237282459384306930139793608995290294", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=29 +*/ +void EscalarMulWindow_e698dd0c27cdfb29(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11917408217324596855586517851658086517261015976052598027245036654858824854428", 10); + mpz_set_str(table[3], "2883968059593129633185458746763579988614458998578738667234249024001667111452", 10); + mpz_set_str(table[4], "4426261888354270882771564412443984047190519880794529359825901743683308477235", 10); + mpz_set_str(table[5], "11952148035215715125822447202686802822283761129105744445365575536929406520575", 10); + mpz_set_str(table[6], "21513705608110320280855953799918709432040078212812226969535239246557921811366", 10); + mpz_set_str(table[7], "2800834962371886931968096751334899818706718463079060829965571874633138208598", 10); + mpz_set_str(table[8], "14313991882703166346202485967549867187873333611248625850008715974525987389453", 10); + mpz_set_str(table[9], "19315136750785365998610966988139456274306389662105253480860896123674000344379", 10); + mpz_set_str(table[10], "20757911663737782174516715541929408382837752317263828301498464158122832952984", 10); + mpz_set_str(table[11], "20117019602322752672388878127847123591725710657575172987782532818829211564848", 10); + mpz_set_str(table[12], "7809533547034666337742955467156936622961864347336605135743612996880227815817", 10); + mpz_set_str(table[13], "3004513876655588111964898493103288819203570452897971697074223702513790522904", 10); + mpz_set_str(table[14], "9505880849101294671433021036863928345842139389293527761843942051680039706288", 10); + mpz_set_str(table[15], "1955257457314763828318644963108733139303371256746457600143840042654994065339", 10); + mpz_set_str(table[16], "8487606718983629981969113676823936884574919719167259787842950705242561711580", 10); + mpz_set_str(table[17], "9905570108236273455798923339377139719222163871503187866563007972318885983387", 10); + mpz_set_str(table[18], "5729959348180737537595984388457564054660714371310248979103860012223230136295", 10); + mpz_set_str(table[19], "6871366531144745323955290212305158983175263167064574507549466174536504156275", 10); + mpz_set_str(table[20], "8834253430534956296012959182313185614813712098499667040156665024119341905245", 10); + mpz_set_str(table[21], "19900793308917826910906043238643018389441619941471999171187318843890975280301", 10); + mpz_set_str(table[22], "2448186961364625066142716931262849888459091897772693570959328524618652827772", 10); + mpz_set_str(table[23], "11320699778989409904937823339569393225314665509840908207974869153995345759353", 10); + mpz_set_str(table[24], "6140992419359407721931795773387696398264211356458053927806306401735407474123", 10); + mpz_set_str(table[25], "11532527578408331007817699078779727660612695629908105164718393815754893305869", 10); + mpz_set_str(table[26], "3103962747980232851483005346087421659763316749863734133736929305431686146144", 10); + mpz_set_str(table[27], "16276232931028267207810576489756397980795039658350963086881277468815137678097", 10); + mpz_set_str(table[28], "5320760790696110047804038501045669461343918557341887697047805921981912446565", 10); + mpz_set_str(table[29], "8962862735228106264445872505785355861536667088899353293275170365537289572586", 10); + mpz_set_str(table[30], "552208416099914852270377912218582981728510367795113162815361752232063865919", 10); + mpz_set_str(table[31], "10208425026470757310072323328690713372169424420407606002933243360520853070768", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=30 +*/ +void EscalarMulWindow_e69bea0c27d04717(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4350032954465131730713461218130679989516820146907523029013733848220571809348", 10); + mpz_set_str(table[3], "2854634417209936886904362207143094938617241895075453527207989103397295707786", 10); + mpz_set_str(table[4], "20363813867853245544998990588216971707597722318158234837386116215776580998846", 10); + mpz_set_str(table[5], "19640312413035974187181797940062815888953019111877666398755316581356718072299", 10); + mpz_set_str(table[6], "16041939189889384791115203147926312498972349148329737862533296331482991991816", 10); + mpz_set_str(table[7], "1140305763694441286015588189764932013916048521785460877014385643699863272910", 10); + mpz_set_str(table[8], "542084569528409964372345461507403345276166531408477518262609407812453447371", 10); + mpz_set_str(table[9], "20411674472105645542735045592167607179454529156933108768591805676116167577009", 10); + mpz_set_str(table[10], "19104209658343450724527001695412145651052068824599525544554053332002237191382", 10); + mpz_set_str(table[11], "2743674979532720777057267299772072910663144255944144489929043881891160491305", 10); + mpz_set_str(table[12], "17961809768993317920350019103478205424752539947462079504381438520073049522680", 10); + mpz_set_str(table[13], "5546551655668682275282781024682371662488244970929195226359511683388180712993", 10); + mpz_set_str(table[14], "18135679793205943156848290395138206950963194544612724149121399087081613225388", 10); + mpz_set_str(table[15], "18313179050133510393873986385364648369485678893432014134966689851498314430187", 10); + mpz_set_str(table[16], "3945810889741684307318435240011832043385508486855796382128425405676939215843", 10); + mpz_set_str(table[17], "6011692872466802351918324009224447806149371877104298028795077040967612963458", 10); + mpz_set_str(table[18], "3626940918336533486128760951662889719206416929909850337428447482604461006340", 10); + mpz_set_str(table[19], "11664899471480111325862919080870604454546145374180623823915812195468599687565", 10); + mpz_set_str(table[20], "6338546172978246851051245667653730477922923531035010938597264405997708635137", 10); + mpz_set_str(table[21], "518940349053692900114523108633991523837843379883062194226936733969764065566", 10); + mpz_set_str(table[22], "6522310070980952033213799771507729897165930438327957804523973081102868716071", 10); + mpz_set_str(table[23], "100419547589926947496172466658294485175305155431501274136728754000993515833", 10); + mpz_set_str(table[24], "13845166423101358431718311924198491637412784486855329985607787525354129074625", 10); + mpz_set_str(table[25], "19182779558157706997387273998891031473603306945308072734828347840985550644257", 10); + mpz_set_str(table[26], "19942510866337884261771783583046666738727078709721354474788032670043154096859", 10); + mpz_set_str(table[27], "2433571954347521371403047681326038745937757495219039289650632854969732418314", 10); + mpz_set_str(table[28], "20336271442491716210022303361469099044718347997285337640636128368988103479336", 10); + mpz_set_str(table[29], "3148662982090953848324329087964597315758390424094324864567944744824256653004", 10); + mpz_set_str(table[30], "12617786301557788340061415046219949524699885761768871033608043325058969722750", 10); + mpz_set_str(table[31], "8998488835485146012550914204560093426551491744856710399549174777132647132570", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=31 +*/ +void EscalarMulWindow_e69be90c27d04564(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4644754257456236075278914399394058059420397993645252092903397071689643213552", 10); + mpz_set_str(table[3], "7093834075129968415337301554032254867061690683060278985481861656001677882880", 10); + mpz_set_str(table[4], "15409841921089912189622913883812561130041878838101344920898896721637428578967", 10); + mpz_set_str(table[5], "7830617612297769304997491156637439023664430486222672440279075775909571797282", 10); + mpz_set_str(table[6], "3487305618390251146572484190094370984538412440951902529671000233533365151675", 10); + mpz_set_str(table[7], "10765504169763674162759393874305908681296039888475360515569570793940932045928", 10); + mpz_set_str(table[8], "6498521114883270679643538942605534482856176046809447145439782976829740028938", 10); + mpz_set_str(table[9], "20281339791199286964292063525524165369741161236461759682855013741849104461782", 10); + mpz_set_str(table[10], "16737501468788111146411539232024716399961790917471931838582332243836129643162", 10); + mpz_set_str(table[11], "19402343935297944958298711428379965359335877878520036592589327976319229820502", 10); + mpz_set_str(table[12], "10289939111838419129338766710877774210959211322093649819810976011210182193734", 10); + mpz_set_str(table[13], "8223922158085606345146303052608086776236490441677506485508715298175458627175", 10); + mpz_set_str(table[14], "20539337747898691472741085832750956664482743181485636615932012669718984605214", 10); + mpz_set_str(table[15], "10561168163913032259950679086449222718878398724945727851266637814896982023040", 10); + mpz_set_str(table[16], "7258666947826866514722926949566160303777186683955033678817705005800183223398", 10); + mpz_set_str(table[17], "20401751220505552706000119316062179215521648054313195585262077050003647551933", 10); + mpz_set_str(table[18], "8367935162214506964820413656895561586536970389914147388437248736570551108055", 10); + mpz_set_str(table[19], "2205720867297009399944922505331480854196080897040969990907655725782889339485", 10); + mpz_set_str(table[20], "18753231187238607116882460259790419560821021577923728787424558853118917624096", 10); + mpz_set_str(table[21], "4534669483261502498454555031979754604789623266298379863506616995474967985525", 10); + mpz_set_str(table[22], "14172488450665879595245096634178080111713465169418265761142723717340067310597", 10); + mpz_set_str(table[23], "5696526324520127671002989538227920875329403637555827242423082334024107337209", 10); + mpz_set_str(table[24], "1206329684332039828964651595611269380402328627795352031319992380792485078388", 10); + mpz_set_str(table[25], "17972372469097908224259652367388522408279987066314364493983072112512657216039", 10); + mpz_set_str(table[26], "14448905903416685787897339742737450851047686799185511034436404254270953590447", 10); + mpz_set_str(table[27], "10181231898101111905088694830837847943004635469336591872506441893551990037260", 10); + mpz_set_str(table[28], "17958330700401983374599093120809253561362415701272592427016220742714384857035", 10); + mpz_set_str(table[29], "6007443933749217345994635958872407119748860550396694565716070669657686174810", 10); + mpz_set_str(table[30], "14276719612754420010455219113253724885466272319560365895291613201410170310450", 10); + mpz_set_str(table[31], "10693116629759773692189329295948538197161270692843773327458719522025162586177", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=32 +*/ +void EscalarMulWindow_e69bec0c27d04a7d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18168877122827038334929527623374674231182583683891922220179914694168010786609", 10); + mpz_set_str(table[3], "21395811060098255242833034628260081554785647687889044523645926681680028484661", 10); + mpz_set_str(table[4], "13367844415017515789777305479374977144089191780909676464344031987995809036484", 10); + mpz_set_str(table[5], "16074411931546690824652026447579165915324981546292288185615083410752375961393", 10); + mpz_set_str(table[6], "7580464821914578712695847440568741835359919774840061852660085700510160784180", 10); + mpz_set_str(table[7], "5346673312756119795929142505004484081315653916592392601250804345079494718212", 10); + mpz_set_str(table[8], "9400452618118044380167843348869550882126738430534329856930646946072845826914", 10); + mpz_set_str(table[9], "19877022756927401789929353662508552637001579550825019106361227797763225828014", 10); + mpz_set_str(table[10], "11344712897977616324604615269052957068440855217627556530481536722932367046697", 10); + mpz_set_str(table[11], "21454340139778828988490122275370292435478856890507859952044368035766395167165", 10); + mpz_set_str(table[12], "21728667295636532545786442398160936907123045759740626529083464212445498771803", 10); + mpz_set_str(table[13], "9496447065220600072732124726941341547208600170407379076709072318418833657899", 10); + mpz_set_str(table[14], "1984697856201695259397868842203304549391727971727361732486915043413790916446", 10); + mpz_set_str(table[15], "5864205212580166345710335386415413373628377225097547470558242424491418049975", 10); + mpz_set_str(table[16], "15467384593112544208550904621637938940819772220998069930254989149520660568264", 10); + mpz_set_str(table[17], "13732634352298231231186568628160498473001952217735168106320637787088824812082", 10); + mpz_set_str(table[18], "6310704219133213607427284905330742358802037490549873845104009471331789948263", 10); + mpz_set_str(table[19], "8244326056827942803574592909275566951059019484662582292518486442245427496328", 10); + mpz_set_str(table[20], "17860425133426115012992100275292042363933776614239554876813471744327779718366", 10); + mpz_set_str(table[21], "2704602191345245792891905759546835856750732083256594149970326047694894768417", 10); + mpz_set_str(table[22], "6226133231413948142546942013839354941290887461387672537958836650050287480780", 10); + mpz_set_str(table[23], "11524291542935660287360855314476343150908538265570984288264336745969245965333", 10); + mpz_set_str(table[24], "7317838014577449588227715046033008549419937563866544370785624382646342167982", 10); + mpz_set_str(table[25], "15668375363151717222979808655957280264239929005544159585611141373699288235927", 10); + mpz_set_str(table[26], "13470315519331989093227502282047593782489538748626409820123517429593804291901", 10); + mpz_set_str(table[27], "9618461529532936701948164118242433992104275319665351481969898980460429470538", 10); + mpz_set_str(table[28], "19447071247334913032627113703119308492956565317443610634453007167725563410838", 10); + mpz_set_str(table[29], "9160898587124532346718199507262224741002251747603839372568935620559957223174", 10); + mpz_set_str(table[30], "16191884273407827105310031625928532517066508356426290845447781296919162298470", 10); + mpz_set_str(table[31], "11162402218840562691017503436330049572505961003118743691522907428839903496698", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=33 +*/ +void EscalarMulWindow_e69beb0c27d048ca(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6695775034168506219261537941034956927584422065076874801251660020428423104026", 10); + mpz_set_str(table[3], "5197420267683237306240775499875424144996523958400069022742285016534913385799", 10); + mpz_set_str(table[4], "17074609679021226285449642930975458476511844534614765112810293567988339496833", 10); + mpz_set_str(table[5], "10533691752850825062476518417950462929377671083305746097362765594757062687232", 10); + mpz_set_str(table[6], "13356608653567414655270342780312496170441603732808275648772250549294619087714", 10); + mpz_set_str(table[7], "1030716247791189929844088863163178366484069672471789317426450938865890574778", 10); + mpz_set_str(table[8], "20510571107372697486394751374344875434147976921404258783584332447627675396257", 10); + mpz_set_str(table[9], "12770083372100092832406108275349223480759865233011877406286425086472397887457", 10); + mpz_set_str(table[10], "223544369321138288883341539066019400464550950532942330029526813373258985528", 10); + mpz_set_str(table[11], "7616138897944611542954874086896865721938130685611930759645930549102552235095", 10); + mpz_set_str(table[12], "3087013059053718874934218938239071184961131231178827196009232241767383923591", 10); + mpz_set_str(table[13], "12604252438843664306831942589605285290630596405760109418660139017646646244269", 10); + mpz_set_str(table[14], "6857523874460704459251130739841555713735596313837728208122888679423297438372", 10); + mpz_set_str(table[15], "20485883534054426652566562959687928237813615165320957258873762291411180563164", 10); + mpz_set_str(table[16], "4358251930912448671298381923638710986102635143209553461502002448706919720401", 10); + mpz_set_str(table[17], "7142242320858937432342378044154436327354192663127754244697701771347165274606", 10); + mpz_set_str(table[18], "16940427345157479162358821230086923264652946527570868835759718148888833356980", 10); + mpz_set_str(table[19], "7377776643855758149954231921150968590556447189790842128654024741589565501977", 10); + mpz_set_str(table[20], "16825286187462427966438509313184801551590788729421980955777353101940276958482", 10); + mpz_set_str(table[21], "11213483608634305003613466676890484036788810486264758367374906029343525674103", 10); + mpz_set_str(table[22], "4604905195665109541955183695302050658901838170989978908038913249059952648801", 10); + mpz_set_str(table[23], "16202059727028069007202632575798283229373099948818861709732019157240754134267", 10); + mpz_set_str(table[24], "16452157401351640538938099965252676476108500978809287709572402698502049428276", 10); + mpz_set_str(table[25], "21340556381956640404782213432278949569712095946165390109738024692733598131089", 10); + mpz_set_str(table[26], "1845553526355757456853030171475488788243843504865980903413480810159871260653", 10); + mpz_set_str(table[27], "9073244485009210828068583976267719830425244296238830099204259544852268624066", 10); + mpz_set_str(table[28], "5924207578131749931692341430444437708280021699637339929201454236396772622131", 10); + mpz_set_str(table[29], "891733986774401515492584735286979329004999536934152306058649704163030671485", 10); + mpz_set_str(table[30], "19954984102575697683024763856133322056785812670293251149947811629454727255473", 10); + mpz_set_str(table[31], "7930092559151051993125981285785954615902139308034469080070188670778564918033", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=34 +*/ +void EscalarMulWindow_e69be60c27d0404b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "19356731180643309637009121646192804396766471748907440680403874992498550563936", 10); + mpz_set_str(table[3], "3214400749599751117032458916881242732298803247792239104774025503399355667725", 10); + mpz_set_str(table[4], "16176731219468381342338125115096093861536452745109122160740171559764396541701", 10); + mpz_set_str(table[5], "14292624222819795233131788626348133481378384030246167916543272349434345280017", 10); + mpz_set_str(table[6], "17001560595214375341407271813373493016868159311775717637125537997777326599986", 10); + mpz_set_str(table[7], "14098620486805565271297686041885804202986304629438161814105349240085262180484", 10); + mpz_set_str(table[8], "8950825534540625735109708330862303475368234806272419702362731373978759921032", 10); + mpz_set_str(table[9], "3187760222925636964961005022102038508294617828939716339969126545665490911639", 10); + mpz_set_str(table[10], "4206423529377484823374053871965263992268492361308043993445741405815440558195", 10); + mpz_set_str(table[11], "117402775101048846251950640665847179638595588207873204021950654297341007322", 10); + mpz_set_str(table[12], "12671804052728908592353296845628376913703600024216805591488162991063369538070", 10); + mpz_set_str(table[13], "9643532933350186842582715991489586688376308608952745935832020889414349175718", 10); + mpz_set_str(table[14], "2003483400428325022049318565403033513523819391942815705601950420113273071638", 10); + mpz_set_str(table[15], "9564509433383063496563620129733447283928935829151622380292623870105823123397", 10); + mpz_set_str(table[16], "13172307421343686976662800077391980043199555236705928617999793099244381275047", 10); + mpz_set_str(table[17], "9473492893959582088074400216725431432817228363183147064907391832599934156811", 10); + mpz_set_str(table[18], "3175634055931942852687296940283492856782159164762715277286248415655419167369", 10); + mpz_set_str(table[19], "19645064273841840834420152698365923439503423041115413270278618553739145726426", 10); + mpz_set_str(table[20], "2187325799028424613009897104407761487517923043665367878843245053392354789558", 10); + mpz_set_str(table[21], "858125624403277591213185002708527141323683107681104663947498365434285988710", 10); + mpz_set_str(table[22], "8928436775642075381449033430442251127214071473210180473154443506344988616047", 10); + mpz_set_str(table[23], "3556056691320241384174749967408654749136532987869766603026020578477093486658", 10); + mpz_set_str(table[24], "15882762071326605923630789856005377427598219925296721519185181863534340760741", 10); + mpz_set_str(table[25], "21013311961759198647484428840170370451737520016703334902877566437243610426333", 10); + mpz_set_str(table[26], "19617881628561550943891951219507153773810407064128297117390250215815646453171", 10); + mpz_set_str(table[27], "14564512694077277786275475836119383938096845806807349610320860538929086123285", 10); + mpz_set_str(table[28], "3909991144345443273336006272149351586238824009912076105297289353243649854339", 10); + mpz_set_str(table[29], "9653609465399255206199387481500542044995699730023024980360288543930623874623", 10); + mpz_set_str(table[30], "11439753936921323737030138941142488791529072393958106102322749616254417325380", 10); + mpz_set_str(table[31], "12110200772811938781097335995157143221829926879430281715589261757357242155172", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=35 +*/ +void EscalarMulWindow_e69be50c27d03e98(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15477858470919536743712764743292374382766910760573518973501234558946829424107", 10); + mpz_set_str(table[3], "17638789856201997338913036702341536640895282466111091966155486992750146958438", 10); + mpz_set_str(table[4], "7342690806915747576242538190877019505351600308035800763739279162133829363537", 10); + mpz_set_str(table[5], "5542290470077131483708137691828733226529489703740740260042745111531161118255", 10); + mpz_set_str(table[6], "4262049143693218282345805448276452210668203219524666610638765049564490883972", 10); + mpz_set_str(table[7], "8354133749962510427375999573843822831437235408714054885162597498295243407650", 10); + mpz_set_str(table[8], "17149998808269740365260796258728720037784140211237634441916366354474099540770", 10); + mpz_set_str(table[9], "21659796089416995949593404673332180275815497571442342905020865263110379860492", 10); + mpz_set_str(table[10], "5544115216916018249681852933145303572849458084775929644277059709748102432415", 10); + mpz_set_str(table[11], "7996278026520385999790495450140160036901347094531618138787726566105786893201", 10); + mpz_set_str(table[12], "5721675316776116677463060138927185301057866558465709031545140648154769427783", 10); + mpz_set_str(table[13], "17117856567397355908509384205517499340244585771242434131528529382491888164846", 10); + mpz_set_str(table[14], "17705309800835522565027208214619711057887528020635061576349562165907024080259", 10); + mpz_set_str(table[15], "13839122306496999981028366601288764577930256081754733203274302140204568362814", 10); + mpz_set_str(table[16], "12365339860491877448754964037017549012894874043326183453800663588685239129458", 10); + mpz_set_str(table[17], "7103352533142456625374776482097144897197741475549515134770911906817996853812", 10); + mpz_set_str(table[18], "20153805647755735674952030814882814200345002244582151700061172622136610649128", 10); + mpz_set_str(table[19], "19444840935820463375633100488173678100595726396437778215099437545187000336739", 10); + mpz_set_str(table[20], "12841849695787951519393669935771785819784466010534322836789720666863555910500", 10); + mpz_set_str(table[21], "14382950779010918477707385209038675456891395351788920609263233734261375421368", 10); + mpz_set_str(table[22], "20927148739115175789658571869286401388014111538113579857632566180932257691779", 10); + mpz_set_str(table[23], "18977034102311500876178051164245263182357848046092241842306215894497748163515", 10); + mpz_set_str(table[24], "12579904268229887884049836087446593707449070785690850582924631561204008263755", 10); + mpz_set_str(table[25], "11760996811281626838470806316954716199716752673144666141920798572658978581592", 10); + mpz_set_str(table[26], "18452087186763282521507882040320950290104742840759543597224990555567967253823", 10); + mpz_set_str(table[27], "21601443770186145669257018965320399635222072691176301354036469676415541588433", 10); + mpz_set_str(table[28], "13322368584583048478563822129589427826843795482859734430026366838899453843387", 10); + mpz_set_str(table[29], "2406525191445135487303102887742565347243926932577196863745858903452202198695", 10); + mpz_set_str(table[30], "5500441860857208815025223521189103935787080535077269596074130361358824514495", 10); + mpz_set_str(table[31], "11617266299199627504717528199837393719683852577001875437407627848684233508015", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=36 +*/ +void EscalarMulWindow_e69be80c27d043b1(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "17307669482643854263039904768588642635668857066388704306432435831758544837368", 10); + mpz_set_str(table[3], "16663190255416788407704976808532117057267079617443273321124829697453785444918", 10); + mpz_set_str(table[4], "7767688629439000977837583357048335803751727340651680730246959289946807183372", 10); + mpz_set_str(table[5], "670581420579370880760146636132432925158828701960760091123631831306066305857", 10); + mpz_set_str(table[6], "2754250386286792623408556107974057271384273619504869025763750491029768906432", 10); + mpz_set_str(table[7], "8972786173153157070923759063212088798164256593722111835652463937188906463832", 10); + mpz_set_str(table[8], "14952056120512888114956945784836096542980969062346335198552004255800581056809", 10); + mpz_set_str(table[9], "6208756170645771699974023924287711642819871950426788021388368388870068687211", 10); + mpz_set_str(table[10], "9487648326365151551210554720420517469667792470137555600645318278604820484844", 10); + mpz_set_str(table[11], "1761309055531769349179645391904019713243903726225475135955152977686810583411", 10); + mpz_set_str(table[12], "5393072332321576326324197849135578399689821905720106921767796905958389363455", 10); + mpz_set_str(table[13], "10219118870309667485905216591926989718802585969480959458081391563502394591754", 10); + mpz_set_str(table[14], "5012767231488385044616901150444815729766025148641534181224024719384569893478", 10); + mpz_set_str(table[15], "16971623375723949656735019154248722809180354622485970215410552856554116607732", 10); + mpz_set_str(table[16], "4641426648770894369488744049829994303917271881423240560998089530609770090830", 10); + mpz_set_str(table[17], "4885584141747048552920631926316329629943509280393191735953118555351800251524", 10); + mpz_set_str(table[18], "12168020483068372765472881384015064854173197357090588010091059008891478831924", 10); + mpz_set_str(table[19], "18769920721582347071100103860066024471886671624714267331128145731329578228191", 10); + mpz_set_str(table[20], "7486224941958967137281889168713117579286318794267933621159090263190091529622", 10); + mpz_set_str(table[21], "21008971468325197881661859020566988292260522741791296564199977711833331249447", 10); + mpz_set_str(table[22], "4303526478971332560438812109593348718907589330664035157460219337426436086699", 10); + mpz_set_str(table[23], "20792984994808067430361918636129565102954500138670007924286812085776974057580", 10); + mpz_set_str(table[24], "14559224584593636533853717297473881862676223317392544680668888444486518910425", 10); + mpz_set_str(table[25], "11975107998928827633083789319419094147500486171078475229516207544676716420033", 10); + mpz_set_str(table[26], "7728378291071634444660618821270833315069857642508327085412478054352067999083", 10); + mpz_set_str(table[27], "20332442452387954184551835122301709925524185513837803683177065672085544112959", 10); + mpz_set_str(table[28], "12798918567003036544589386025591090627172197031340787352654563746126406921707", 10); + mpz_set_str(table[29], "3329299673492925078594424888360807614697713101209268644939864284199642011774", 10); + mpz_set_str(table[30], "18394010273015341621427578548822976137750553416709676276954674815272968212961", 10); + mpz_set_str(table[31], "13615908497862565630094458349378103741629210136694775430382238855588043856859", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=37 +*/ +void EscalarMulWindow_e69be70c27d041fe(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9586950849703040997332496941311580827976739144750984047254996838554546235603", 10); + mpz_set_str(table[3], "2090285971362784586936521878866714584515422069745141071121222574879560547495", 10); + mpz_set_str(table[4], "20209442401801277282153213469610084346628371453461430310977869157838601964593", 10); + mpz_set_str(table[5], "177047666113722750123940819379330396454553543995305900754850011316619314611", 10); + mpz_set_str(table[6], "21621217688827256178324175700156122327875740717499516176272125761887287425859", 10); + mpz_set_str(table[7], "6427841745400342600990354490036610634313918528912098554943136181273175607692", 10); + mpz_set_str(table[8], "5427492986714083811507634481699217234152653916086833474156145822988026504957", 10); + mpz_set_str(table[9], "4872529677049968453427621564178312615471969367943201516431203863422062681938", 10); + mpz_set_str(table[10], "5728361243232283934190671989748947452660946050753721231095853259130128738309", 10); + mpz_set_str(table[11], "2050682098312649517547182126261112843356939265652326979687561223810334757974", 10); + mpz_set_str(table[12], "11029738845484600582427172624502595796793017211233240961500181076244076636737", 10); + mpz_set_str(table[13], "14215812279240788836354389861098019414358714808301542167064399870385144208087", 10); + mpz_set_str(table[14], "20141671793981498983094554391078722331741181770577364751935173292266384291267", 10); + mpz_set_str(table[15], "9423397011088682550441781828134858336342533574070101464963920574476131359448", 10); + mpz_set_str(table[16], "9511970957011993585023995786977374973306376936151726332981591230076928168021", 10); + mpz_set_str(table[17], "5050989132399831590142800043144646568552442494682751556916392292026512126564", 10); + mpz_set_str(table[18], "7921431342146006518841472403349361694696837284346661346550700645363707173551", 10); + mpz_set_str(table[19], "369114272715611994947243500141363187314941700907979969215444571664389154462", 10); + mpz_set_str(table[20], "393551513784143364217846086657753182891808645211302657506021269111983622728", 10); + mpz_set_str(table[21], "17568513579355029305508006474298070400828434968082588523603246629715173711746", 10); + mpz_set_str(table[22], "13864578826386492876630752562033073076136187202442046249877980818586207543144", 10); + mpz_set_str(table[23], "12457587815579238336015380657698245398677469348250732194383948196853468122686", 10); + mpz_set_str(table[24], "13029983506654160991296430284076194518578140374131769107184768203920377732908", 10); + mpz_set_str(table[25], "18048538059080820310986027973940517109996059980332614120410298329771255320983", 10); + mpz_set_str(table[26], "11144874847284538497187220686105175837653418347949213702251932893557585038064", 10); + mpz_set_str(table[27], "12016895202186391285166731990364722640940496755242143853746342358645015626449", 10); + mpz_set_str(table[28], "9950668404031269595402973478118581272405627596631633280905024236166815290178", 10); + mpz_set_str(table[29], "17276575103192809851485470255630636568755112967284605373073112521118419282982", 10); + mpz_set_str(table[30], "15459495953028188290022630542066258171880759101557517529386015675997556173701", 10); + mpz_set_str(table[31], "5404968800748103568231945340712465020004654645782844402391353716053549582786", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=38 +*/ +void EscalarMulWindow_e69be20c27d0397f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11031848773291267873186065243084213872315980512370138346458027946088130060914", 10); + mpz_set_str(table[3], "19855276696991515082872634390524015252319628835119055625627463036088024324694", 10); + mpz_set_str(table[4], "9759720591348236317390888618674244726821738782822305037163100223258270286344", 10); + mpz_set_str(table[5], "10366086947529075828253187164254133265922908035410147262025891268524691138562", 10); + mpz_set_str(table[6], "17876737775327796908273541001588587099464883400623881497813240134799268653301", 10); + mpz_set_str(table[7], "4664070995588760990363270210931759392582902505684778160337574775218938667332", 10); + mpz_set_str(table[8], "3163494980155562615310616269176352735423265350881561383679355580749055298850", 10); + mpz_set_str(table[9], "12743244853906757184841663597029604911629298558376404056194098044105937995801", 10); + mpz_set_str(table[10], "18894191482342621837486150377182799157802489170343843837811245990870506736214", 10); + mpz_set_str(table[11], "4812733793949861117383214441752403306242210289856783905371333898642641082497", 10); + mpz_set_str(table[12], "3594745955763248975589685637593398913185618933678360958857582997592005964766", 10); + mpz_set_str(table[13], "21395536110796607671721566277692559800154546051703301306773740203894868718673", 10); + mpz_set_str(table[14], "21621130055189892264800018463483264346920254848096408182766671993811318501985", 10); + mpz_set_str(table[15], "4422467983394168751929855389350597350118535149832095890949810085966429025447", 10); + mpz_set_str(table[16], "2998997651710192522321163098409041871650587829905058181318071451964038769990", 10); + mpz_set_str(table[17], "19709820544091923057607690820673843924219687381275553503067902933947559506719", 10); + mpz_set_str(table[18], "3484392812004749315642181652805335528377334673018196404998868095496503885632", 10); + mpz_set_str(table[19], "16322895093377578280779646179210626116794987660120746222943606082886827128827", 10); + mpz_set_str(table[20], "11403907538482891572428539697549038230800547825992188342881209246537405440780", 10); + mpz_set_str(table[21], "18195646139215879357148116323224212104863972717849085954880768019064292830079", 10); + mpz_set_str(table[22], "10295025732985283395518330747291968152692673857998328527008627549178215995215", 10); + mpz_set_str(table[23], "3704001853065649188851269168112010354231522884233765296423330296985360487733", 10); + mpz_set_str(table[24], "19285914399489289455204334894067366878018411935925540944308891092189202103041", 10); + mpz_set_str(table[25], "11275386310323277376445688087258777292227029473362709315980123513512352487597", 10); + mpz_set_str(table[26], "11253128570410572157795965460378200704251745324433664259436364402809952469253", 10); + mpz_set_str(table[27], "13678124442459781648502116407119163395996885151427816228897318850876370683761", 10); + mpz_set_str(table[28], "17131070275236789601069549782601657932528022188130328095983074153079792292519", 10); + mpz_set_str(table[29], "3737602467673707200309864835361347899625671639151883114723218212611516799091", 10); + mpz_set_str(table[30], "19428526732889569337036345477989611076037248893449456467054464464715759480357", 10); + mpz_set_str(table[31], "15415803230511320441427357626992665138327609628685860759397869805137079110259", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=39 +*/ +void EscalarMulWindow_e69be10c27d037cc(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1877473440848550039737548624719092669039759436076550397043550756885273933160", 10); + mpz_set_str(table[3], "15553609960609674142111547668862713168734737693644666320650247603437579965475", 10); + mpz_set_str(table[4], "10373982481710347506088793024234259396769940487443965415532306949329297536895", 10); + mpz_set_str(table[5], "17187216354891779721016313499051591766819944027396007071682229274026222977634", 10); + mpz_set_str(table[6], "20074006355017003729414061766882177488757633952325977993007153632742610396327", 10); + mpz_set_str(table[7], "17818063815384074821217830049696443201670983270981606315355185228492730280553", 10); + mpz_set_str(table[8], "13754512859986013143208423132991850272487128276456945247171484994612791296596", 10); + mpz_set_str(table[9], "19576626816189887509125860470584218340717735128787286133316231115932418182346", 10); + mpz_set_str(table[10], "4090049760204722842848025313106885472851063152524382754646298895430781342940", 10); + mpz_set_str(table[11], "16437033798863112996435931936175199674848893514477165013039019126659470799872", 10); + mpz_set_str(table[12], "12615047441256253439982292579412711384034157198132875227190324279725098764971", 10); + mpz_set_str(table[13], "17017295969024965424244491173204323307434344858250605604827268491475338720451", 10); + mpz_set_str(table[14], "8851104979457438759377756333954165977466782187548958973525456848721853520552", 10); + mpz_set_str(table[15], "19616112506100170999975693192631919504145452951048369659073636955180627834921", 10); + mpz_set_str(table[16], "3543893977283419677653354469301906648845506262045028984417193242222972402571", 10); + mpz_set_str(table[17], "18672100037313803442629607804696410009018030510908372236366809980248214902565", 10); + mpz_set_str(table[18], "14151011215754753275953057537504572555245843780363420956653380242721031912417", 10); + mpz_set_str(table[19], "4789122634383947551023343656690425111752922990621365807138913830048291097285", 10); + mpz_set_str(table[20], "3365326030486176209860959005766980397057116613063050978463177715868121930579", 10); + mpz_set_str(table[21], "17743731771785155697004375046425413113431470112660751550096430241416838955526", 10); + mpz_set_str(table[22], "16334228387987139672938764182719400157865839331892878617199650018650049902942", 10); + mpz_set_str(table[23], "5949779148425289097755576138057407910249225977751658101615058920163626074715", 10); + mpz_set_str(table[24], "1767637989551376072895631775304064545854810537463471627137294610672587309708", 10); + mpz_set_str(table[25], "17731423747662789116383437956431590385350034518107417296138794406822673280158", 10); + mpz_set_str(table[26], "12307692310876733199147427527424422362926076847253980331884952686598334900087", 10); + mpz_set_str(table[27], "6181717108367136878887630829184362294011564924843166916093380887665473172202", 10); + mpz_set_str(table[28], "701760095059377045455583312563164763755476495091670659201475255099307716822", 10); + mpz_set_str(table[29], "9636162240031677877166641100913295101763219520129130789084217061701537105526", 10); + mpz_set_str(table[30], "7083854214784697692743884873881116891712577934450873605611161870871264119856", 10); + mpz_set_str(table[31], "7045038150918812377889732524655437902810531256775325111590096408593954009046", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=40 +*/ +void EscalarMulWindow_e684600c27bc7db8(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6036355027117291367803935904347904350611569604994628698666365676215607386874", 10); + mpz_set_str(table[3], "9470781519771956392054550195937279092773873670145135625037233029170034571000", 10); + mpz_set_str(table[4], "9532675295313861579306183807300053245837483443707176933432236413786711232615", 10); + mpz_set_str(table[5], "12602590000410365771039350337230672602022635229535744066998938056274774693962", 10); + mpz_set_str(table[6], "12474093035349057065435248151390233447669146673507024367415212273807397471068", 10); + mpz_set_str(table[7], "15090247843821716202793224017953423716294976975730482056742963266949090704321", 10); + mpz_set_str(table[8], "993401335099733679196104478246237172516229959107401964890709934715109383666", 10); + mpz_set_str(table[9], "4549835431802039209672582833046615930670613868388322557846320365486432865329", 10); + mpz_set_str(table[10], "18615693556164856515661662500211371115751969491172607019818868580531772769520", 10); + mpz_set_str(table[11], "12557380975196622146484143952799803377982900778384937927590994448162712406411", 10); + mpz_set_str(table[12], "21528064624971072836570433006788669323788103143815997699785127963180931679285", 10); + mpz_set_str(table[13], "2815013592661255772060458001206715011409597520516504741640748597928030514456", 10); + mpz_set_str(table[14], "3283979506432038757211295161706121204468048662680735081633823925636801547138", 10); + mpz_set_str(table[15], "17979259647516459885536032829330171271887168033049512956985480630126402921607", 10); + mpz_set_str(table[16], "17679460920469054540961921780259819518073073225825973021584960591844923526248", 10); + mpz_set_str(table[17], "1435546266715668935095994191129531425311368275460137428461902948813106005133", 10); + mpz_set_str(table[18], "8529569085560589258729123956325076977912516490984024131424202844108799299247", 10); + mpz_set_str(table[19], "14481204978249534685224508067409260017760408355243377092535739467560252539864", 10); + mpz_set_str(table[20], "5469648139591835701556357296669245434546329076027353304988201187896135733761", 10); + mpz_set_str(table[21], "8656399088437178980013918229953485726086133022762077932812311030398244680669", 10); + mpz_set_str(table[22], "9453484883554390052019033701573798569441565517195307870806396090645110901971", 10); + mpz_set_str(table[23], "2428705983531577652063225905012638240205977788535395577120897179597078390829", 10); + mpz_set_str(table[24], "8770845409247342317045867059283141752214525325141736923338817738273720253637", 10); + mpz_set_str(table[25], "10227070102072752704599056055717145346089895691242846586200447274931375568504", 10); + mpz_set_str(table[26], "12351497051066130754136747927357673006783165273221671674795978348293197924111", 10); + mpz_set_str(table[27], "10399138865887889172750326544145319920102338612354666914685658386385743856535", 10); + mpz_set_str(table[28], "3687201658877386269675562742672190827865815856365296497260718839984937528322", 10); + mpz_set_str(table[29], "11372725189122860200735097372440512569231475100810300031276146876637703080784", 10); + mpz_set_str(table[30], "15842658200268673885101124458352413063036847727835395734460438249573819844142", 10); + mpz_set_str(table[31], "5260848707964136641726275398826795509620380915293530555564019231519378758485", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=41 +*/ +void EscalarMulWindow_e684610c27bc7f6b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9049157878168304256653449895907353781869611266644813952473684865042109337042", 10); + mpz_set_str(table[3], "12389470665747793185620358781235851242679605886629314583690882283575935256672", 10); + mpz_set_str(table[4], "15820067201685709791446447583790910155550308811742442175406022761338328454431", 10); + mpz_set_str(table[5], "18933615658181637253586639093236307605169765043574853214660237871137889668122", 10); + mpz_set_str(table[6], "16268031786082356881390126615340499834888973547448347407612074392001229054116", 10); + mpz_set_str(table[7], "13403374209066712765051385005005290202580655781281156893506620579185125651434", 10); + mpz_set_str(table[8], "12443349336884307714178794889988387823359717547244391161588276962473746464301", 10); + mpz_set_str(table[9], "8865217004801814820071754424297047193368031348497541004043826193944071940478", 10); + mpz_set_str(table[10], "10405312675358469123384333322022234414010992859146270783984523097261588402079", 10); + mpz_set_str(table[11], "15576110011669724418535862529578949341724918859194415259002744070823422524091", 10); + mpz_set_str(table[12], "2959121400672142294042865442517391633632715449545284698594378498018112165467", 10); + mpz_set_str(table[13], "14329928203050411659263068059568018648091852703579618818241874225854851033468", 10); + mpz_set_str(table[14], "7114766822589092509785506520541005701778906668978339826593984526368514401858", 10); + mpz_set_str(table[15], "5775178933170501931557559885350212563450149681901808721200816015750405320044", 10); + mpz_set_str(table[16], "8944172830892074899314370751557040890150768955823981583652756837995492991755", 10); + mpz_set_str(table[17], "7512312292369758631512001425697241522515694700567727045416645279145705831892", 10); + mpz_set_str(table[18], "550897582470191906200868582814473987275434131570257271078587066370896560559", 10); + mpz_set_str(table[19], "5976763693632566058193596669979825661089187124788895456697614504801823884741", 10); + mpz_set_str(table[20], "5078133351430707910420535872715477894146235008945906157749939301851969963200", 10); + mpz_set_str(table[21], "16713977601277385997542346589271210943923985259682807939018692402173239634212", 10); + mpz_set_str(table[22], "20325773786908361664154055870513974619336071512807780736515037336216729482098", 10); + mpz_set_str(table[23], "12933368737451083278239958495890763526451440857809685985614786462151270403622", 10); + mpz_set_str(table[24], "11172678350195317096946317157489734078869608787387241745585886646764816080012", 10); + mpz_set_str(table[25], "4682520801386285636306564508974514328180899311914695159998232017469596845530", 10); + mpz_set_str(table[26], "12635379674674560804687198058232239264138501915111472333253480725869332688338", 10); + mpz_set_str(table[27], "1766653178103027911686269525961088666167393838200439665857362631139132338384", 10); + mpz_set_str(table[28], "21834134436898574588628001276850799742861006774133000031501677961314850076484", 10); + mpz_set_str(table[29], "12427429562864458517471234973378871969504922247751762022411217185105625195059", 10); + mpz_set_str(table[30], "4528582156170357658879720449774402365494927005978391077176929516480011110960", 10); + mpz_set_str(table[31], "19566660159865826747666264107866451108291737741968835810890051194038117832458", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=42 +*/ +void EscalarMulWindow_e684620c27bc811e(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16374769721376430840842257175660037581116689253001572418668231472135368119129", 10); + mpz_set_str(table[3], "13759412791308992624630717261380499431298404595960558382849326605388483813141", 10); + mpz_set_str(table[4], "17101118581080733788377267369796649744646094273525875582730309545814037104786", 10); + mpz_set_str(table[5], "8346925150147448846650655000830061632464893918480721100977869267550638743740", 10); + mpz_set_str(table[6], "16004997392325943104130831332697511746448901049675259649965618000507887314881", 10); + mpz_set_str(table[7], "12591368094644377864605631759305201560354168563962153951759207469634945341775", 10); + mpz_set_str(table[8], "14259351533215298779115106025065732588210893711127839722757743808238665984759", 10); + mpz_set_str(table[9], "8447442187204601448429746272219199678215852240535899646054374198700423679942", 10); + mpz_set_str(table[10], "10080292641230775537158183250493716731922153696018921478234635515902884448768", 10); + mpz_set_str(table[11], "3008166143834905196676500458556366815843921169320021276149276941023424251599", 10); + mpz_set_str(table[12], "18635330010195827731172046070424714525600593103448319680796985336934838426225", 10); + mpz_set_str(table[13], "6870714717041282152731506039404232002968764000137863568100152500018094628970", 10); + mpz_set_str(table[14], "9715983011735451313214040659603599731191529157725650820964107012571024668044", 10); + mpz_set_str(table[15], "15668341751832674964899719439620043834808587814313816475290936280710774121061", 10); + mpz_set_str(table[16], "19854313321788681655192570071804074598688500260763627246614618514799217710814", 10); + mpz_set_str(table[17], "12840271923779161012362023610679191895140531269505260846570628796771298859403", 10); + mpz_set_str(table[18], "20548115208111910058272152820751651134506689438829448473059278499725406848389", 10); + mpz_set_str(table[19], "14073771305216179686338663031673579041085817872178587662397402004081466548333", 10); + mpz_set_str(table[20], "13219941232407496667425796549282794247891842765519607465499369099899098913637", 10); + mpz_set_str(table[21], "18204552199279958506336653343673291506079741563809223371746634352472005750653", 10); + mpz_set_str(table[22], "18626223079267935096194035064030472731715594266969450398370618589712016167185", 10); + mpz_set_str(table[23], "10110268722853574487780406783538284371808370244403645386850820780451748844582", 10); + mpz_set_str(table[24], "4346346756930467159444621652769162319531926581718261690159687638253374942385", 10); + mpz_set_str(table[25], "14688175027282253884378419588624911773077580306143678671700907543443280367422", 10); + mpz_set_str(table[26], "13752713808876322463577872240992761807109066269294845721398393931142717144357", 10); + mpz_set_str(table[27], "6287433609528014121110982752683173229279511269211206698315472803509822189095", 10); + mpz_set_str(table[28], "18885266426395519080949431678122133331901594351690199604116272680955650358381", 10); + mpz_set_str(table[29], "4397095009026172161718114572112466940649154554219936020208951320387153221836", 10); + mpz_set_str(table[30], "1636679318348535354406811409644190254695155426589959637792501050388367968533", 10); + mpz_set_str(table[31], "6045362009124980420721878937399849376037622131458142857123588639292698397008", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=43 +*/ +void EscalarMulWindow_e684630c27bc82d1(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16868424585950443164167961595249842310394768842524058680821397465715237078422", 10); + mpz_set_str(table[3], "13469605623336401919277411491989737457586432846632404104363430941889579430040", 10); + mpz_set_str(table[4], "5643192289783613541492335245459958457219080118959071624407680008476345563905", 10); + mpz_set_str(table[5], "15240871288722266231269940981572371229064054921164118653025676497002265904966", 10); + mpz_set_str(table[6], "15035628225327978120938559230666779734194043221229825814342593400264078590039", 10); + mpz_set_str(table[7], "1251884969097280329652760118318800203768878648453025276295791059521598247300", 10); + mpz_set_str(table[8], "1699932370279535150438251664289841801595764750938415617442722746564888777697", 10); + mpz_set_str(table[9], "13701622976582581018113030761401213478445108136797667122483584523425622719875", 10); + mpz_set_str(table[10], "18373025158868026427597340437438471626969327053080751886183152715350045713493", 10); + mpz_set_str(table[11], "10520297404632996149484278163172792833592428348950663009672001557383667940961", 10); + mpz_set_str(table[12], "11239722570657638882071847349104013664977783536682673447616479473318427488", 10); + mpz_set_str(table[13], "12006002656745879272977492507231887274693978835865855329047391265225883250341", 10); + mpz_set_str(table[14], "14434000709848329936623811299339195492571122619211660652519374301307752629403", 10); + mpz_set_str(table[15], "15852871632838075373291692443081083081819702186507978563236260236107328928554", 10); + mpz_set_str(table[16], "20597184115028219437082729766105743338146613662234305634378939463830392148142", 10); + mpz_set_str(table[17], "1245829206776252932053761235034509701390992797593773353291677440533486148901", 10); + mpz_set_str(table[18], "17079330057571769415442490216644367208114046384039823297526628170141464068422", 10); + mpz_set_str(table[19], "11505668642665180770732571612427865347138736860208769311006727188120772373581", 10); + mpz_set_str(table[20], "19449247283899615663328685962241331736336474772120809821655136184994679690378", 10); + mpz_set_str(table[21], "19184926075196842752627618705711102374424404967439967584810552676634519172175", 10); + mpz_set_str(table[22], "19254758195827452917289113769963420403555358815998850368652570793499070216132", 10); + mpz_set_str(table[23], "14215926209462692197182203676316645633059342924694262094626278512681873241689", 10); + mpz_set_str(table[24], "17883462230785397065183671788255948626210388219135348326261224755755423726953", 10); + mpz_set_str(table[25], "19660971719736541453710960233791497670698845667936886412113109272059138930468", 10); + mpz_set_str(table[26], "11497121381445734450263969996519847669244971728461431077339573809205249899743", 10); + mpz_set_str(table[27], "9468198604931472923284206335059174907307749251925517365211859898875806124453", 10); + mpz_set_str(table[28], "340230207720899104157788240826165612093523123877879767031973995346901073931", 10); + mpz_set_str(table[29], "19057121218095803650400648929659753124187772464438058898218944667456287466444", 10); + mpz_set_str(table[30], "10202329436562641892251890658312974877250491731172132313155583558932102215713", 10); + mpz_set_str(table[31], "3331808326978303271090114835766082600669263632107482517851974894821310880697", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=44 +*/ +void EscalarMulWindow_e684640c27bc8484(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "19198320167181649080151960350514348849249604859599611351928290714146318824808", 10); + mpz_set_str(table[3], "5336132696748869536861038294973547567357683612637241398987159788547232480350", 10); + mpz_set_str(table[4], "20104536688144907148396838691869613403751777878928417537897808074633205806634", 10); + mpz_set_str(table[5], "21321507292368377242638596755737007251437128946821282487099734532797338729096", 10); + mpz_set_str(table[6], "21132729298347053836323123477559443403741222056884387902875533281339992486014", 10); + mpz_set_str(table[7], "15604974489107531936047999892976686179957949008842506965238339472992162050860", 10); + mpz_set_str(table[8], "10073089368474400769142464369740977417099995973289261881734081551572023575121", 10); + mpz_set_str(table[9], "13558992091486350175170150373846875116802211313968334151084766289553357824732", 10); + mpz_set_str(table[10], "1844602875495871191265120085744337256300770950205562622915855495095877578746", 10); + mpz_set_str(table[11], "12075935930232513447726071931338021431190375109799395879512946453492139984518", 10); + mpz_set_str(table[12], "15856916537291627080686297851713329678994388106571217849795529816243917143038", 10); + mpz_set_str(table[13], "12815855031925801078096601215906267192821703882277196886338227981826360328020", 10); + mpz_set_str(table[14], "12757198154355723152167860064472796117437993324503356931058749667538266344611", 10); + mpz_set_str(table[15], "1482189199946983619590957860996638884985282210679745993134467669621861356144", 10); + mpz_set_str(table[16], "20010084950193100242248031110568527529171330778871171641928669908185141250079", 10); + mpz_set_str(table[17], "20645725020427167151843153928487062134164091033840658610265074618643205922966", 10); + mpz_set_str(table[18], "13059318330938147303907966652108434130705282008827169374839689137299249600092", 10); + mpz_set_str(table[19], "21051541777078238027670014516018147174631139407686774292463930367461762201050", 10); + mpz_set_str(table[20], "7351784653018553553470648570709573042878527767605002111433745974483464120179", 10); + mpz_set_str(table[21], "12321132428505695916648714611341194802832212244297917631957487904975884633898", 10); + mpz_set_str(table[22], "13569544997913770138664232938933308726112164936038236896903323006739493381900", 10); + mpz_set_str(table[23], "6510900182517216186300768327734633930164742309630349160535774541329697634582", 10); + mpz_set_str(table[24], "8864994441518299577266360218083192325922558202213628226801943360408405958441", 10); + mpz_set_str(table[25], "7493854544599842249431688286284274841072457349257740217334761851524207371089", 10); + mpz_set_str(table[26], "3455045041980678081421131853169159540116546418916081294928955235769611260849", 10); + mpz_set_str(table[27], "8415922586911094197736735759223237608885611732143760972535278272858812689164", 10); + mpz_set_str(table[28], "9839140415712740795400814646739576312673712884005889818039490796293020169724", 10); + mpz_set_str(table[29], "6347425921934489673463449271431178581378489622675004748014472303079191971451", 10); + mpz_set_str(table[30], "3352181008318470761972202227154220969108332398203486706581213694965650539844", 10); + mpz_set_str(table[31], "20011493695391395143579367726292923504362505998799961847086220205609368987595", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=45 +*/ +void EscalarMulWindow_e684650c27bc8637(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11358203158679440839935038204013542841444958733645789654091304202677211020517", 10); + mpz_set_str(table[3], "10198375248299371418004463621339765291702464637799525907976734069670590655959", 10); + mpz_set_str(table[4], "5640771103795071855015547063208043052064880653839989538145511516119420803061", 10); + mpz_set_str(table[5], "3572127675729934348781073782829417144601311647810868308081890169524342091591", 10); + mpz_set_str(table[6], "3165075507482898381633759142613837711480464559664825190546043626859869623447", 10); + mpz_set_str(table[7], "5276780632252137403354566093549182865729938812613361642559946552387581479862", 10); + mpz_set_str(table[8], "16495082045267630987985070056382982718559132442826550073368742187679233640995", 10); + mpz_set_str(table[9], "17976454385418689913839483092280414154384043428551314180998182793825639592932", 10); + mpz_set_str(table[10], "5585913523717147043618482967254355301828513592438860997642329456576138560820", 10); + mpz_set_str(table[11], "9587426722227767872790157139872934784974708541382452144151293179823325143811", 10); + mpz_set_str(table[12], "9277777044327580246057540998635414522707517795801777248881733756912697646965", 10); + mpz_set_str(table[13], "4437585467808519461207095406946958910034640752454219401797599599065002133559", 10); + mpz_set_str(table[14], "751847780409285199923110701213588945728798631708400042494020281294558475130", 10); + mpz_set_str(table[15], "9777866444546761632260268862719640620415675321379368902037912160462418297689", 10); + mpz_set_str(table[16], "12025212247424298102865482411172201538090884360506135875235042946635312383946", 10); + mpz_set_str(table[17], "7402444178642141157174580472235595011966536638910653511125739975139386608583", 10); + mpz_set_str(table[18], "11077731909763130828580011353442158304410957031086422747542512675250106767239", 10); + mpz_set_str(table[19], "7844852735812537631556651673190091429543504802814562764576498573313933797496", 10); + mpz_set_str(table[20], "948659922679101300341238221811262354366513868059452722896954601390660202871", 10); + mpz_set_str(table[21], "12774480570138819462045922798913038826976096893913858712521740174383304302855", 10); + mpz_set_str(table[22], "3467933742541424586567545259962148279890118948071815506091221764633552743023", 10); + mpz_set_str(table[23], "18800846024966972681253897780285096568965163806524351739213026162355352988455", 10); + mpz_set_str(table[24], "12983067540566413682341665751614486787140259398030718860719002157454815978997", 10); + mpz_set_str(table[25], "5908505150667581730701077560300826189281751231850627083233304213201014144381", 10); + mpz_set_str(table[26], "1832699544376630118021234138249220909456732396411586952668795176067799645927", 10); + mpz_set_str(table[27], "4808043596117940237263286910898845658903382348700548425183938831394434612238", 10); + mpz_set_str(table[28], "966145747230158626445157800238193978670477031055546985406113404674852526335", 10); + mpz_set_str(table[29], "10579293590209416225906178088867634727730465385697831694982611450832631288788", 10); + mpz_set_str(table[30], "21199107697994009541223315952344300422175838886921072273030074846165590478789", 10); + mpz_set_str(table[31], "16227136849799743735790973090087817810819231735325440686866669938917528842568", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=46 +*/ +void EscalarMulWindow_e684660c27bc87ea(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9294944581630152517843124312576277268647256541087612833551714268692410000384", 10); + mpz_set_str(table[3], "93672056031748289203536474675140068289956074372704276886242649048442656570", 10); + mpz_set_str(table[4], "8871750697402786393668101055548550955086899314109886591998352753413338344966", 10); + mpz_set_str(table[5], "20686189399915615116236555317071204076397525472971028390809600443444758189052", 10); + mpz_set_str(table[6], "4546527580698870950143854890355615765363148236303606104958401824319606177137", 10); + mpz_set_str(table[7], "6173834688588905753072963298940459832178926672289431068275659350280602917500", 10); + mpz_set_str(table[8], "2484940198811774992783100093847905916200606529318843366211314377361951244713", 10); + mpz_set_str(table[9], "3907631999468685241117409616828719878593509894077661203391632444263946380188", 10); + mpz_set_str(table[10], "19358483176580442416350166633807416680278184472416935213229007464139200253832", 10); + mpz_set_str(table[11], "4739164280695060706243371357353432811474659941594732086938791801188837688633", 10); + mpz_set_str(table[12], "25050751210504519216950112433488778262331723764805009408639058021069121231", 10); + mpz_set_str(table[13], "1107088713475466706449430448996317863352163121744440273934523705262804030126", 10); + mpz_set_str(table[14], "17466873334961865408477608701304229093543444811772056093875981173718523150223", 10); + mpz_set_str(table[15], "18121282831388052832613906728315371341921421295928751151579881839355310511850", 10); + mpz_set_str(table[16], "2135966305488332697696544120560922888383374984201569098709794000846014342666", 10); + mpz_set_str(table[17], "4160907728127256013994214572559259242541538050266008153036855184141316703646", 10); + mpz_set_str(table[18], "2854982808494848051723930298045091192593731892861910214052961227936906428218", 10); + mpz_set_str(table[19], "15986791942246127423403757257167237980680328107984202672799924263886369004220", 10); + mpz_set_str(table[20], "15923401052651001831849154219253941003751617159757475484595725044615762192509", 10); + mpz_set_str(table[21], "4941735005045176509184628976585185290914026067093562778961259676164158673221", 10); + mpz_set_str(table[22], "6058648167641552246107796352113321474859469675600353857354292269564005074853", 10); + mpz_set_str(table[23], "542856370170516615432638950168192613406616612171143498438742377098089313337", 10); + mpz_set_str(table[24], "21796440091850446820982409886350059877781511783715041674928916040694765178324", 10); + mpz_set_str(table[25], "12733558536444241144104445355979943699148655740292251276608809714469319887889", 10); + mpz_set_str(table[26], "11085242460563650113956303844211324604593296586029729705224665826567327503390", 10); + mpz_set_str(table[27], "11345440708653194019206856953966575200180167130894966604265511042902172370628", 10); + mpz_set_str(table[28], "3715847540800537955609773281654697422170457255342608910433148069584714669806", 10); + mpz_set_str(table[29], "20547142829526188047444920707550262048006044042697503497670695035919970130296", 10); + mpz_set_str(table[30], "15822361156221651879168883882947084959430889415992045845779564852479745608354", 10); + mpz_set_str(table[31], "17113442432094366454821058395274183679144022375251092890335599383390289585356", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=47 +*/ +void EscalarMulWindow_e684670c27bc899d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18925867776653597898422038321018373211496333219584331684158666888271208434971", 10); + mpz_set_str(table[3], "3218987821387916557569400428340125811699529866769304729163573933651914878718", 10); + mpz_set_str(table[4], "8042110227510899662844205947056386853316948854099671464788653555520747542923", 10); + mpz_set_str(table[5], "12731906060601865921301916966998910091952039319128382028941279883816625053811", 10); + mpz_set_str(table[6], "7846345453803135249143917326836475772650952196172957229177649135610801425861", 10); + mpz_set_str(table[7], "15030543581056271024825930849982048386393365865876798032560387300159292596607", 10); + mpz_set_str(table[8], "6328532818677424376956665198712048490375526760139762060113509932980016557001", 10); + mpz_set_str(table[9], "9339007355782143066310114962685698092508288029849139855301688874345564030260", 10); + mpz_set_str(table[10], "8346005780349696611173325295118244592122279978299179874154959759363677445244", 10); + mpz_set_str(table[11], "17941754841860109498373841044569507611544302131237505891419415025091331459978", 10); + mpz_set_str(table[12], "4397594159944001532493031321316588194265393562479813134930505439343511773401", 10); + mpz_set_str(table[13], "6502489071257704137212803667079996751056176175233929990078320988913452438277", 10); + mpz_set_str(table[14], "2864140653293198439198715045881994808714698256498989744801858973867014034854", 10); + mpz_set_str(table[15], "5993545009245160797926019334506027160142600946320582582422163341150343622057", 10); + mpz_set_str(table[16], "11939267480629275794982820275145852252172633902542095616667756869794066020007", 10); + mpz_set_str(table[17], "11585987427904323207209658297227332332495909277534484222520439916761994274203", 10); + mpz_set_str(table[18], "1952840790707188329727174116871428576263706682306246094918634512179991295405", 10); + mpz_set_str(table[19], "15372626835595841438549330136082999373390688878141810191912539285422161976536", 10); + mpz_set_str(table[20], "16605863176813990471768507331903239978375623989400064050415575871608641680463", 10); + mpz_set_str(table[21], "21202308481596801032495221662238909733053294920299401446372269062196694889423", 10); + mpz_set_str(table[22], "18464427162021565882891698662820462694315917959650566356700668417115007697009", 10); + mpz_set_str(table[23], "4726098062265344541475867966227022684014627851819457016716289431186464913582", 10); + mpz_set_str(table[24], "14907082382368850140278500714809163321627503509470220515303203944609951407788", 10); + mpz_set_str(table[25], "20268152065625742552586733170628638826524828369583760767378682928245751771352", 10); + mpz_set_str(table[26], "15038388697901410428116905776598732852090308019299859524541819082256970215571", 10); + mpz_set_str(table[27], "4041451710702442461175793560122447322421342376960176847981169858899954990935", 10); + mpz_set_str(table[28], "11212236402643727013934146887904689330416711614861470127228258008743702079763", 10); + mpz_set_str(table[29], "19678998786510739724425231779780865100663072652055904253825718324909326503357", 10); + mpz_set_str(table[30], "10479692091872153164360236840873839589008755183446640717074493849509424890935", 10); + mpz_set_str(table[31], "4197316437801067473931189858732214533522611626453051383043803663128161346401", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=48 +*/ +void EscalarMulWindow_e684580c27bc7020(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4745553688090187507702023815741546100773765747525046780830893542809326434269", 10); + mpz_set_str(table[3], "19609562688739457554746271151421097753584537371326387850382429597196054522455", 10); + mpz_set_str(table[4], "21468776539834690184343002036409916222791413452107961953141748321693148839076", 10); + mpz_set_str(table[5], "19463591723984137462865029270150969056994337740829720559513479618374214976581", 10); + mpz_set_str(table[6], "4777001384812346226304685383499714194384755515825778719752432299796061371491", 10); + mpz_set_str(table[7], "19958598804456881789336809870168505052627827412414498213931114388141531903825", 10); + mpz_set_str(table[8], "18316600951261063523041288549538056235126619931589179522750571984408234851019", 10); + mpz_set_str(table[9], "21442163574331265842363387478568754583646637602300808295398324114305120603727", 10); + mpz_set_str(table[10], "3008326846029307253603390514405429378530853066718170472774203817367860956409", 10); + mpz_set_str(table[11], "19218029447980020601315439948390656683594321568142618200307932063034071190544", 10); + mpz_set_str(table[12], "21399441267063536031003316565158482176374724980774583155264759223787147799217", 10); + mpz_set_str(table[13], "17030068272232494875209552956726416026472346550146665273817090947581885151817", 10); + mpz_set_str(table[14], "7938847958952814066160894258920675950384823606771905786105718865860677190614", 10); + mpz_set_str(table[15], "14592003161730215272638437036449503652637894281812839983001493046810483514298", 10); + mpz_set_str(table[16], "12394638385194835645052908348585901072862108291325484532332478048811593734234", 10); + mpz_set_str(table[17], "15949506939481186547288392965382366602496954712738621813791214254638093074390", 10); + mpz_set_str(table[18], "12078132328062331689780747358139226898518722653738016128708752058535602427355", 10); + mpz_set_str(table[19], "16622842011121394510041430193700491686849786112601385240075541169633355826027", 10); + mpz_set_str(table[20], "14418498040868724253295984446008273039206749541013731457364637800721233141721", 10); + mpz_set_str(table[21], "8885217258482159210670047413691057636290416850847152092605348659600953807157", 10); + mpz_set_str(table[22], "18182408619148372561407741713336729741183829746643879872707192041988015883927", 10); + mpz_set_str(table[23], "5960366158035834487189075733401220480500280361532439028333310348520613227959", 10); + mpz_set_str(table[24], "9536745880217079512005277936204810244230167360819153313604182860623081950866", 10); + mpz_set_str(table[25], "18802774000780485190864845422997581925819216302286348207093233798037998964276", 10); + mpz_set_str(table[26], "18712641710803771484571345263736048885500750782406591660334370943834811628505", 10); + mpz_set_str(table[27], "5006458636478942442891235124541878873877472533797849892904695562259131513852", 10); + mpz_set_str(table[28], "17858138530514393971276168677591018538860356721043051209528630610531361989259", 10); + mpz_set_str(table[29], "20990700251448981181714193146492436390445011629441867101428989866712869247698", 10); + mpz_set_str(table[30], "5978738552467007029506876463502560968009761893423673748084849551676240115740", 10); + mpz_set_str(table[31], "6095294971059226952244252728057255767291818575745271857446258195154760603452", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=49 +*/ +void EscalarMulWindow_e684590c27bc71d3(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "5129674555358910333866544510712603207414512773946086316287835556618045310227", 10); + mpz_set_str(table[3], "17456197894656894624440439810423174870837684249303341977565687035335788451978", 10); + mpz_set_str(table[4], "13825373671386236957123187152453795460025370237097837083427491763550190231938", 10); + mpz_set_str(table[5], "15859226986220524334910175664115258425657666076465556206854244479904756933206", 10); + mpz_set_str(table[6], "16821114763756400814167553774518828069763988192861517508786610458716027534274", 10); + mpz_set_str(table[7], "2096784699013873957503723814575727088961449762347379793041077601682831222138", 10); + mpz_set_str(table[8], "11007541089685757122438826774111649860335908504124917414999208367001736173716", 10); + mpz_set_str(table[9], "21834166514679682493595291712099334235356879390098479622972267688068281282645", 10); + mpz_set_str(table[10], "961294528390187738640726417394026428744384202707949561589165356950566623030", 10); + mpz_set_str(table[11], "4843404761746040450878112712248048946192329836828011081099583716631665199735", 10); + mpz_set_str(table[12], "17753610332565385342233700679016857096732927677674079299901048706502023344323", 10); + mpz_set_str(table[13], "7340737830761819778932240368702542344398303914533989887946929098579704241381", 10); + mpz_set_str(table[14], "7485711199499041280583568401235747195782463526779526999436153673339775539811", 10); + mpz_set_str(table[15], "2142031401968400929503510506809717682807299048321716777515378017925804172613", 10); + mpz_set_str(table[16], "20360726418211144063687312297130206754517607649513487097949783496378997928067", 10); + mpz_set_str(table[17], "10084495929941453632660314280175724975128971466274072816113016220485118106704", 10); + mpz_set_str(table[18], "16439750268193993850122913059536089086005993049484072354058446664310560915791", 10); + mpz_set_str(table[19], "18846478280944081835687070220388531405254463099766114703812851236032096883527", 10); + mpz_set_str(table[20], "4420942263256394637881355812401884942112634736955530771971988030203525903549", 10); + mpz_set_str(table[21], "14198693842034168855892704279336338486109495341176916748522962058077327077065", 10); + mpz_set_str(table[22], "6041555813882714115066197562820868826774723322620254360321098473212143665585", 10); + mpz_set_str(table[23], "20748515536378168545350875692420036778051051407959125779163633648695901864806", 10); + mpz_set_str(table[24], "3644905067853954991416835522909416617631364637345433980323913806222873092466", 10); + mpz_set_str(table[25], "8116482129580703447499186401826280629738713931353688362576599939036715144760", 10); + mpz_set_str(table[26], "12184572798374118217666851631205571574428678303828319078921759522861829536220", 10); + mpz_set_str(table[27], "5346870201233526613855167264516405972670153375069773146752349231612576971123", 10); + mpz_set_str(table[28], "4503044147132047341559683630906041415722430212610331693856274032147277000454", 10); + mpz_set_str(table[29], "14765113222221426653718588860458742005060115956673138585327972871355018047961", 10); + mpz_set_str(table[30], "13996242313247674316783774317017654151358086460595183727726330855974642581866", 10); + mpz_set_str(table[31], "15815633097180063401484093329011216749926764774201041400881386018032709569181", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=50 +*/ +void EscalarMulWindow_e687e60c27bf9741(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "356945572834696926615570510880047483629195949303885973623175677442826897195", 10); + mpz_set_str(table[3], "15515798416120970741443867573730657238772249381184199038638634647167929173535", 10); + mpz_set_str(table[4], "832642174284427733895074363837746033272509581814828935308160823330753714463", 10); + mpz_set_str(table[5], "1473261066677183491771144322436621573732818079048241277449788630674565611900", 10); + mpz_set_str(table[6], "8954798224153025186636493079655666312025175213148020988167609560533032985272", 10); + mpz_set_str(table[7], "11317203273451437978149912745313472351226626087079539570080325116221994621676", 10); + mpz_set_str(table[8], "11908636934537370872492311580668613787809336406362454440099232369794929432857", 10); + mpz_set_str(table[9], "19606250250980128429595119739035077802558826537878584374443023267709744215302", 10); + mpz_set_str(table[10], "9375002237566064668961915118549135231559875713369097582496716356262904267756", 10); + mpz_set_str(table[11], "6216839341735791600469640136991703539765543721181114957009765204840307468412", 10); + mpz_set_str(table[12], "422468318749508664730905822300162999604953333967669911245808864865179063583", 10); + mpz_set_str(table[13], "8233084568263698715114660619479071654556380128603486196496844237684644873671", 10); + mpz_set_str(table[14], "5694591125834772832968116232550788815559931203905362730608967633118393299046", 10); + mpz_set_str(table[15], "21449211136879912548384968972403945873677476655516314183078940127417264014254", 10); + mpz_set_str(table[16], "17512803248375863232584804418005928218053610165446233041192950530548150969857", 10); + mpz_set_str(table[17], "20970384927135135941687793569693311541411703622145982015545951879751255646464", 10); + mpz_set_str(table[18], "154889066770802792391318666804657200371892210382303806766709161140067751026", 10); + mpz_set_str(table[19], "9705435040331948880519431288156146645199776712226298776273908423134502262195", 10); + mpz_set_str(table[20], "18412805425507630721135238407391653444148829190638444828973229501553224696922", 10); + mpz_set_str(table[21], "16893531972151917966888615294962601036490237639324379686364106235785700640303", 10); + mpz_set_str(table[22], "1317401904823605427910400257951780642039212475651110910269419801589536775599", 10); + mpz_set_str(table[23], "16505773986237007368715261394665638044499970155648420529516963732557470428323", 10); + mpz_set_str(table[24], "8139968496928242412844146884705229449311856420430645899800031288037184971865", 10); + mpz_set_str(table[25], "9172089602192091064006425681108151046320037236029888112895349728960657590433", 10); + mpz_set_str(table[26], "1558032307708944983647563677197104762903609359323139614282143514635814650419", 10); + mpz_set_str(table[27], "108126353126877145067960721589823393151792954035779397604624454131714033618", 10); + mpz_set_str(table[28], "12485126681953627001133895564260325838574600045977614879319337315684519899450", 10); + mpz_set_str(table[29], "21385061428633652004442771474887342534304453310026440257138019892584855431206", 10); + mpz_set_str(table[30], "1104551878118863962464190204566347212682779710112472119871324595928956564039", 10); + mpz_set_str(table[31], "15322932262357902431853327773068449583766349454217947210944136035839911650447", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=51 +*/ +void EscalarMulWindow_e687e50c27bf958e(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "14280928984975544235433788111012728263225783186552988784282081030665290420523", 10); + mpz_set_str(table[3], "20803635230805303161820015692911208521977759767082084103923011086509766582526", 10); + mpz_set_str(table[4], "10341028774939699727227651400240331703049296664055590045013471804959465786518", 10); + mpz_set_str(table[5], "7604309484420118988896740306670521247149108658132603629252881595201679349886", 10); + mpz_set_str(table[6], "9011875625266167138886678377254308440953754721748313729517181381711252934780", 10); + mpz_set_str(table[7], "892322513592344300444119412785365605053716652232823131000105602243432555880", 10); + mpz_set_str(table[8], "18486175949748153317629598867893794483922649269618407497539525894165813765578", 10); + mpz_set_str(table[9], "15840162634917903904113833356358469023670783234642294558574928095156668664864", 10); + mpz_set_str(table[10], "2968909390657183778688654473764673250969936744964824221292316503234824888918", 10); + mpz_set_str(table[11], "21020860943834605053283990952095154232387251966871868120049490891452421599914", 10); + mpz_set_str(table[12], "16781597910611118553192257714323688960583262818916976097368762397000693644162", 10); + mpz_set_str(table[13], "14074475193476068174324882714224760919965016356864658494871388335588833555770", 10); + mpz_set_str(table[14], "14593393677635072676617432837077382959343608021960142837585439912159877318586", 10); + mpz_set_str(table[15], "17999639659322268175710363786435525605798888247806857271633109979101610319087", 10); + mpz_set_str(table[16], "11833691872543782351719487670127207596043371024551952805491858070633988252718", 10); + mpz_set_str(table[17], "827504421172078168460799924356606559249685654857689629151968334671864388396", 10); + mpz_set_str(table[18], "7327284626811840585486315466861402446210241033289844442278534330826668701923", 10); + mpz_set_str(table[19], "9446224232223888188424365019967292594376256441030224073350543821207427024323", 10); + mpz_set_str(table[20], "13485161518145036927948603181263699993625035428037167999804072920201939236164", 10); + mpz_set_str(table[21], "6764710206523464093897465546323177021905133113339759574454899318266861301323", 10); + mpz_set_str(table[22], "7265307570039676523364470649635716794801234804159593051749458469314538232694", 10); + mpz_set_str(table[23], "9091371587973716344157827951828360926766196510458042851950677490155899092934", 10); + mpz_set_str(table[24], "207972438327396317570644659247454825459364371949145337333304443527831822600", 10); + mpz_set_str(table[25], "2227449218622024215844365463100754710658379433800634186512830160789605596764", 10); + mpz_set_str(table[26], "4101443514515101630727893037847810918376053050454305214577510881644101664646", 10); + mpz_set_str(table[27], "10224825037826090291865824383714110036793921487103798001423704215149860382305", 10); + mpz_set_str(table[28], "10356014205682705325581914066923383713113955825325777240430811318239223761641", 10); + mpz_set_str(table[29], "746124427280968361675081285616412061887402150096170656125670471657521775708", 10); + mpz_set_str(table[30], "4364259151027161509853916728690649755157399097864479478675423032959389732547", 10); + mpz_set_str(table[31], "9895251962405943175374555214196920216782650156701257939151053405890602125683", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=52 +*/ +void EscalarMulWindow_e687e40c27bf93db(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8195505999488733718664564215184512117460191150885626226602287026423445188485", 10); + mpz_set_str(table[3], "20748904396461048596223756392836227939261463952108020374122647419585596160244", 10); + mpz_set_str(table[4], "13297718493728489512143558871738836489949094398997161183406015376909602072918", 10); + mpz_set_str(table[5], "20977334272530646620093609531103197424958362428113878463224701582600748588396", 10); + mpz_set_str(table[6], "6678468228559943937212472189307148084375145367707288284846571643298650239712", 10); + mpz_set_str(table[7], "8523850808856375009216404940087392615910035813609925985738778432610393564190", 10); + mpz_set_str(table[8], "16247763274735072728635353552943402983967865120388751649617232487272397091016", 10); + mpz_set_str(table[9], "7033000445747619285255127530314728037005956720945434696816460770583323430431", 10); + mpz_set_str(table[10], "14010257622472940218182231730036072883858518649499224088801502122075792166908", 10); + mpz_set_str(table[11], "10568306917869125738735759284450755394124164897594809381776856302299061706665", 10); + mpz_set_str(table[12], "5794589017119491576168686056711899606507420767604610061421262216428980664971", 10); + mpz_set_str(table[13], "1264601947765205345639385384931496790962530627941566000292525283568855082752", 10); + mpz_set_str(table[14], "9341618850216116773817344073815070610994999966095649784121562589699541756819", 10); + mpz_set_str(table[15], "19486443877025115139492919401587399458409420527758104336020010053229119860899", 10); + mpz_set_str(table[16], "8889198622664195119315601666524731832527180285480910657832154119008317088242", 10); + mpz_set_str(table[17], "19565288086870899427209207460740623234291464069525635114464706722187751773676", 10); + mpz_set_str(table[18], "5229961970920875159515142626305541910253943137553663313914030011649856517521", 10); + mpz_set_str(table[19], "15885776378302400170554921402587629381162570281691316160863422359601356317610", 10); + mpz_set_str(table[20], "454927959401449134020484951213183401811548949764629487079876896903845246381", 10); + mpz_set_str(table[21], "9570190056275612236720586411716321005397705228925442060778550692247328778183", 10); + mpz_set_str(table[22], "5744100191856671929258343693553952141340781799150267424446754532422106737880", 10); + mpz_set_str(table[23], "1025339809009485679448716540122393637600680952555183879879449993617676863812", 10); + mpz_set_str(table[24], "20754719332774039520489599562334323874570285038751296979349532717637588392326", 10); + mpz_set_str(table[25], "4336414223419751165273790265725817189110062157879020511035728356925593631890", 10); + mpz_set_str(table[26], "10330995937677011402440638390679744194302013369990278268741538221961723682713", 10); + mpz_set_str(table[27], "3940161175409442224774181820161075490227232668741299179448154240869209393549", 10); + mpz_set_str(table[28], "13754301388177867405709297680038869592970975496146330571761951496121332720956", 10); + mpz_set_str(table[29], "19867853529037018530112490105266170661265921087858015873054564165594718524951", 10); + mpz_set_str(table[30], "6182042372722969231948462243384512823383124243452645085144869784853782735622", 10); + mpz_set_str(table[31], "13818263682550949588597550397952143100537899046460182714602409969042744556067", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=53 +*/ +void EscalarMulWindow_e687e30c27bf9228(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "10102802783420398911471770902646882179920114873273307350556110482712606795655", 10); + mpz_set_str(table[3], "17465845479054984846669589379063049283449511919485812019742992007415587499800", 10); + mpz_set_str(table[4], "14897526986327596282016960589817289099608729336244988423326359963499288579051", 10); + mpz_set_str(table[5], "10847964300354604511441843308946109551665320843198538468597842956490240255238", 10); + mpz_set_str(table[6], "18614375400151574305454505510340646896798937019784982882259863253657068964826", 10); + mpz_set_str(table[7], "7246732600718934142726622868596333232370607837099213335460076137209906864499", 10); + mpz_set_str(table[8], "10509924577789916854373592141141939331597804882787286265628232905987065377183", 10); + mpz_set_str(table[9], "5295167780681710981039034287719494543059367151427001475194034675856218024657", 10); + mpz_set_str(table[10], "9500463425470432144020710094281955081042921989710196649207358448117657822089", 10); + mpz_set_str(table[11], "1935916851529563434776145128319199849558189750004624817367534814411499591888", 10); + mpz_set_str(table[12], "648050747977522730962685318959406768200545384749002300202716704424883503949", 10); + mpz_set_str(table[13], "4303000944133242188515776035464931074581530142711302456647526034844042163422", 10); + mpz_set_str(table[14], "18754532141554810445730308486976315675378894943773970176146886152381934169945", 10); + mpz_set_str(table[15], "8352495426468697529139075268178129388925303878246618040592373332952153122859", 10); + mpz_set_str(table[16], "17073120037899157137694810602790754900342410307475199858780196947698288512021", 10); + mpz_set_str(table[17], "11613508876811598094128255790753769221366090844594780568076630111003749489327", 10); + mpz_set_str(table[18], "12611361250381361971745832652364346810809532298112742921908261010832782942790", 10); + mpz_set_str(table[19], "10805314462160327703667322080969534763197641624181796033956013238861644468194", 10); + mpz_set_str(table[20], "14727791428195234098747751201790037614610198861719787436559245725642865596009", 10); + mpz_set_str(table[21], "5563245753251368429384989862712466566345756003030328931993297545122937779627", 10); + mpz_set_str(table[22], "135814189051522742306893202039835012327733571057611919329717170240720504635", 10); + mpz_set_str(table[23], "4076118281574231132341039860922775021687907716101427842532991467161130795126", 10); + mpz_set_str(table[24], "4646086378037220549681523488106871648714671183367484595487541550330731303747", 10); + mpz_set_str(table[25], "20197661751126391596094026975633509376250634967965199074570850431134340690857", 10); + mpz_set_str(table[26], "6760925334754190677383122617365795576913847047326357274566382805799304451939", 10); + mpz_set_str(table[27], "5082641574416400319506253738116923237102014923663654861590846623545756307972", 10); + mpz_set_str(table[28], "12550048533737735574982484168535420787782095801996915900511935038244822939775", 10); + mpz_set_str(table[29], "4924527113683973404137803459094677927775249665822479711814943651246295631271", 10); + mpz_set_str(table[30], "6389974496198213452930906098990382688258021311235058905688594163862655648495", 10); + mpz_set_str(table[31], "19215614795500220211516490249126830668092687021211974370533233852706858122463", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=54 +*/ +void EscalarMulWindow_e687ea0c27bf9e0d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15119220930574082489683236226695313258143009576587043372247540506496303779873", 10); + mpz_set_str(table[3], "7652757383269814958081642137897211894804831762208990890776209003954309655365", 10); + mpz_set_str(table[4], "20409516496156208258040242441029671106045775902542782605049859520582390389617", 10); + mpz_set_str(table[5], "7888896459032628924745470612790312478723609508983153262721154407728556748707", 10); + mpz_set_str(table[6], "20678962188901970060029001880893644390760685402573618268211544658654543820899", 10); + mpz_set_str(table[7], "931124264650880986228386417805864160622400087760765659077330602822848145970", 10); + mpz_set_str(table[8], "13750866558797646927355256022812622278972997777820829132528210439239062308887", 10); + mpz_set_str(table[9], "17167748554535311622530861571533954598031599405504523534161464468571232550679", 10); + mpz_set_str(table[10], "10959425746653246003678139790042419238673902308287208494857430250191316276211", 10); + mpz_set_str(table[11], "3424702027279767931912421789144364450647891929290151122876644430879661650642", 10); + mpz_set_str(table[12], "14038349191291580196777205214263941996799980335874997845898133272696998952003", 10); + mpz_set_str(table[13], "9683076491131406177128075477495545891734593803851355591821977024833857990311", 10); + mpz_set_str(table[14], "21171015062148638324241870142681640512854649593490752420387944016905988513076", 10); + mpz_set_str(table[15], "17834909498736929997653575097825551307570381694504740098531673529157612918911", 10); + mpz_set_str(table[16], "8319721735894765689585203698338576523487228238399873911373568451335475226945", 10); + mpz_set_str(table[17], "20810824366644647228335868831886125721626758866923913118272888439412694159653", 10); + mpz_set_str(table[18], "9393048461973786216111642720665238868434210188416380744703154244347561738547", 10); + mpz_set_str(table[19], "19820741948653326551246849339428358082135398375822993707640011208019653459925", 10); + mpz_set_str(table[20], "4196473057604869870948742394762004738539112554385729257113542588579476754923", 10); + mpz_set_str(table[21], "5647922524718931046590738053717565420367317130549069073552302419587329677254", 10); + mpz_set_str(table[22], "13652224550118353360178877008019040220304940965123454296785437848687548430569", 10); + mpz_set_str(table[23], "11030218429830883758666266567706954590250556704738291716259534828310830141060", 10); + mpz_set_str(table[24], "21642103764543686019929814569179062011391001607748241503620790279684600237099", 10); + mpz_set_str(table[25], "2883611216451225361483062875909676098915866268523608783698187590698789099798", 10); + mpz_set_str(table[26], "10670530854358342012833035338425394536459148241262702206220811060707282717228", 10); + mpz_set_str(table[27], "1798670739649413803730087803605011042735503518898125273049327382389240761002", 10); + mpz_set_str(table[28], "21662261493815889954745782413803348043549864381782740044369986606265800202571", 10); + mpz_set_str(table[29], "2814288324824291515794653361119536715595489300556429712206761170403416831466", 10); + mpz_set_str(table[30], "10627906261375744150056541707363220476246388830746065733118968706643704295607", 10); + mpz_set_str(table[31], "14157053269997483574926592591878018326951387365269277410947671912488651160873", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=55 +*/ +void EscalarMulWindow_e687e90c27bf9c5a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11193261769816812274896157499378832033321889327052022291944782466698101329803", 10); + mpz_set_str(table[3], "6285197227440160672576682420161914205141988663414866017388090212011766241989", 10); + mpz_set_str(table[4], "19551510842230142901551991949090142143663606820882289456657880422327154418457", 10); + mpz_set_str(table[5], "7887867601428723430609749094007906155723954393283939475781132619959543465604", 10); + mpz_set_str(table[6], "19547295782014382457332736332679717738577497113111057184589024686907246719934", 10); + mpz_set_str(table[7], "15199524570826738256499698221009578449624617498429407458151654201437167425018", 10); + mpz_set_str(table[8], "11669147499202722074160716770540961052396151941505502496018517883453813078940", 10); + mpz_set_str(table[9], "15165236107733725485613441486147576182383857620503421715388849184583700860478", 10); + mpz_set_str(table[10], "10923223598244238494302097512489049179827141111772530758560279275852845214105", 10); + mpz_set_str(table[11], "20317893352350167087983403794344988939508940235852819680219246896165952952350", 10); + mpz_set_str(table[12], "11323832859000476054261269521669262784685690411424263134316531724555335360816", 10); + mpz_set_str(table[13], "2232840046560229178189959666751419232569601020082219969451420724106590188687", 10); + mpz_set_str(table[14], "20336745559402080500183897166586317941456396618153350337861838249874694184364", 10); + mpz_set_str(table[15], "17218948205563012813205924342088836178590479068722789312390354259054457966638", 10); + mpz_set_str(table[16], "21718248449324142394151982854555121183552909936437838934606761060068666646392", 10); + mpz_set_str(table[17], "4532024589865671348760802917624756386370293099830694991376078984312928173404", 10); + mpz_set_str(table[18], "18059692774830119066127389641544971833267222114418067345125323743897263977275", 10); + mpz_set_str(table[19], "10077367640023407804742987978503664027642588310520607622253058953940785897164", 10); + mpz_set_str(table[20], "12704875445261458412333901113563981398868868961574934087835931414775005840674", 10); + mpz_set_str(table[21], "8647478968182259244997342192784710625550754158844580105199206849881925573202", 10); + mpz_set_str(table[22], "9029947690871937912133711721079394612909747395577149828772984119717530182725", 10); + mpz_set_str(table[23], "7537094500387747067988083006225269543909837441462705148655761119929858342496", 10); + mpz_set_str(table[24], "19121265715497029891712819886230329501595482479027694519325180623066498194166", 10); + mpz_set_str(table[25], "818841409130439808704038136282363332045886503331059225323332346472109239677", 10); + mpz_set_str(table[26], "1221272865590120864616815236961380144423320982687721715352737026802621044352", 10); + mpz_set_str(table[27], "6245982113024300759153453204720158066788302630889512521176417758248767946351", 10); + mpz_set_str(table[28], "6597761425718694778636771957115669277553519082894938520161646181732420763335", 10); + mpz_set_str(table[29], "5501368416423354448081131239737756323482290813063063148122763629606538639816", 10); + mpz_set_str(table[30], "16304212579457534271575714218854786165828853589241892180441678478380806289729", 10); + mpz_set_str(table[31], "20980086410396256429010032811348534213464624695177382077632346926796173970946", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=56 +*/ +void EscalarMulWindow_e687e80c27bf9aa7(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12966528504411800327976272575744574866000502317784213861020508528811827147309", 10); + mpz_set_str(table[3], "3972920327658953868135148945943394871013837275215164742420294893227796465966", 10); + mpz_set_str(table[4], "11356822984582670769709816985144140434343265784974623719578806860245905069468", 10); + mpz_set_str(table[5], "15667877850885123538834216745380336949953013043787083653718147998560427148462", 10); + mpz_set_str(table[6], "17086151647604401248656131205631596249713616472302888332961322655522976193252", 10); + mpz_set_str(table[7], "6511318575678692842343960760286291761888971136486300884056609384653970909166", 10); + mpz_set_str(table[8], "7933757241437724314201927525237345715490236944552702338857050688999173162005", 10); + mpz_set_str(table[9], "7493555517090366941339222624333386045125645124319796842444421351227808830085", 10); + mpz_set_str(table[10], "10539099381460318045416547831072316627370377436317851964811916323930452730367", 10); + mpz_set_str(table[11], "1285159358230687735272168933160229086780410291192801756039374502085982564028", 10); + mpz_set_str(table[12], "5779660668234198741147837139128884496798394462138732527944663066570946492826", 10); + mpz_set_str(table[13], "5945340872795091219076248327622136368046272060377343207060316699148095285093", 10); + mpz_set_str(table[14], "21304707265654324946583778387514308418645169066554423847972439129449184396544", 10); + mpz_set_str(table[15], "10139555092486229281910431099712433649235636986517355395993698512126372125244", 10); + mpz_set_str(table[16], "15604424570959225066514586884368622716281156386113677620704269240160822600833", 10); + mpz_set_str(table[17], "9561464419785165025521988059659848940248492067788178236918274938529008543134", 10); + mpz_set_str(table[18], "6044682926966806815502105668160269732250407345348579174046103389847963073110", 10); + mpz_set_str(table[19], "13478826323343643575903653336700556407184121335243787600667517072656136709010", 10); + mpz_set_str(table[20], "5784413260637211152964530367046753774907745669373268719150898321956708721991", 10); + mpz_set_str(table[21], "19215850042869256347115693993480276299614540613863927557477194629540148652705", 10); + mpz_set_str(table[22], "10839675093009088886088980269374119629423319102270823448020805351499803909244", 10); + mpz_set_str(table[23], "11145418467078256516832885613651345605791301357085718375483455970927494058666", 10); + mpz_set_str(table[24], "19128280768248258493482918359277346946061658678311745685657500317304913689767", 10); + mpz_set_str(table[25], "11870438762450683682676398635294075166761509813417492132665665014944485522294", 10); + mpz_set_str(table[26], "11368951640740504354889949721029632618381423429932064663695645729098763225766", 10); + mpz_set_str(table[27], "9578653442049481060800489332218879008204224824410248577455227231241652452947", 10); + mpz_set_str(table[28], "2076907718936880754481480009158365287164181391298696995575730576099162041561", 10); + mpz_set_str(table[29], "20086445323321926831602490529594362138162374885107125587704394601561797285396", 10); + mpz_set_str(table[30], "9090532219942090765756336604569035170499410286271339758762896951211649054434", 10); + mpz_set_str(table[31], "11536304173802722590936155600121702027608469856488450468668793264853428880510", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=57 +*/ +void EscalarMulWindow_e687e70c27bf98f4(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "17034248665295397220405585341860554916431349936795351485673620834775687604743", 10); + mpz_set_str(table[3], "11863097507194721354272655955956588052425393838156882866781640257142921727492", 10); + mpz_set_str(table[4], "6090077664410226726222877088355189006654158005030825412309730397176961493935", 10); + mpz_set_str(table[5], "1660692056404019005241775651421281573137910605192115645472716025992460677284", 10); + mpz_set_str(table[6], "4075586043359474439841947101012391631373681057928477829922564695989274985636", 10); + mpz_set_str(table[7], "19565250469309406233692308519297623230595244626915298963177420911157051104613", 10); + mpz_set_str(table[8], "16764819912006961458545170395438050352329993375996906668501247471672406922624", 10); + mpz_set_str(table[9], "4997320124825099579543632201098140610146535825141189483771855886225495814145", 10); + mpz_set_str(table[10], "11607963516245556750498785219758599712955042915638245701609837006611951691675", 10); + mpz_set_str(table[11], "2745380724541325406096968912226044001380746839002024891129051350082855883019", 10); + mpz_set_str(table[12], "18578811272340796339152937865611762481872723316542456705139039481163687738332", 10); + mpz_set_str(table[13], "2425775122854145386815938828931415327776003258471747598242708291495617929485", 10); + mpz_set_str(table[14], "6624190979490887753607145270599154442609102942489740594865769673982472987095", 10); + mpz_set_str(table[15], "16550735493976434121694085033134106858767024792868376739764392960414699925090", 10); + mpz_set_str(table[16], "2609185846889441899632451308921558333135507923791146141973623333983254118114", 10); + mpz_set_str(table[17], "3128388219312507797943733743934125881272287210807537710504178685046068424940", 10); + mpz_set_str(table[18], "1631419261593077055754270280622847363744903652300695125750830967401424446523", 10); + mpz_set_str(table[19], "15147896011056951490027572947548152626757975451655652481419024740369994757679", 10); + mpz_set_str(table[20], "5261032549199954715985188871499491612674243433210817703512867104812943299704", 10); + mpz_set_str(table[21], "15379701544662412922985153734102777907498119859009752431510905537719553613417", 10); + mpz_set_str(table[22], "15542900674859521460851566971797467423963604529330485784814714353791030458468", 10); + mpz_set_str(table[23], "21174190477648535421511450294582133644831703304157077597233258663234633574651", 10); + mpz_set_str(table[24], "20521721139420521276189128580979670607640236898205705568180292325094574601345", 10); + mpz_set_str(table[25], "6976056275994036729931351212815220394713764023388649843283648471634691420654", 10); + mpz_set_str(table[26], "647636496819107507992243397199505462496725688818073691089620783734095697572", 10); + mpz_set_str(table[27], "20395776713487040931655033291218280370083125973922809764582104216169425231675", 10); + mpz_set_str(table[28], "3546122781595532492764733250051292210638959659269150010342239694731215975323", 10); + mpz_set_str(table[29], "6199886119535540361773626066158702474449599794105186680124520304371563609288", 10); + mpz_set_str(table[30], "5166330174073572939309093846170185403393681986590142698387793551634131658057", 10); + mpz_set_str(table[31], "11512936838276345379224546846186531767031582084192422933847584006283272950168", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=58 +*/ +void EscalarMulWindow_e687de0c27bf89a9(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "21840141749610387754774432797908309732309863121581275191202770640817754098298", 10); + mpz_set_str(table[3], "16121115176401552416225504359299555883216331214787802615953368580708969452949", 10); + mpz_set_str(table[4], "20479748022130457249287908385155084683315030457488003901691751187243928830015", 10); + mpz_set_str(table[5], "20436138116689734655301941926623362885780775867653553646933875694389266930849", 10); + mpz_set_str(table[6], "16252559098422301812043927829353321451275573400198182034048789776047282935847", 10); + mpz_set_str(table[7], "12651954987463682013877190517656057321600847395042902498636704295230659032998", 10); + mpz_set_str(table[8], "19536244689743357034001457944585084875535151491880762881216777352371097461782", 10); + mpz_set_str(table[9], "11272692943803020755510133503676768476644826907872522118804751620144214997832", 10); + mpz_set_str(table[10], "5878394741809159641363870504056202230531370126503940005523061529764793903582", 10); + mpz_set_str(table[11], "12953084022753321867708936609022290356094744059577981257496393967361661019407", 10); + mpz_set_str(table[12], "17821186880162567381846384073172321528984587538561979368940709298630476769452", 10); + mpz_set_str(table[13], "2453932413862302529461250119196509110304672427108846387775754459419354907908", 10); + mpz_set_str(table[14], "17095624200756109828341053845889384585750751152352752838005880347562538073319", 10); + mpz_set_str(table[15], "16076674139841729984081082282873122077278790925174911239076258038125438945635", 10); + mpz_set_str(table[16], "15973677262219376317351463530833773955453896346108270633915370208269159592772", 10); + mpz_set_str(table[17], "8555405976272674802677648396132318170100820349735810537047511720310046490378", 10); + mpz_set_str(table[18], "5007836521370151647140054242821403967845400744763922051204144049383046884886", 10); + mpz_set_str(table[19], "3676492877157582188496454362703063642130930261996541105166757165946392262605", 10); + mpz_set_str(table[20], "13167754804322970785623821175583995474458361119382052992718501945220665582657", 10); + mpz_set_str(table[21], "17982661690480314134763956742930605650839672005300279176833957583710446017925", 10); + mpz_set_str(table[22], "16196615919394269913715524046362709382879889470445788994112355838960323104800", 10); + mpz_set_str(table[23], "13780842158881551966843701740475262896099286351827028055980576712738150558403", 10); + mpz_set_str(table[24], "18822193107165131686868826351408896582461805319307522493259902802875154533314", 10); + mpz_set_str(table[25], "980489996106118979994210626629207892716891335312670525040567169180579388605", 10); + mpz_set_str(table[26], "518609507629433196828276288289486933387442800316313178613901943943087073660", 10); + mpz_set_str(table[27], "7774130979666374330087005330604381141993157173791087107601100780057759614636", 10); + mpz_set_str(table[28], "21732216142397554500293555787717479468957109510832694583240361357998284898936", 10); + mpz_set_str(table[29], "7055504651733494631811984866737923947263408897781959770632366791537382855891", 10); + mpz_set_str(table[30], "21543969199073775299412959336886535374665597560771837803487744253900410014695", 10); + mpz_set_str(table[31], "3776645205667743630556897477925975880673676768067512443876418300914494865443", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=59 +*/ +void EscalarMulWindow_e687dd0c27bf87f6(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3581485013057186115055677179127042033344735698342979450016018954682943544783", 10); + mpz_set_str(table[3], "2449879450823548727389514566261608400955020121032999969540608621437434713518", 10); + mpz_set_str(table[4], "20771498172790118352172888220973388926333630649003906658535744886052260489492", 10); + mpz_set_str(table[5], "18838190635415086630798767220109460008019909252421468104523785924955266453647", 10); + mpz_set_str(table[6], "11283227683656579335643245963145341362047556594535741690630232325490268844885", 10); + mpz_set_str(table[7], "11100969964312729437913424574140218154400657346914148881998431362325433455493", 10); + mpz_set_str(table[8], "11652522142803112814061813550215422143199337859990477748819895282960016043883", 10); + mpz_set_str(table[9], "17432730010492282985256199043879873469887761450348945702972514836449377244465", 10); + mpz_set_str(table[10], "15619147669628020310722559932857054723359210729672770669455227871419142713792", 10); + mpz_set_str(table[11], "5494309253306004292273014968599465259731266286213884727244655038166368524645", 10); + mpz_set_str(table[12], "13562028699561761865216513406334648442925887485866604346647136095444407000081", 10); + mpz_set_str(table[13], "6358988846639310645881145167261730784194515526202785898817306474592057733266", 10); + mpz_set_str(table[14], "16641742585659036018328972066095326787166622056264456535218855428306938695589", 10); + mpz_set_str(table[15], "17317610457673916133408856968482477923419776296609414421727531904931753047575", 10); + mpz_set_str(table[16], "18823073556301391501465557554563172476792312124717801839905503918706045126714", 10); + mpz_set_str(table[17], "14376868830083824040789531342160326019697492043948100941128839142793042169608", 10); + mpz_set_str(table[18], "12550498958774643001493279083898346641712182211933958734729148696530411766813", 10); + mpz_set_str(table[19], "15083597137638325740195153667924734721743563402942897515324811056051190383808", 10); + mpz_set_str(table[20], "10786674815081732469175381999708594345771132188850070300247068143790473373494", 10); + mpz_set_str(table[21], "4437780706978496623390008136039717210598748754524433838265190784599709998930", 10); + mpz_set_str(table[22], "19551790697903554698691073132217153920541170116588573399367377229949484049711", 10); + mpz_set_str(table[23], "8733341334732625322352868992803429909282609963276541352291647595671314860020", 10); + mpz_set_str(table[24], "12358897331936404122265834993169558129636387941293086036052824783886557431366", 10); + mpz_set_str(table[25], "12516419364387885313414349019433846381812591923769435689156912741446012419537", 10); + mpz_set_str(table[26], "3998646453002821861806239297052000773369614246449171526928972738525403213446", 10); + mpz_set_str(table[27], "10379551391939871867130438317961303899141677775939477704272174964498370579094", 10); + mpz_set_str(table[28], "16916663389312051189985528299091847697105948440997078657249090497433436518687", 10); + mpz_set_str(table[29], "11953633702700660365536312315018557930111957821417006184476201912110087742920", 10); + mpz_set_str(table[30], "10934615037536040128502257196829543616846312662225410635128573995727485998601", 10); + mpz_set_str(table[31], "21180242432950060858380613335607135850238909751262563237872188847950116310017", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=60 +*/ +void EscalarMulWindow_e68aec0c27c1d74a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "5329718093401832461289759633473155714837923950815847249810633756458556098837", 10); + mpz_set_str(table[3], "12900985693670780751244123814206237528567126431403215971145816339577800381828", 10); + mpz_set_str(table[4], "5508863281622493712898926772752698967157539623965838154668479831499964155928", 10); + mpz_set_str(table[5], "17962736758473458608519319205169843462888249209539147118599751672019645725954", 10); + mpz_set_str(table[6], "21814700598382765608485632289705350686042483003906952848452221635999248032723", 10); + mpz_set_str(table[7], "10746837810131045600498503180851005764075230532223872812929739278942493148445", 10); + mpz_set_str(table[8], "12961472500822337513001910298056431336788558805834368437087377932432654905745", 10); + mpz_set_str(table[9], "282960684094498589882312639999054244237093782515234067311574441907227143722", 10); + mpz_set_str(table[10], "5939199498233700087181058953396343961514492227529970332685455894421764383916", 10); + mpz_set_str(table[11], "2979356392809707951443943430555591106718791747623802510990137095501840888598", 10); + mpz_set_str(table[12], "5817944539411315257495426006112088829610949650207072725588365762408049559392", 10); + mpz_set_str(table[13], "17102432335100992507653074074396906774256812262219724933422943959279093261963", 10); + mpz_set_str(table[14], "7368864545090791635291092484816831328738558881316039517497385698546975748166", 10); + mpz_set_str(table[15], "5881798095454432906461989115126697962302695933534293891543742374557317789799", 10); + mpz_set_str(table[16], "16185102384598457040305236706789430602702547767527527070912154893945425003349", 10); + mpz_set_str(table[17], "1509949711440243372857009904055283093935667484074353992824572752991617597292", 10); + mpz_set_str(table[18], "12410424223062224270113130588728064408972622217290538286392714614436621161170", 10); + mpz_set_str(table[19], "1701691521940871512561023290038582782456724028833403585053374295653963308604", 10); + mpz_set_str(table[20], "693530362272448974257837077605167000078837802192655122343826284598552129867", 10); + mpz_set_str(table[21], "1132082509140464948411551008661058325511185640991168364722855936111865527578", 10); + mpz_set_str(table[22], "11594759724715027730801700469999381894382905258658255292188947038824487802680", 10); + mpz_set_str(table[23], "12957850856419054202676584620368290890886621134103862742364058327901904862923", 10); + mpz_set_str(table[24], "71321569139369374526264649008721242534430244618908826752930858288395330140", 10); + mpz_set_str(table[25], "1315902956152924856166663521246653513475131771174010153786565316750104815030", 10); + mpz_set_str(table[26], "5307132264373243703866642583330149108628674133690724078905688577443419933943", 10); + mpz_set_str(table[27], "9505889273318423975208084028710414664488356291083883457642847896302727995481", 10); + mpz_set_str(table[28], "6011374467816723661747678853435133830757957331890311472807362784879689905550", 10); + mpz_set_str(table[29], "11510794113424102121747573608303226682005679949007694223440952622865345372445", 10); + mpz_set_str(table[30], "6133673212618310678184294081206076187296372854838749951523391156071767534788", 10); + mpz_set_str(table[31], "13494901840780481600925491575516103394816749627644427732666596299868587990152", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=61 +*/ +void EscalarMulWindow_e68aed0c27c1d8fd(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8690132215001510855525661707125195116169972801166338995960306063598868523134", 10); + mpz_set_str(table[3], "10628008448893706196877570560651842566415484866399806369046949157096644079399", 10); + mpz_set_str(table[4], "2992118602331571302807622306124171084395369081596727494517467980726225538338", 10); + mpz_set_str(table[5], "15884522913625643883642072502342763718678053705722093350973254736469260409818", 10); + mpz_set_str(table[6], "13469869415032280681748875393314727808289661954240199071555686001959296963028", 10); + mpz_set_str(table[7], "4725115634754108566776323109457915358001088734265208740722718113425145050724", 10); + mpz_set_str(table[8], "5066761258645415765137423691170489290738080646027143372259594054573856352261", 10); + mpz_set_str(table[9], "970187200307873850688565566968603471576282225087910174557295560376601732957", 10); + mpz_set_str(table[10], "3062596509204177345499610882044000017875226802064340424454530465509009563943", 10); + mpz_set_str(table[11], "17389776994439434136540634213920558165685663870223963101978635528475183546729", 10); + mpz_set_str(table[12], "5033073489915153511587186277233837183528646156509486536579770704089704683989", 10); + mpz_set_str(table[13], "6394995862562815798537059351009227683113333105751271424252692101543140164918", 10); + mpz_set_str(table[14], "5915316518646313368501331247979611263730162528672367851839214419889470015310", 10); + mpz_set_str(table[15], "371031883635111023498422775081141077637227079327035961137907152815570877531", 10); + mpz_set_str(table[16], "7807367514401030403372445442161017583241211321365011117782972922373573814705", 10); + mpz_set_str(table[17], "10407835675521613498736587089375329008864560182826581569441173151874235834339", 10); + mpz_set_str(table[18], "12329421014805923072773859126150817938434574929964430407670273802069341407340", 10); + mpz_set_str(table[19], "21070233111029586505155158167938698528294603989448096131694301893763094002524", 10); + mpz_set_str(table[20], "8143009126463936384848481139560345267672812165744010358697699680019261617965", 10); + mpz_set_str(table[21], "16063098527292609924683127550661079366537285688932309674912886506325580584258", 10); + mpz_set_str(table[22], "497134865100447633085532112198824274140257439867828195383838293334600091777", 10); + mpz_set_str(table[23], "19732372214508377704960642956362259671089729573369794822036790076954102078256", 10); + mpz_set_str(table[24], "19493637389735003608234471576760905944482300936960526036369686941777744150453", 10); + mpz_set_str(table[25], "18380526094057075762006762287368638318541581132610665095075060979774377097683", 10); + mpz_set_str(table[26], "15051386733101312432255446957055711738971873360289672449434177087434262525366", 10); + mpz_set_str(table[27], "8487231337159539936165115912716720477949889100189288481318078725692489364253", 10); + mpz_set_str(table[28], "8561759613343053109988884281844247035696469170858052060664988324565738885651", 10); + mpz_set_str(table[29], "10169478941845759867620777158696743036996020677057268844192246712999996760938", 10); + mpz_set_str(table[30], "16111947654263471062987951280933612107797745914404747800879419436244925700160", 10); + mpz_set_str(table[31], "2816313998096377331329464739618546925298330235352507252445643434708670236613", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] +k=62 +sel[2]=0 +sel[3]=0 +*/ +void EscalarMulWindow_04331b56a98f2867(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "2401533621621056639229827562937649963990842351400311499822063218569939743237", 10); + mpz_set_str(table[3], "4854496669479974955369764197611004447018055605684746490663358322047649631427", 10); + mpz_set_str(table[4], "8636605064084931784708728904364011398644223276243075880136138272077826517059", 10); + mpz_set_str(table[5], "20516451417255783586307942218726228704556620573170058938117233409366750061772", 10); + mpz_set_str(table[6], "7291581887654520377080356484648867223387514198503829517506424589864987157009", 10); + mpz_set_str(table[7], "5052305923292895020449465423757368989608894159439880668464526697060758962029", 10); + mpz_set_str(table[8], "2987409044237919138230446301182123540511030111592830867028787349099414142061", 10); + mpz_set_str(table[9], "5364081456978211591904772714849539553795139930715244062079192622674017580276", 10); + mpz_set_str(table[10], "13524325827846504973487682702107846473013960827147501312009698731283423665814", 10); + mpz_set_str(table[11], "1855761682303320144267949465344911140933411024799789711821279849640624021915", 10); + mpz_set_str(table[12], "10386592326729448225285742115053606773124867543003687249868091752363688960584", 10); + mpz_set_str(table[13], "11027109230685264970996929522237471185958846286248479390550791497615496141997", 10); + mpz_set_str(table[14], "20565183328003872635242132644273019992762593114016879535887283130423097901445", 10); + mpz_set_str(table[15], "10934604535457090798050813442859417042898222087342703097830389120839008795593", 10); + mpz_set_str(table[16], "17046382121482353685388213772041341063559639924041456554337984877973524133687", 10); + mpz_set_str(table[17], "11698950125850889205864944006739422575998738942302523943486737963576287732292", 10); + mpz_set_str(table[18], "6753423321137978153314426594304464840752360496363090195948512321633056549348", 10); + mpz_set_str(table[19], "17053701604158674202115982646431841547977027569862778817218240355815366533269", 10); + mpz_set_str(table[20], "7814418104658789495012756671586973503015101447661359190245586882711902499288", 10); + mpz_set_str(table[21], "4884809386272632346260085316264952456128723913431284295922545075579272997776", 10); + mpz_set_str(table[22], "13370648175110326735616539525540991721500970345295164929810376161334657804081", 10); + mpz_set_str(table[23], "359712335075769797957965687115617532427754473261443754898252606148908006836", 10); + mpz_set_str(table[24], "11540959163541907023399933519631654649021346801315816824361701457904159010893", 10); + mpz_set_str(table[25], "8736172202908959764683971721482986700339944699691493549732117625521817431224", 10); + mpz_set_str(table[26], "11655258207334483419447826168458800613717999771746446200823133210063403521139", 10); + mpz_set_str(table[27], "16180852090760558718567754050638991619723564315748839335655881961503420983781", 10); + mpz_set_str(table[28], "16926983117539301171430170992653986152010926752019725784525498344174035890992", 10); + mpz_set_str(table[29], "5682205926059888235852706855333279964534500809866220088108873331941408076178", 10); + mpz_set_str(table[30], "6297376933798356724927828249238067875569883973771389161440033358181866272888", 10); + mpz_set_str(table[31], "13952643067521014993155836650160228088408448372010464939744235439026274695523", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +MultiMux4 +c[0][0]=0 +c[0][10]=0 +c[0][11]=0 +c[0][12]=0 +c[0][13]=0 +c[0][14]=0 +c[0][15]=0 +c[0][1]=0 +c[0][2]=0 +c[0][3]=0 +c[0][4]=0 +c[0][5]=0 +c[0][6]=0 +c[0][7]=0 +c[0][8]=0 +c[0][9]=0 +c[1][0]=0 +c[1][10]=0 +c[1][11]=0 +c[1][12]=0 +c[1][13]=0 +c[1][14]=0 +c[1][15]=0 +c[1][1]=0 +c[1][2]=0 +c[1][3]=0 +c[1][4]=0 +c[1][5]=0 +c[1][6]=0 +c[1][7]=0 +c[1][8]=0 +c[1][9]=0 +n=2 +*/ +void MultiMux4_e43006c194d99269(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_2; + int _offset_2; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_1 = ctx->allocBigInts(1); + int _sigIdx_5; + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + int _offset_4; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + int _offset_5; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _sigIdx_8; + int _sigIdx_9; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_6; + int _offset_6; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_11; + int _sigIdx_12; + Circom_Sizes _sigSizes_7; + int _offset_11; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _sigIdx_13; + Circom_Sizes _sigSizes_8; + int _offset_13; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _sigIdx_14; + Circom_Sizes _sigSizes_9; + int _offset_15; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_17; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_16; + Circom_Sizes _sigSizes_11; + int _offset_19; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_12; + int _offset_21; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _tmp_9 = ctx->allocBigInts(1); + int _sigIdx_18; + Circom_Sizes _sigSizes_13; + int _offset_23; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + PBigInt _tmp_10 = ctx->allocBigInts(1); + int _sigIdx_19; + Circom_Sizes _sigSizes_14; + int _offset_25; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_20; + Circom_Sizes _sigSizes_15; + int _offset_27; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + PBigInt _tmp_12 = ctx->allocBigInts(1); + int _sigIdx_21; + Circom_Sizes _sigSizes_16; + int _offset_29; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _sigIdx_22; + Circom_Sizes _sigSizes_17; + int _offset_31; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_23; + Circom_Sizes _sigSizes_18; + int _offset_33; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _sigIdx_24; + Circom_Sizes _sigSizes_19; + int _offset_35; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _tmp_16 = ctx->allocBigInts(1); + int _sigIdx_25; + Circom_Sizes _sigSizes_20; + int _offset_37; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _sigIdx_26; + Circom_Sizes _sigSizes_21; + int _offset_39; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_27; + Circom_Sizes _sigSizes_22; + int _offset_41; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _sigIdx_28; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + PBigInt _tmp_20 = ctx->allocBigInts(1); + int _sigIdx_29; + Circom_Sizes _sigSizes_23; + int _offset_43; + int _sigIdx_30; + Circom_Sizes _sigSizes_24; + int _offset_45; + PBigInt _sigValue_25 = ctx->allocBigInts(1); + int _sigIdx_31; + Circom_Sizes _sigSizes_25; + int _offset_47; + PBigInt _sigValue_26 = ctx->allocBigInts(1); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _sigIdx_32; + Circom_Sizes _sigSizes_26; + int _offset_49; + PBigInt _sigValue_27 = ctx->allocBigInts(1); + PBigInt _tmp_22 = ctx->allocBigInts(1); + int _sigIdx_33; + Circom_Sizes _sigSizes_27; + int _offset_51; + PBigInt _sigValue_28 = ctx->allocBigInts(1); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _sigIdx_34; + Circom_Sizes _sigSizes_28; + int _offset_53; + PBigInt _sigValue_29 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _sigIdx_35; + Circom_Sizes _sigSizes_29; + int _offset_55; + PBigInt _sigValue_30 = ctx->allocBigInts(1); + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _sigIdx_36; + Circom_Sizes _sigSizes_30; + int _offset_57; + PBigInt _sigValue_31 = ctx->allocBigInts(1); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _sigIdx_37; + Circom_Sizes _sigSizes_31; + int _offset_59; + PBigInt _sigValue_32 = ctx->allocBigInts(1); + PBigInt _tmp_27 = ctx->allocBigInts(1); + int _sigIdx_38; + PBigInt _sigValue_33 = ctx->allocBigInts(1); + PBigInt _tmp_28 = ctx->allocBigInts(1); + int _sigIdx_39; + Circom_Sizes _sigSizes_32; + int _offset_61; + int _sigIdx_40; + Circom_Sizes _sigSizes_33; + int _offset_63; + PBigInt _sigValue_34 = ctx->allocBigInts(1); + int _sigIdx_41; + Circom_Sizes _sigSizes_34; + int _offset_65; + PBigInt _sigValue_35 = ctx->allocBigInts(1); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _sigIdx_42; + Circom_Sizes _sigSizes_35; + int _offset_67; + PBigInt _sigValue_36 = ctx->allocBigInts(1); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _sigIdx_43; + Circom_Sizes _sigSizes_36; + int _offset_69; + PBigInt _sigValue_37 = ctx->allocBigInts(1); + PBigInt _tmp_31 = ctx->allocBigInts(1); + int _sigIdx_44; + Circom_Sizes _sigSizes_37; + int _offset_71; + PBigInt _sigValue_38 = ctx->allocBigInts(1); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _sigIdx_45; + Circom_Sizes _sigSizes_38; + int _offset_73; + PBigInt _sigValue_39 = ctx->allocBigInts(1); + PBigInt _tmp_33 = ctx->allocBigInts(1); + int _sigIdx_46; + Circom_Sizes _sigSizes_39; + int _offset_75; + PBigInt _sigValue_40 = ctx->allocBigInts(1); + PBigInt _tmp_34 = ctx->allocBigInts(1); + int _sigIdx_47; + Circom_Sizes _sigSizes_40; + int _offset_77; + PBigInt _sigValue_41 = ctx->allocBigInts(1); + PBigInt _tmp_35 = ctx->allocBigInts(1); + int _sigIdx_48; + PBigInt _sigValue_42 = ctx->allocBigInts(1); + PBigInt _tmp_36 = ctx->allocBigInts(1); + int _sigIdx_49; + Circom_Sizes _sigSizes_41; + int _offset_79; + int _sigIdx_50; + Circom_Sizes _sigSizes_42; + int _offset_81; + PBigInt _sigValue_43 = ctx->allocBigInts(1); + int _sigIdx_51; + Circom_Sizes _sigSizes_43; + int _offset_83; + PBigInt _sigValue_44 = ctx->allocBigInts(1); + PBigInt _tmp_37 = ctx->allocBigInts(1); + int _sigIdx_52; + Circom_Sizes _sigSizes_44; + int _offset_85; + PBigInt _sigValue_45 = ctx->allocBigInts(1); + PBigInt _tmp_38 = ctx->allocBigInts(1); + int _sigIdx_53; + Circom_Sizes _sigSizes_45; + int _offset_87; + PBigInt _sigValue_46 = ctx->allocBigInts(1); + PBigInt _tmp_39 = ctx->allocBigInts(1); + int _sigIdx_54; + Circom_Sizes _sigSizes_46; + int _offset_89; + PBigInt _sigValue_47 = ctx->allocBigInts(1); + PBigInt _tmp_40 = ctx->allocBigInts(1); + int _sigIdx_55; + Circom_Sizes _sigSizes_47; + int _offset_91; + PBigInt _sigValue_48 = ctx->allocBigInts(1); + PBigInt _tmp_41 = ctx->allocBigInts(1); + int _sigIdx_56; + Circom_Sizes _sigSizes_48; + int _offset_93; + PBigInt _sigValue_49 = ctx->allocBigInts(1); + PBigInt _tmp_42 = ctx->allocBigInts(1); + int _sigIdx_57; + Circom_Sizes _sigSizes_49; + int _offset_95; + PBigInt _sigValue_50 = ctx->allocBigInts(1); + PBigInt _tmp_43 = ctx->allocBigInts(1); + int _sigIdx_58; + PBigInt _sigValue_51 = ctx->allocBigInts(1); + PBigInt _tmp_44 = ctx->allocBigInts(1); + int _sigIdx_59; + Circom_Sizes _sigSizes_50; + int _offset_97; + int _sigIdx_60; + Circom_Sizes _sigSizes_51; + int _offset_99; + PBigInt _sigValue_52 = ctx->allocBigInts(1); + int _sigIdx_61; + Circom_Sizes _sigSizes_52; + int _offset_101; + PBigInt _sigValue_53 = ctx->allocBigInts(1); + PBigInt _tmp_45 = ctx->allocBigInts(1); + int _sigIdx_62; + Circom_Sizes _sigSizes_53; + int _offset_103; + PBigInt _sigValue_54 = ctx->allocBigInts(1); + PBigInt _tmp_46 = ctx->allocBigInts(1); + int _sigIdx_63; + Circom_Sizes _sigSizes_54; + int _offset_105; + PBigInt _sigValue_55 = ctx->allocBigInts(1); + PBigInt _tmp_47 = ctx->allocBigInts(1); + int _sigIdx_64; + Circom_Sizes _sigSizes_55; + int _offset_106; + PBigInt _sigValue_56 = ctx->allocBigInts(1); + PBigInt _tmp_48 = ctx->allocBigInts(1); + int _sigIdx_65; + Circom_Sizes _sigSizes_56; + int _offset_108; + int _sigIdx_66; + Circom_Sizes _sigSizes_57; + int _offset_110; + PBigInt _sigValue_57 = ctx->allocBigInts(1); + int _sigIdx_67; + Circom_Sizes _sigSizes_58; + int _offset_112; + PBigInt _sigValue_58 = ctx->allocBigInts(1); + PBigInt _tmp_49 = ctx->allocBigInts(1); + int _sigIdx_68; + Circom_Sizes _sigSizes_59; + int _offset_114; + PBigInt _sigValue_59 = ctx->allocBigInts(1); + PBigInt _tmp_50 = ctx->allocBigInts(1); + int _sigIdx_69; + Circom_Sizes _sigSizes_60; + int _offset_116; + PBigInt _sigValue_60 = ctx->allocBigInts(1); + PBigInt _tmp_51 = ctx->allocBigInts(1); + int _sigIdx_70; + Circom_Sizes _sigSizes_61; + int _offset_117; + PBigInt _sigValue_61 = ctx->allocBigInts(1); + PBigInt _tmp_52 = ctx->allocBigInts(1); + int _sigIdx_71; + Circom_Sizes _sigSizes_62; + int _offset_119; + int _sigIdx_72; + Circom_Sizes _sigSizes_63; + int _offset_121; + PBigInt _sigValue_62 = ctx->allocBigInts(1); + int _sigIdx_73; + Circom_Sizes _sigSizes_64; + int _offset_123; + PBigInt _sigValue_63 = ctx->allocBigInts(1); + PBigInt _tmp_53 = ctx->allocBigInts(1); + int _sigIdx_74; + Circom_Sizes _sigSizes_65; + int _offset_125; + PBigInt _sigValue_64 = ctx->allocBigInts(1); + PBigInt _tmp_54 = ctx->allocBigInts(1); + int _sigIdx_75; + Circom_Sizes _sigSizes_66; + int _offset_127; + PBigInt _sigValue_65 = ctx->allocBigInts(1); + PBigInt _tmp_55 = ctx->allocBigInts(1); + int _sigIdx_76; + Circom_Sizes _sigSizes_67; + int _offset_128; + PBigInt _sigValue_66 = ctx->allocBigInts(1); + PBigInt _tmp_56 = ctx->allocBigInts(1); + int _sigIdx_77; + Circom_Sizes _sigSizes_68; + int _offset_130; + int _sigIdx_78; + Circom_Sizes _sigSizes_69; + int _offset_132; + PBigInt _sigValue_67 = ctx->allocBigInts(1); + int _sigIdx_79; + Circom_Sizes _sigSizes_70; + int _offset_134; + PBigInt _sigValue_68 = ctx->allocBigInts(1); + PBigInt _tmp_57 = ctx->allocBigInts(1); + int _sigIdx_80; + Circom_Sizes _sigSizes_71; + int _offset_136; + int _sigIdx_81; + Circom_Sizes _sigSizes_72; + int _offset_138; + PBigInt _sigValue_69 = ctx->allocBigInts(1); + int _sigIdx_82; + Circom_Sizes _sigSizes_73; + int _offset_140; + PBigInt _sigValue_70 = ctx->allocBigInts(1); + PBigInt _tmp_58 = ctx->allocBigInts(1); + int _sigIdx_83; + Circom_Sizes _sigSizes_74; + int _offset_142; + PBigInt _sigValue_71 = ctx->allocBigInts(1); + PBigInt _tmp_59 = ctx->allocBigInts(1); + int _sigIdx_84; + Circom_Sizes _sigSizes_75; + int _offset_144; + PBigInt _sigValue_72 = ctx->allocBigInts(1); + PBigInt _tmp_60 = ctx->allocBigInts(1); + int _sigIdx_85; + Circom_Sizes _sigSizes_76; + int _offset_146; + PBigInt _sigValue_73 = ctx->allocBigInts(1); + PBigInt _tmp_61 = ctx->allocBigInts(1); + int _sigIdx_86; + Circom_Sizes _sigSizes_77; + int _offset_148; + PBigInt _sigValue_74 = ctx->allocBigInts(1); + PBigInt _tmp_62 = ctx->allocBigInts(1); + int _sigIdx_87; + Circom_Sizes _sigSizes_78; + int _offset_150; + PBigInt _sigValue_75 = ctx->allocBigInts(1); + PBigInt _tmp_63 = ctx->allocBigInts(1); + int _sigIdx_88; + Circom_Sizes _sigSizes_79; + int _offset_152; + PBigInt _sigValue_76 = ctx->allocBigInts(1); + PBigInt _tmp_64 = ctx->allocBigInts(1); + int _sigIdx_89; + PBigInt _sigValue_77 = ctx->allocBigInts(1); + PBigInt _tmp_65 = ctx->allocBigInts(1); + int _sigIdx_90; + Circom_Sizes _sigSizes_80; + int _offset_154; + int _sigIdx_91; + Circom_Sizes _sigSizes_81; + int _offset_156; + PBigInt _sigValue_78 = ctx->allocBigInts(1); + int _sigIdx_92; + Circom_Sizes _sigSizes_82; + int _offset_158; + PBigInt _sigValue_79 = ctx->allocBigInts(1); + PBigInt _tmp_66 = ctx->allocBigInts(1); + int _sigIdx_93; + Circom_Sizes _sigSizes_83; + int _offset_160; + PBigInt _sigValue_80 = ctx->allocBigInts(1); + PBigInt _tmp_67 = ctx->allocBigInts(1); + int _sigIdx_94; + Circom_Sizes _sigSizes_84; + int _offset_162; + PBigInt _sigValue_81 = ctx->allocBigInts(1); + PBigInt _tmp_68 = ctx->allocBigInts(1); + int _sigIdx_95; + PBigInt _sigValue_82 = ctx->allocBigInts(1); + PBigInt _tmp_69 = ctx->allocBigInts(1); + int _sigIdx_96; + Circom_Sizes _sigSizes_85; + int _offset_164; + int _sigIdx_97; + Circom_Sizes _sigSizes_86; + int _offset_166; + PBigInt _sigValue_83 = ctx->allocBigInts(1); + int _sigIdx_98; + Circom_Sizes _sigSizes_87; + int _offset_168; + PBigInt _sigValue_84 = ctx->allocBigInts(1); + PBigInt _tmp_70 = ctx->allocBigInts(1); + int _sigIdx_99; + Circom_Sizes _sigSizes_88; + int _offset_170; + PBigInt _sigValue_85 = ctx->allocBigInts(1); + PBigInt _tmp_71 = ctx->allocBigInts(1); + int _sigIdx_100; + Circom_Sizes _sigSizes_89; + int _offset_172; + PBigInt _sigValue_86 = ctx->allocBigInts(1); + PBigInt _tmp_72 = ctx->allocBigInts(1); + int _sigIdx_101; + PBigInt _sigValue_87 = ctx->allocBigInts(1); + PBigInt _tmp_73 = ctx->allocBigInts(1); + int _sigIdx_102; + Circom_Sizes _sigSizes_90; + int _offset_174; + int _sigIdx_103; + Circom_Sizes _sigSizes_91; + int _offset_176; + PBigInt _sigValue_88 = ctx->allocBigInts(1); + int _sigIdx_104; + Circom_Sizes _sigSizes_92; + int _offset_178; + PBigInt _sigValue_89 = ctx->allocBigInts(1); + PBigInt _tmp_74 = ctx->allocBigInts(1); + int _sigIdx_105; + Circom_Sizes _sigSizes_93; + int _offset_180; + PBigInt _sigValue_90 = ctx->allocBigInts(1); + PBigInt _tmp_75 = ctx->allocBigInts(1); + int _sigIdx_106; + Circom_Sizes _sigSizes_94; + int _offset_182; + PBigInt _sigValue_91 = ctx->allocBigInts(1); + PBigInt _tmp_76 = ctx->allocBigInts(1); + int _sigIdx_107; + PBigInt _sigValue_92 = ctx->allocBigInts(1); + PBigInt _tmp_77 = ctx->allocBigInts(1); + int _sigIdx_108; + Circom_Sizes _sigSizes_95; + int _offset_184; + int _sigIdx_109; + Circom_Sizes _sigSizes_96; + int _offset_186; + PBigInt _sigValue_93 = ctx->allocBigInts(1); + int _sigIdx_110; + Circom_Sizes _sigSizes_97; + int _offset_188; + PBigInt _sigValue_94 = ctx->allocBigInts(1); + PBigInt _tmp_78 = ctx->allocBigInts(1); + int _sigIdx_111; + Circom_Sizes _sigSizes_98; + int _offset_189; + PBigInt _sigValue_95 = ctx->allocBigInts(1); + PBigInt _tmp_79 = ctx->allocBigInts(1); + int _sigIdx_112; + Circom_Sizes _sigSizes_99; + int _offset_191; + int _sigIdx_113; + Circom_Sizes _sigSizes_100; + int _offset_193; + PBigInt _sigValue_96 = ctx->allocBigInts(1); + int _sigIdx_114; + Circom_Sizes _sigSizes_101; + int _offset_195; + PBigInt _sigValue_97 = ctx->allocBigInts(1); + PBigInt _tmp_80 = ctx->allocBigInts(1); + int _sigIdx_115; + Circom_Sizes _sigSizes_102; + int _offset_196; + PBigInt _sigValue_98 = ctx->allocBigInts(1); + PBigInt _tmp_81 = ctx->allocBigInts(1); + int _sigIdx_116; + Circom_Sizes _sigSizes_103; + int _offset_198; + int _sigIdx_117; + Circom_Sizes _sigSizes_104; + int _offset_200; + PBigInt _sigValue_99 = ctx->allocBigInts(1); + int _sigIdx_118; + Circom_Sizes _sigSizes_105; + int _offset_202; + PBigInt _sigValue_100 = ctx->allocBigInts(1); + PBigInt _tmp_82 = ctx->allocBigInts(1); + int _sigIdx_119; + Circom_Sizes _sigSizes_106; + int _offset_203; + PBigInt _sigValue_101 = ctx->allocBigInts(1); + PBigInt _tmp_83 = ctx->allocBigInts(1); + int _sigIdx_120; + Circom_Sizes _sigSizes_107; + int _offset_205; + int _sigIdx_121; + Circom_Sizes _sigSizes_108; + int _offset_207; + PBigInt _sigValue_102 = ctx->allocBigInts(1); + int _sigIdx_122; + Circom_Sizes _sigSizes_109; + int _offset_209; + int _sigIdx_123; + Circom_Sizes _sigSizes_110; + int _offset_211; + PBigInt _sigValue_103 = ctx->allocBigInts(1); + int _sigIdx_124; + Circom_Sizes _sigSizes_111; + int _offset_213; + PBigInt _sigValue_104 = ctx->allocBigInts(1); + PBigInt _tmp_84 = ctx->allocBigInts(1); + int _sigIdx_125; + Circom_Sizes _sigSizes_112; + int _offset_215; + PBigInt _sigValue_105 = ctx->allocBigInts(1); + PBigInt _tmp_85 = ctx->allocBigInts(1); + int _sigIdx_126; + Circom_Sizes _sigSizes_113; + int _offset_217; + PBigInt _sigValue_106 = ctx->allocBigInts(1); + PBigInt _tmp_86 = ctx->allocBigInts(1); + int _sigIdx_127; + Circom_Sizes _sigSizes_114; + int _offset_219; + PBigInt _sigValue_107 = ctx->allocBigInts(1); + PBigInt _tmp_87 = ctx->allocBigInts(1); + int _sigIdx_128; + Circom_Sizes _sigSizes_115; + int _offset_221; + PBigInt _sigValue_108 = ctx->allocBigInts(1); + PBigInt _tmp_88 = ctx->allocBigInts(1); + int _sigIdx_129; + Circom_Sizes _sigSizes_116; + int _offset_223; + PBigInt _sigValue_109 = ctx->allocBigInts(1); + PBigInt _tmp_89 = ctx->allocBigInts(1); + int _sigIdx_130; + Circom_Sizes _sigSizes_117; + int _offset_225; + PBigInt _sigValue_110 = ctx->allocBigInts(1); + PBigInt _tmp_90 = ctx->allocBigInts(1); + int _sigIdx_131; + Circom_Sizes _sigSizes_118; + int _offset_226; + PBigInt _sigValue_111 = ctx->allocBigInts(1); + PBigInt _tmp_91 = ctx->allocBigInts(1); + int _sigIdx_132; + Circom_Sizes _sigSizes_119; + int _offset_228; + PBigInt _sigValue_112 = ctx->allocBigInts(1); + int _sigIdx_133; + Circom_Sizes _sigSizes_120; + int _offset_230; + PBigInt _sigValue_113 = ctx->allocBigInts(1); + PBigInt _tmp_92 = ctx->allocBigInts(1); + int _sigIdx_134; + Circom_Sizes _sigSizes_121; + int _offset_232; + PBigInt _sigValue_114 = ctx->allocBigInts(1); + PBigInt _tmp_93 = ctx->allocBigInts(1); + int _sigIdx_135; + Circom_Sizes _sigSizes_122; + int _offset_234; + PBigInt _sigValue_115 = ctx->allocBigInts(1); + PBigInt _tmp_94 = ctx->allocBigInts(1); + int _sigIdx_136; + Circom_Sizes _sigSizes_123; + int _offset_236; + PBigInt _sigValue_116 = ctx->allocBigInts(1); + PBigInt _tmp_95 = ctx->allocBigInts(1); + int _sigIdx_137; + Circom_Sizes _sigSizes_124; + int _offset_238; + PBigInt _sigValue_117 = ctx->allocBigInts(1); + PBigInt _tmp_96 = ctx->allocBigInts(1); + int _sigIdx_138; + Circom_Sizes _sigSizes_125; + int _offset_240; + PBigInt _sigValue_118 = ctx->allocBigInts(1); + PBigInt _tmp_97 = ctx->allocBigInts(1); + int _sigIdx_139; + Circom_Sizes _sigSizes_126; + int _offset_242; + PBigInt _sigValue_119 = ctx->allocBigInts(1); + PBigInt _tmp_98 = ctx->allocBigInts(1); + PBigInt _tmp_99 = ctx->allocBigInts(1); + int _sigIdx_140; + Circom_Sizes _sigSizes_127; + int _offset_244; + PBigInt _tmp_101 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _sigIdx_141; + Circom_Sizes _sigSizes_128; + PBigInt _v_119; + int _offset_250; + PBigInt _sigValue_120 = ctx->allocBigInts(1); + int _sigIdx_142; + Circom_Sizes _sigSizes_129; + PBigInt _v_120; + int _offset_252; + PBigInt _sigValue_121 = ctx->allocBigInts(1); + PBigInt _tmp_102 = ctx->allocBigInts(1); + int _sigIdx_143; + Circom_Sizes _sigSizes_130; + PBigInt _v_121; + int _offset_254; + PBigInt _sigValue_122 = ctx->allocBigInts(1); + PBigInt _tmp_103 = ctx->allocBigInts(1); + int _sigIdx_144; + Circom_Sizes _sigSizes_131; + PBigInt _v_122; + int _offset_256; + PBigInt _sigValue_123 = ctx->allocBigInts(1); + PBigInt _tmp_104 = ctx->allocBigInts(1); + int _sigIdx_145; + Circom_Sizes _sigSizes_132; + PBigInt _v_123; + int _offset_258; + PBigInt _sigValue_124 = ctx->allocBigInts(1); + PBigInt _tmp_105 = ctx->allocBigInts(1); + int _sigIdx_146; + Circom_Sizes _sigSizes_133; + PBigInt _v_124; + int _offset_260; + PBigInt _sigValue_125 = ctx->allocBigInts(1); + PBigInt _tmp_106 = ctx->allocBigInts(1); + int _sigIdx_147; + Circom_Sizes _sigSizes_134; + PBigInt _v_125; + int _offset_262; + PBigInt _sigValue_126 = ctx->allocBigInts(1); + PBigInt _tmp_107 = ctx->allocBigInts(1); + int _sigIdx_148; + Circom_Sizes _sigSizes_135; + PBigInt _v_126; + int _offset_264; + PBigInt _sigValue_127 = ctx->allocBigInts(1); + PBigInt _tmp_108 = ctx->allocBigInts(1); + int _sigIdx_149; + Circom_Sizes _sigSizes_136; + PBigInt _v_127; + int _offset_266; + PBigInt _sigValue_128 = ctx->allocBigInts(1); + PBigInt _tmp_109 = ctx->allocBigInts(1); + int _sigIdx_150; + Circom_Sizes _sigSizes_137; + PBigInt _v_128; + int _offset_268; + PBigInt _sigValue_129 = ctx->allocBigInts(1); + PBigInt _tmp_110 = ctx->allocBigInts(1); + int _sigIdx_151; + Circom_Sizes _sigSizes_138; + PBigInt _v_129; + int _offset_270; + PBigInt _sigValue_130 = ctx->allocBigInts(1); + PBigInt _tmp_111 = ctx->allocBigInts(1); + int _sigIdx_152; + Circom_Sizes _sigSizes_139; + PBigInt _v_130; + int _offset_272; + PBigInt _sigValue_131 = ctx->allocBigInts(1); + PBigInt _tmp_112 = ctx->allocBigInts(1); + int _sigIdx_153; + Circom_Sizes _sigSizes_140; + PBigInt _v_131; + int _offset_274; + PBigInt _sigValue_132 = ctx->allocBigInts(1); + PBigInt _tmp_113 = ctx->allocBigInts(1); + int _sigIdx_154; + Circom_Sizes _sigSizes_141; + PBigInt _v_132; + int _offset_276; + PBigInt _sigValue_133 = ctx->allocBigInts(1); + PBigInt _tmp_114 = ctx->allocBigInts(1); + int _sigIdx_155; + Circom_Sizes _sigSizes_142; + PBigInt _v_133; + int _offset_278; + PBigInt _sigValue_134 = ctx->allocBigInts(1); + PBigInt _tmp_115 = ctx->allocBigInts(1); + int _sigIdx_156; + Circom_Sizes _sigSizes_143; + PBigInt _v_134; + int _offset_280; + PBigInt _sigValue_135 = ctx->allocBigInts(1); + PBigInt _tmp_116 = ctx->allocBigInts(1); + int _sigIdx_157; + PBigInt _sigValue_136 = ctx->allocBigInts(1); + PBigInt _tmp_117 = ctx->allocBigInts(1); + int _sigIdx_158; + Circom_Sizes _sigSizes_144; + PBigInt _v_135; + int _offset_282; + int _sigIdx_159; + Circom_Sizes _sigSizes_145; + PBigInt _v_136; + int _offset_284; + PBigInt _sigValue_137 = ctx->allocBigInts(1); + int _sigIdx_160; + Circom_Sizes _sigSizes_146; + PBigInt _v_137; + int _offset_286; + PBigInt _sigValue_138 = ctx->allocBigInts(1); + PBigInt _tmp_118 = ctx->allocBigInts(1); + int _sigIdx_161; + Circom_Sizes _sigSizes_147; + PBigInt _v_138; + int _offset_288; + PBigInt _sigValue_139 = ctx->allocBigInts(1); + PBigInt _tmp_119 = ctx->allocBigInts(1); + int _sigIdx_162; + Circom_Sizes _sigSizes_148; + PBigInt _v_139; + int _offset_290; + PBigInt _sigValue_140 = ctx->allocBigInts(1); + PBigInt _tmp_120 = ctx->allocBigInts(1); + int _sigIdx_163; + Circom_Sizes _sigSizes_149; + PBigInt _v_140; + int _offset_292; + PBigInt _sigValue_141 = ctx->allocBigInts(1); + PBigInt _tmp_121 = ctx->allocBigInts(1); + int _sigIdx_164; + Circom_Sizes _sigSizes_150; + PBigInt _v_141; + int _offset_294; + PBigInt _sigValue_142 = ctx->allocBigInts(1); + PBigInt _tmp_122 = ctx->allocBigInts(1); + int _sigIdx_165; + Circom_Sizes _sigSizes_151; + PBigInt _v_142; + int _offset_296; + PBigInt _sigValue_143 = ctx->allocBigInts(1); + PBigInt _tmp_123 = ctx->allocBigInts(1); + int _sigIdx_166; + Circom_Sizes _sigSizes_152; + PBigInt _v_143; + int _offset_298; + PBigInt _sigValue_144 = ctx->allocBigInts(1); + PBigInt _tmp_124 = ctx->allocBigInts(1); + int _sigIdx_167; + PBigInt _sigValue_145 = ctx->allocBigInts(1); + PBigInt _tmp_125 = ctx->allocBigInts(1); + int _sigIdx_168; + Circom_Sizes _sigSizes_153; + PBigInt _v_144; + int _offset_300; + int _sigIdx_169; + Circom_Sizes _sigSizes_154; + PBigInt _v_145; + int _offset_302; + PBigInt _sigValue_146 = ctx->allocBigInts(1); + int _sigIdx_170; + Circom_Sizes _sigSizes_155; + PBigInt _v_146; + int _offset_304; + PBigInt _sigValue_147 = ctx->allocBigInts(1); + PBigInt _tmp_126 = ctx->allocBigInts(1); + int _sigIdx_171; + Circom_Sizes _sigSizes_156; + PBigInt _v_147; + int _offset_306; + PBigInt _sigValue_148 = ctx->allocBigInts(1); + PBigInt _tmp_127 = ctx->allocBigInts(1); + int _sigIdx_172; + Circom_Sizes _sigSizes_157; + PBigInt _v_148; + int _offset_308; + PBigInt _sigValue_149 = ctx->allocBigInts(1); + PBigInt _tmp_128 = ctx->allocBigInts(1); + int _sigIdx_173; + Circom_Sizes _sigSizes_158; + PBigInt _v_149; + int _offset_310; + PBigInt _sigValue_150 = ctx->allocBigInts(1); + PBigInt _tmp_129 = ctx->allocBigInts(1); + int _sigIdx_174; + Circom_Sizes _sigSizes_159; + PBigInt _v_150; + int _offset_312; + PBigInt _sigValue_151 = ctx->allocBigInts(1); + PBigInt _tmp_130 = ctx->allocBigInts(1); + int _sigIdx_175; + Circom_Sizes _sigSizes_160; + PBigInt _v_151; + int _offset_314; + PBigInt _sigValue_152 = ctx->allocBigInts(1); + PBigInt _tmp_131 = ctx->allocBigInts(1); + int _sigIdx_176; + Circom_Sizes _sigSizes_161; + PBigInt _v_152; + int _offset_316; + PBigInt _sigValue_153 = ctx->allocBigInts(1); + PBigInt _tmp_132 = ctx->allocBigInts(1); + int _sigIdx_177; + PBigInt _sigValue_154 = ctx->allocBigInts(1); + PBigInt _tmp_133 = ctx->allocBigInts(1); + int _sigIdx_178; + Circom_Sizes _sigSizes_162; + PBigInt _v_153; + int _offset_318; + int _sigIdx_179; + Circom_Sizes _sigSizes_163; + PBigInt _v_154; + int _offset_320; + PBigInt _sigValue_155 = ctx->allocBigInts(1); + int _sigIdx_180; + Circom_Sizes _sigSizes_164; + PBigInt _v_155; + int _offset_322; + PBigInt _sigValue_156 = ctx->allocBigInts(1); + PBigInt _tmp_134 = ctx->allocBigInts(1); + int _sigIdx_181; + Circom_Sizes _sigSizes_165; + PBigInt _v_156; + int _offset_324; + PBigInt _sigValue_157 = ctx->allocBigInts(1); + PBigInt _tmp_135 = ctx->allocBigInts(1); + int _sigIdx_182; + Circom_Sizes _sigSizes_166; + PBigInt _v_157; + int _offset_326; + PBigInt _sigValue_158 = ctx->allocBigInts(1); + PBigInt _tmp_136 = ctx->allocBigInts(1); + int _sigIdx_183; + Circom_Sizes _sigSizes_167; + PBigInt _v_158; + int _offset_328; + PBigInt _sigValue_159 = ctx->allocBigInts(1); + PBigInt _tmp_137 = ctx->allocBigInts(1); + int _sigIdx_184; + Circom_Sizes _sigSizes_168; + PBigInt _v_159; + int _offset_330; + PBigInt _sigValue_160 = ctx->allocBigInts(1); + PBigInt _tmp_138 = ctx->allocBigInts(1); + int _sigIdx_185; + Circom_Sizes _sigSizes_169; + PBigInt _v_160; + int _offset_332; + PBigInt _sigValue_161 = ctx->allocBigInts(1); + PBigInt _tmp_139 = ctx->allocBigInts(1); + int _sigIdx_186; + Circom_Sizes _sigSizes_170; + PBigInt _v_161; + int _offset_334; + PBigInt _sigValue_162 = ctx->allocBigInts(1); + PBigInt _tmp_140 = ctx->allocBigInts(1); + int _sigIdx_187; + PBigInt _sigValue_163 = ctx->allocBigInts(1); + PBigInt _tmp_141 = ctx->allocBigInts(1); + int _sigIdx_188; + Circom_Sizes _sigSizes_171; + PBigInt _v_162; + int _offset_336; + int _sigIdx_189; + Circom_Sizes _sigSizes_172; + PBigInt _v_163; + int _offset_338; + PBigInt _sigValue_164 = ctx->allocBigInts(1); + int _sigIdx_190; + Circom_Sizes _sigSizes_173; + PBigInt _v_164; + int _offset_340; + PBigInt _sigValue_165 = ctx->allocBigInts(1); + PBigInt _tmp_142 = ctx->allocBigInts(1); + int _sigIdx_191; + Circom_Sizes _sigSizes_174; + PBigInt _v_165; + int _offset_342; + PBigInt _sigValue_166 = ctx->allocBigInts(1); + PBigInt _tmp_143 = ctx->allocBigInts(1); + int _sigIdx_192; + Circom_Sizes _sigSizes_175; + PBigInt _v_166; + int _offset_344; + PBigInt _sigValue_167 = ctx->allocBigInts(1); + PBigInt _tmp_144 = ctx->allocBigInts(1); + int _sigIdx_193; + Circom_Sizes _sigSizes_176; + int _offset_345; + PBigInt _sigValue_168 = ctx->allocBigInts(1); + PBigInt _tmp_145 = ctx->allocBigInts(1); + int _sigIdx_194; + Circom_Sizes _sigSizes_177; + PBigInt _v_167; + int _offset_347; + int _sigIdx_195; + Circom_Sizes _sigSizes_178; + PBigInt _v_168; + int _offset_349; + PBigInt _sigValue_169 = ctx->allocBigInts(1); + int _sigIdx_196; + Circom_Sizes _sigSizes_179; + PBigInt _v_169; + int _offset_351; + PBigInt _sigValue_170 = ctx->allocBigInts(1); + PBigInt _tmp_146 = ctx->allocBigInts(1); + int _sigIdx_197; + Circom_Sizes _sigSizes_180; + PBigInt _v_170; + int _offset_353; + PBigInt _sigValue_171 = ctx->allocBigInts(1); + PBigInt _tmp_147 = ctx->allocBigInts(1); + int _sigIdx_198; + Circom_Sizes _sigSizes_181; + PBigInt _v_171; + int _offset_355; + PBigInt _sigValue_172 = ctx->allocBigInts(1); + PBigInt _tmp_148 = ctx->allocBigInts(1); + int _sigIdx_199; + Circom_Sizes _sigSizes_182; + int _offset_356; + PBigInt _sigValue_173 = ctx->allocBigInts(1); + PBigInt _tmp_149 = ctx->allocBigInts(1); + int _sigIdx_200; + Circom_Sizes _sigSizes_183; + PBigInt _v_172; + int _offset_358; + int _sigIdx_201; + Circom_Sizes _sigSizes_184; + PBigInt _v_173; + int _offset_360; + PBigInt _sigValue_174 = ctx->allocBigInts(1); + int _sigIdx_202; + Circom_Sizes _sigSizes_185; + PBigInt _v_174; + int _offset_362; + PBigInt _sigValue_175 = ctx->allocBigInts(1); + PBigInt _tmp_150 = ctx->allocBigInts(1); + int _sigIdx_203; + Circom_Sizes _sigSizes_186; + PBigInt _v_175; + int _offset_364; + PBigInt _sigValue_176 = ctx->allocBigInts(1); + PBigInt _tmp_151 = ctx->allocBigInts(1); + int _sigIdx_204; + Circom_Sizes _sigSizes_187; + PBigInt _v_176; + int _offset_366; + PBigInt _sigValue_177 = ctx->allocBigInts(1); + PBigInt _tmp_152 = ctx->allocBigInts(1); + int _sigIdx_205; + Circom_Sizes _sigSizes_188; + int _offset_367; + PBigInt _sigValue_178 = ctx->allocBigInts(1); + PBigInt _tmp_153 = ctx->allocBigInts(1); + int _sigIdx_206; + Circom_Sizes _sigSizes_189; + PBigInt _v_177; + int _offset_369; + int _sigIdx_207; + Circom_Sizes _sigSizes_190; + PBigInt _v_178; + int _offset_371; + PBigInt _sigValue_179 = ctx->allocBigInts(1); + int _sigIdx_208; + Circom_Sizes _sigSizes_191; + PBigInt _v_179; + int _offset_373; + PBigInt _sigValue_180 = ctx->allocBigInts(1); + PBigInt _tmp_154 = ctx->allocBigInts(1); + int _sigIdx_209; + Circom_Sizes _sigSizes_192; + PBigInt _v_180; + int _offset_375; + int _sigIdx_210; + Circom_Sizes _sigSizes_193; + PBigInt _v_181; + int _offset_377; + PBigInt _sigValue_181 = ctx->allocBigInts(1); + int _sigIdx_211; + Circom_Sizes _sigSizes_194; + PBigInt _v_182; + int _offset_379; + PBigInt _sigValue_182 = ctx->allocBigInts(1); + PBigInt _tmp_155 = ctx->allocBigInts(1); + int _sigIdx_212; + Circom_Sizes _sigSizes_195; + PBigInt _v_183; + int _offset_381; + PBigInt _sigValue_183 = ctx->allocBigInts(1); + PBigInt _tmp_156 = ctx->allocBigInts(1); + int _sigIdx_213; + Circom_Sizes _sigSizes_196; + PBigInt _v_184; + int _offset_383; + PBigInt _sigValue_184 = ctx->allocBigInts(1); + PBigInt _tmp_157 = ctx->allocBigInts(1); + int _sigIdx_214; + Circom_Sizes _sigSizes_197; + PBigInt _v_185; + int _offset_385; + PBigInt _sigValue_185 = ctx->allocBigInts(1); + PBigInt _tmp_158 = ctx->allocBigInts(1); + int _sigIdx_215; + Circom_Sizes _sigSizes_198; + PBigInt _v_186; + int _offset_387; + PBigInt _sigValue_186 = ctx->allocBigInts(1); + PBigInt _tmp_159 = ctx->allocBigInts(1); + int _sigIdx_216; + Circom_Sizes _sigSizes_199; + PBigInt _v_187; + int _offset_389; + PBigInt _sigValue_187 = ctx->allocBigInts(1); + PBigInt _tmp_160 = ctx->allocBigInts(1); + int _sigIdx_217; + Circom_Sizes _sigSizes_200; + PBigInt _v_188; + int _offset_391; + PBigInt _sigValue_188 = ctx->allocBigInts(1); + PBigInt _tmp_161 = ctx->allocBigInts(1); + int _sigIdx_218; + PBigInt _sigValue_189 = ctx->allocBigInts(1); + PBigInt _tmp_162 = ctx->allocBigInts(1); + int _sigIdx_219; + Circom_Sizes _sigSizes_201; + PBigInt _v_189; + int _offset_393; + int _sigIdx_220; + Circom_Sizes _sigSizes_202; + PBigInt _v_190; + int _offset_395; + PBigInt _sigValue_190 = ctx->allocBigInts(1); + int _sigIdx_221; + Circom_Sizes _sigSizes_203; + PBigInt _v_191; + int _offset_397; + PBigInt _sigValue_191 = ctx->allocBigInts(1); + PBigInt _tmp_163 = ctx->allocBigInts(1); + int _sigIdx_222; + Circom_Sizes _sigSizes_204; + PBigInt _v_192; + int _offset_399; + PBigInt _sigValue_192 = ctx->allocBigInts(1); + PBigInt _tmp_164 = ctx->allocBigInts(1); + int _sigIdx_223; + Circom_Sizes _sigSizes_205; + PBigInt _v_193; + int _offset_401; + PBigInt _sigValue_193 = ctx->allocBigInts(1); + PBigInt _tmp_165 = ctx->allocBigInts(1); + int _sigIdx_224; + PBigInt _sigValue_194 = ctx->allocBigInts(1); + PBigInt _tmp_166 = ctx->allocBigInts(1); + int _sigIdx_225; + Circom_Sizes _sigSizes_206; + PBigInt _v_194; + int _offset_403; + int _sigIdx_226; + Circom_Sizes _sigSizes_207; + PBigInt _v_195; + int _offset_405; + PBigInt _sigValue_195 = ctx->allocBigInts(1); + int _sigIdx_227; + Circom_Sizes _sigSizes_208; + PBigInt _v_196; + int _offset_407; + PBigInt _sigValue_196 = ctx->allocBigInts(1); + PBigInt _tmp_167 = ctx->allocBigInts(1); + int _sigIdx_228; + Circom_Sizes _sigSizes_209; + PBigInt _v_197; + int _offset_409; + PBigInt _sigValue_197 = ctx->allocBigInts(1); + PBigInt _tmp_168 = ctx->allocBigInts(1); + int _sigIdx_229; + Circom_Sizes _sigSizes_210; + PBigInt _v_198; + int _offset_411; + PBigInt _sigValue_198 = ctx->allocBigInts(1); + PBigInt _tmp_169 = ctx->allocBigInts(1); + int _sigIdx_230; + PBigInt _sigValue_199 = ctx->allocBigInts(1); + PBigInt _tmp_170 = ctx->allocBigInts(1); + int _sigIdx_231; + Circom_Sizes _sigSizes_211; + PBigInt _v_199; + int _offset_413; + int _sigIdx_232; + Circom_Sizes _sigSizes_212; + PBigInt _v_200; + int _offset_415; + PBigInt _sigValue_200 = ctx->allocBigInts(1); + int _sigIdx_233; + Circom_Sizes _sigSizes_213; + PBigInt _v_201; + int _offset_417; + PBigInt _sigValue_201 = ctx->allocBigInts(1); + PBigInt _tmp_171 = ctx->allocBigInts(1); + int _sigIdx_234; + Circom_Sizes _sigSizes_214; + PBigInt _v_202; + int _offset_419; + PBigInt _sigValue_202 = ctx->allocBigInts(1); + PBigInt _tmp_172 = ctx->allocBigInts(1); + int _sigIdx_235; + Circom_Sizes _sigSizes_215; + PBigInt _v_203; + int _offset_421; + PBigInt _sigValue_203 = ctx->allocBigInts(1); + PBigInt _tmp_173 = ctx->allocBigInts(1); + int _sigIdx_236; + PBigInt _sigValue_204 = ctx->allocBigInts(1); + PBigInt _tmp_174 = ctx->allocBigInts(1); + int _sigIdx_237; + Circom_Sizes _sigSizes_216; + PBigInt _v_204; + int _offset_423; + int _sigIdx_238; + Circom_Sizes _sigSizes_217; + PBigInt _v_205; + int _offset_425; + PBigInt _sigValue_205 = ctx->allocBigInts(1); + int _sigIdx_239; + Circom_Sizes _sigSizes_218; + PBigInt _v_206; + int _offset_427; + PBigInt _sigValue_206 = ctx->allocBigInts(1); + PBigInt _tmp_175 = ctx->allocBigInts(1); + int _sigIdx_240; + Circom_Sizes _sigSizes_219; + int _offset_428; + PBigInt _sigValue_207 = ctx->allocBigInts(1); + PBigInt _tmp_176 = ctx->allocBigInts(1); + int _sigIdx_241; + Circom_Sizes _sigSizes_220; + PBigInt _v_207; + int _offset_430; + int _sigIdx_242; + Circom_Sizes _sigSizes_221; + PBigInt _v_208; + int _offset_432; + PBigInt _sigValue_208 = ctx->allocBigInts(1); + int _sigIdx_243; + Circom_Sizes _sigSizes_222; + PBigInt _v_209; + int _offset_434; + PBigInt _sigValue_209 = ctx->allocBigInts(1); + PBigInt _tmp_177 = ctx->allocBigInts(1); + int _sigIdx_244; + Circom_Sizes _sigSizes_223; + int _offset_435; + PBigInt _sigValue_210 = ctx->allocBigInts(1); + PBigInt _tmp_178 = ctx->allocBigInts(1); + int _sigIdx_245; + Circom_Sizes _sigSizes_224; + PBigInt _v_210; + int _offset_437; + int _sigIdx_246; + Circom_Sizes _sigSizes_225; + PBigInt _v_211; + int _offset_439; + PBigInt _sigValue_211 = ctx->allocBigInts(1); + int _sigIdx_247; + Circom_Sizes _sigSizes_226; + PBigInt _v_212; + int _offset_441; + PBigInt _sigValue_212 = ctx->allocBigInts(1); + PBigInt _tmp_179 = ctx->allocBigInts(1); + int _sigIdx_248; + Circom_Sizes _sigSizes_227; + int _offset_442; + PBigInt _sigValue_213 = ctx->allocBigInts(1); + PBigInt _tmp_180 = ctx->allocBigInts(1); + int _sigIdx_249; + Circom_Sizes _sigSizes_228; + PBigInt _v_213; + int _offset_444; + int _sigIdx_250; + Circom_Sizes _sigSizes_229; + PBigInt _v_214; + int _offset_446; + PBigInt _sigValue_214 = ctx->allocBigInts(1); + int _sigIdx_251; + Circom_Sizes _sigSizes_230; + PBigInt _v_215; + int _offset_448; + int _sigIdx_252; + Circom_Sizes _sigSizes_231; + PBigInt _v_216; + int _offset_450; + PBigInt _sigValue_215 = ctx->allocBigInts(1); + int _sigIdx_253; + Circom_Sizes _sigSizes_232; + PBigInt _v_217; + int _offset_452; + PBigInt _sigValue_216 = ctx->allocBigInts(1); + PBigInt _tmp_181 = ctx->allocBigInts(1); + int _sigIdx_254; + Circom_Sizes _sigSizes_233; + PBigInt _v_218; + int _offset_454; + PBigInt _sigValue_217 = ctx->allocBigInts(1); + PBigInt _tmp_182 = ctx->allocBigInts(1); + int _sigIdx_255; + Circom_Sizes _sigSizes_234; + PBigInt _v_219; + int _offset_456; + PBigInt _sigValue_218 = ctx->allocBigInts(1); + PBigInt _tmp_183 = ctx->allocBigInts(1); + int _sigIdx_256; + Circom_Sizes _sigSizes_235; + PBigInt _v_220; + int _offset_458; + PBigInt _sigValue_219 = ctx->allocBigInts(1); + PBigInt _tmp_184 = ctx->allocBigInts(1); + int _sigIdx_257; + Circom_Sizes _sigSizes_236; + PBigInt _v_221; + int _offset_460; + PBigInt _sigValue_220 = ctx->allocBigInts(1); + PBigInt _tmp_185 = ctx->allocBigInts(1); + int _sigIdx_258; + Circom_Sizes _sigSizes_237; + PBigInt _v_222; + int _offset_462; + PBigInt _sigValue_221 = ctx->allocBigInts(1); + PBigInt _tmp_186 = ctx->allocBigInts(1); + int _sigIdx_259; + Circom_Sizes _sigSizes_238; + PBigInt _v_223; + int _offset_464; + PBigInt _sigValue_222 = ctx->allocBigInts(1); + PBigInt _tmp_187 = ctx->allocBigInts(1); + int _sigIdx_260; + Circom_Sizes _sigSizes_239; + int _offset_465; + PBigInt _sigValue_223 = ctx->allocBigInts(1); + PBigInt _tmp_188 = ctx->allocBigInts(1); + int _sigIdx_261; + Circom_Sizes _sigSizes_240; + PBigInt _v_224; + int _offset_467; + PBigInt _sigValue_224 = ctx->allocBigInts(1); + int _sigIdx_262; + Circom_Sizes _sigSizes_241; + PBigInt _v_225; + int _offset_469; + PBigInt _sigValue_225 = ctx->allocBigInts(1); + PBigInt _tmp_189 = ctx->allocBigInts(1); + int _sigIdx_263; + Circom_Sizes _sigSizes_242; + PBigInt _v_226; + int _offset_471; + PBigInt _sigValue_226 = ctx->allocBigInts(1); + PBigInt _tmp_190 = ctx->allocBigInts(1); + int _sigIdx_264; + Circom_Sizes _sigSizes_243; + PBigInt _v_227; + int _offset_473; + PBigInt _sigValue_227 = ctx->allocBigInts(1); + PBigInt _tmp_191 = ctx->allocBigInts(1); + int _sigIdx_265; + Circom_Sizes _sigSizes_244; + PBigInt _v_228; + int _offset_475; + PBigInt _sigValue_228 = ctx->allocBigInts(1); + PBigInt _tmp_192 = ctx->allocBigInts(1); + int _sigIdx_266; + Circom_Sizes _sigSizes_245; + PBigInt _v_229; + int _offset_477; + PBigInt _sigValue_229 = ctx->allocBigInts(1); + PBigInt _tmp_193 = ctx->allocBigInts(1); + int _sigIdx_267; + Circom_Sizes _sigSizes_246; + PBigInt _v_230; + int _offset_479; + PBigInt _sigValue_230 = ctx->allocBigInts(1); + PBigInt _tmp_194 = ctx->allocBigInts(1); + int _sigIdx_268; + Circom_Sizes _sigSizes_247; + PBigInt _v_231; + int _offset_481; + PBigInt _sigValue_231 = ctx->allocBigInts(1); + PBigInt _tmp_195 = ctx->allocBigInts(1); + PBigInt _tmp_196 = ctx->allocBigInts(1); + int _sigIdx_269; + Circom_Sizes _sigSizes_248; + PBigInt _v_232; + int _offset_483; + PBigInt _v_233; + PBigInt _tmp_197 = ctx->allocBigInts(1); + PBigInt _v_234; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "2", 10); + PBigInt _tmp_198 = ctx->allocBigInts(1); + + + /* signal input c[n][16] */ + + /* signal input s[4] */ + + /* signal output out[n] */ + + /* signal a3210[n] */ + + /* signal a321[n] */ + + /* signal a320[n] */ + + /* signal a310[n] */ + + /* signal a32[n] */ + + /* signal a31[n] */ + + /* signal a30[n] */ + + /* signal a3[n] */ + + /* signal a210[n] */ + + /* signal a21[n] */ + + /* signal a20[n] */ + + /* signal a10[n] */ + + /* signal a2[n] */ + + /* signal a1[n] */ + + /* signal a0[n] */ + + /* signal a[n] */ + + /* signal s10 */ + + /* s10 <== s[1] * s[0] */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset = _sigIdx + 1*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); + ctx->field->mul(_tmp,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); + + /* signal s20 */ + + /* s20 <== s[2] * s[0] */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_2 = _sigIdx_3 + 2*_sigSizes_2[1]; + ctx->getSignal(ctx->cIdx, _offset_2, _sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_3 = _sigIdx_4 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_3); + ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); + ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); + + /* signal s21 */ + + /* s21 <== s[2] * s[1] */ + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_4 = _sigIdx_6 + 2*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_4); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_5 = _sigIdx_7 + 1*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_5, _sigValue_5); + ctx->field->mul(_tmp_2,_sigValue_4,_sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->setSignal(ctx->cIdx, _sigIdx_8, _tmp_2); + + /* signal s210 */ + + /* s210 <== s21 * s[0] */ + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_6); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx_10 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_7); + ctx->field->mul(_tmp_3,_sigValue_6,_sigValue_7); + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); + ctx->setSignal(ctx->cIdx, _sigIdx_11, _tmp_3); + + /* for (var i=0,igetSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_11 = _sigIdx_12 + 0*_sigSizes_7[1] + 15*_sigSizes_7[2]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_8); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_13 = _sigIdx_13 + 0*_sigSizes_8[1] + 14*_sigSizes_8[2]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_9); + ctx->field->sub(_tmp_5,_sigValue_8,_sigValue_9); + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_15 = _sigIdx_14 + 0*_sigSizes_9[1] + 13*_sigSizes_9[2]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_10); + ctx->field->sub(_tmp_6,_tmp_5,_sigValue_10); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_17 = _sigIdx_15 + 0*_sigSizes_10[1] + 12*_sigSizes_10[2]; + ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_11); + ctx->field->add(_tmp_7,_tmp_6,_sigValue_11); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_19 = _sigIdx_16 + 0*_sigSizes_11[1] + 11*_sigSizes_11[2]; + ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_12); + ctx->field->sub(_tmp_8,_tmp_7,_sigValue_12); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_21 = _sigIdx_17 + 0*_sigSizes_12[1] + 10*_sigSizes_12[2]; + ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_13); + ctx->field->add(_tmp_9,_tmp_8,_sigValue_13); + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_23 = _sigIdx_18 + 0*_sigSizes_13[1] + 9*_sigSizes_13[2]; + ctx->getSignal(ctx->cIdx, _offset_23, _sigValue_14); + ctx->field->add(_tmp_10,_tmp_9,_sigValue_14); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_25 = _sigIdx_19 + 0*_sigSizes_14[1] + 8*_sigSizes_14[2]; + ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_15); + ctx->field->sub(_tmp_11,_tmp_10,_sigValue_15); + _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_27 = _sigIdx_20 + 0*_sigSizes_15[1] + 7*_sigSizes_15[2]; + ctx->getSignal(ctx->cIdx, _offset_27, _sigValue_16); + ctx->field->sub(_tmp_12,_tmp_11,_sigValue_16); + _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_16 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_29 = _sigIdx_21 + 0*_sigSizes_16[1] + 6*_sigSizes_16[2]; + ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_17); + ctx->field->add(_tmp_13,_tmp_12,_sigValue_17); + _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_31 = _sigIdx_22 + 0*_sigSizes_17[1] + 5*_sigSizes_17[2]; + ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_18); + ctx->field->add(_tmp_14,_tmp_13,_sigValue_18); + _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_33 = _sigIdx_23 + 0*_sigSizes_18[1] + 4*_sigSizes_18[2]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_19); + ctx->field->sub(_tmp_15,_tmp_14,_sigValue_19); + _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_35 = _sigIdx_24 + 0*_sigSizes_19[1] + 3*_sigSizes_19[2]; + ctx->getSignal(ctx->cIdx, _offset_35, _sigValue_20); + ctx->field->add(_tmp_16,_tmp_15,_sigValue_20); + _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_20 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_37 = _sigIdx_25 + 0*_sigSizes_20[1] + 2*_sigSizes_20[2]; + ctx->getSignal(ctx->cIdx, _offset_37, _sigValue_21); + ctx->field->sub(_tmp_17,_tmp_16,_sigValue_21); + _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_39 = _sigIdx_26 + 0*_sigSizes_21[1] + 1*_sigSizes_21[2]; + ctx->getSignal(ctx->cIdx, _offset_39, _sigValue_22); + ctx->field->sub(_tmp_18,_tmp_17,_sigValue_22); + _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_22 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_41 = _sigIdx_27 + 0*_sigSizes_22[1] + 0*_sigSizes_22[2]; + ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_23); + ctx->field->add(_tmp_19,_tmp_18,_sigValue_23); + _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); + ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_24); + ctx->field->mul(_tmp_20,_tmp_19,_sigValue_24); + _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _sigSizes_23 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _offset_43 = _sigIdx_29 + 0*_sigSizes_23[1]; + ctx->setSignal(ctx->cIdx, _offset_43, _tmp_20); + + /* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */ + _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_24 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_45 = _sigIdx_30 + 0*_sigSizes_24[1] + 14*_sigSizes_24[2]; + ctx->getSignal(ctx->cIdx, _offset_45, _sigValue_25); + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_25 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_47 = _sigIdx_31 + 0*_sigSizes_25[1] + 12*_sigSizes_25[2]; + ctx->getSignal(ctx->cIdx, _offset_47, _sigValue_26); + ctx->field->sub(_tmp_21,_sigValue_25,_sigValue_26); + _sigIdx_32 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_26 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_49 = _sigIdx_32 + 0*_sigSizes_26[1] + 10*_sigSizes_26[2]; + ctx->getSignal(ctx->cIdx, _offset_49, _sigValue_27); + ctx->field->sub(_tmp_22,_tmp_21,_sigValue_27); + _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_27 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_51 = _sigIdx_33 + 0*_sigSizes_27[1] + 8*_sigSizes_27[2]; + ctx->getSignal(ctx->cIdx, _offset_51, _sigValue_28); + ctx->field->add(_tmp_23,_tmp_22,_sigValue_28); + _sigIdx_34 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_28 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_53 = _sigIdx_34 + 0*_sigSizes_28[1] + 6*_sigSizes_28[2]; + ctx->getSignal(ctx->cIdx, _offset_53, _sigValue_29); + ctx->field->sub(_tmp_24,_tmp_23,_sigValue_29); + _sigIdx_35 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_29 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_55 = _sigIdx_35 + 0*_sigSizes_29[1] + 4*_sigSizes_29[2]; + ctx->getSignal(ctx->cIdx, _offset_55, _sigValue_30); + ctx->field->add(_tmp_25,_tmp_24,_sigValue_30); + _sigIdx_36 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_30 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_57 = _sigIdx_36 + 0*_sigSizes_30[1] + 2*_sigSizes_30[2]; + ctx->getSignal(ctx->cIdx, _offset_57, _sigValue_31); + ctx->field->add(_tmp_26,_tmp_25,_sigValue_31); + _sigIdx_37 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_59 = _sigIdx_37 + 0*_sigSizes_31[1] + 0*_sigSizes_31[2]; + ctx->getSignal(ctx->cIdx, _offset_59, _sigValue_32); + ctx->field->sub(_tmp_27,_tmp_26,_sigValue_32); + _sigIdx_38 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->getSignal(ctx->cIdx, _sigIdx_38, _sigValue_33); + ctx->field->mul(_tmp_28,_tmp_27,_sigValue_33); + _sigIdx_39 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _sigSizes_32 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _offset_61 = _sigIdx_39 + 0*_sigSizes_32[1]; + ctx->setSignal(ctx->cIdx, _offset_61, _tmp_28); + + /* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */ + _sigIdx_40 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_63 = _sigIdx_40 + 0*_sigSizes_33[1] + 13*_sigSizes_33[2]; + ctx->getSignal(ctx->cIdx, _offset_63, _sigValue_34); + _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_34 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_65 = _sigIdx_41 + 0*_sigSizes_34[1] + 12*_sigSizes_34[2]; + ctx->getSignal(ctx->cIdx, _offset_65, _sigValue_35); + ctx->field->sub(_tmp_29,_sigValue_34,_sigValue_35); + _sigIdx_42 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_35 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_67 = _sigIdx_42 + 0*_sigSizes_35[1] + 9*_sigSizes_35[2]; + ctx->getSignal(ctx->cIdx, _offset_67, _sigValue_36); + ctx->field->sub(_tmp_30,_tmp_29,_sigValue_36); + _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_36 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_69 = _sigIdx_43 + 0*_sigSizes_36[1] + 8*_sigSizes_36[2]; + ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_37); + ctx->field->add(_tmp_31,_tmp_30,_sigValue_37); + _sigIdx_44 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_37 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_71 = _sigIdx_44 + 0*_sigSizes_37[1] + 5*_sigSizes_37[2]; + ctx->getSignal(ctx->cIdx, _offset_71, _sigValue_38); + ctx->field->sub(_tmp_32,_tmp_31,_sigValue_38); + _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_38 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_73 = _sigIdx_45 + 0*_sigSizes_38[1] + 4*_sigSizes_38[2]; + ctx->getSignal(ctx->cIdx, _offset_73, _sigValue_39); + ctx->field->add(_tmp_33,_tmp_32,_sigValue_39); + _sigIdx_46 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_39 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_75 = _sigIdx_46 + 0*_sigSizes_39[1] + 1*_sigSizes_39[2]; + ctx->getSignal(ctx->cIdx, _offset_75, _sigValue_40); + ctx->field->add(_tmp_34,_tmp_33,_sigValue_40); + _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_40 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_77 = _sigIdx_47 + 0*_sigSizes_40[1] + 0*_sigSizes_40[2]; + ctx->getSignal(ctx->cIdx, _offset_77, _sigValue_41); + ctx->field->sub(_tmp_35,_tmp_34,_sigValue_41); + _sigIdx_48 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); + ctx->getSignal(ctx->cIdx, _sigIdx_48, _sigValue_42); + ctx->field->mul(_tmp_36,_tmp_35,_sigValue_42); + _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _offset_79 = _sigIdx_49 + 0*_sigSizes_41[1]; + ctx->setSignal(ctx->cIdx, _offset_79, _tmp_36); + + /* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ + _sigIdx_50 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_42 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_81 = _sigIdx_50 + 0*_sigSizes_42[1] + 11*_sigSizes_42[2]; + ctx->getSignal(ctx->cIdx, _offset_81, _sigValue_43); + _sigIdx_51 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_83 = _sigIdx_51 + 0*_sigSizes_43[1] + 10*_sigSizes_43[2]; + ctx->getSignal(ctx->cIdx, _offset_83, _sigValue_44); + ctx->field->sub(_tmp_37,_sigValue_43,_sigValue_44); + _sigIdx_52 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_44 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_85 = _sigIdx_52 + 0*_sigSizes_44[1] + 9*_sigSizes_44[2]; + ctx->getSignal(ctx->cIdx, _offset_85, _sigValue_45); + ctx->field->sub(_tmp_38,_tmp_37,_sigValue_45); + _sigIdx_53 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_87 = _sigIdx_53 + 0*_sigSizes_45[1] + 8*_sigSizes_45[2]; + ctx->getSignal(ctx->cIdx, _offset_87, _sigValue_46); + ctx->field->add(_tmp_39,_tmp_38,_sigValue_46); + _sigIdx_54 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_46 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_89 = _sigIdx_54 + 0*_sigSizes_46[1] + 3*_sigSizes_46[2]; + ctx->getSignal(ctx->cIdx, _offset_89, _sigValue_47); + ctx->field->sub(_tmp_40,_tmp_39,_sigValue_47); + _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_91 = _sigIdx_55 + 0*_sigSizes_47[1] + 2*_sigSizes_47[2]; + ctx->getSignal(ctx->cIdx, _offset_91, _sigValue_48); + ctx->field->add(_tmp_41,_tmp_40,_sigValue_48); + _sigIdx_56 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_48 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_93 = _sigIdx_56 + 0*_sigSizes_48[1] + 1*_sigSizes_48[2]; + ctx->getSignal(ctx->cIdx, _offset_93, _sigValue_49); + ctx->field->add(_tmp_42,_tmp_41,_sigValue_49); + _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_95 = _sigIdx_57 + 0*_sigSizes_49[1] + 0*_sigSizes_49[2]; + ctx->getSignal(ctx->cIdx, _offset_95, _sigValue_50); + ctx->field->sub(_tmp_43,_tmp_42,_sigValue_50); + _sigIdx_58 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_58, _sigValue_51); + ctx->field->mul(_tmp_44,_tmp_43,_sigValue_51); + _sigIdx_59 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _sigSizes_50 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _offset_97 = _sigIdx_59 + 0*_sigSizes_50[1]; + ctx->setSignal(ctx->cIdx, _offset_97, _tmp_44); + + /* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */ + _sigIdx_60 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_51 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_99 = _sigIdx_60 + 0*_sigSizes_51[1] + 12*_sigSizes_51[2]; + ctx->getSignal(ctx->cIdx, _offset_99, _sigValue_52); + _sigIdx_61 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_52 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_101 = _sigIdx_61 + 0*_sigSizes_52[1] + 8*_sigSizes_52[2]; + ctx->getSignal(ctx->cIdx, _offset_101, _sigValue_53); + ctx->field->sub(_tmp_45,_sigValue_52,_sigValue_53); + _sigIdx_62 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_53 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_103 = _sigIdx_62 + 0*_sigSizes_53[1] + 4*_sigSizes_53[2]; + ctx->getSignal(ctx->cIdx, _offset_103, _sigValue_54); + ctx->field->sub(_tmp_46,_tmp_45,_sigValue_54); + _sigIdx_63 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_54 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_105 = _sigIdx_63 + 0*_sigSizes_54[1] + 0*_sigSizes_54[2]; + ctx->getSignal(ctx->cIdx, _offset_105, _sigValue_55); + ctx->field->add(_tmp_47,_tmp_46,_sigValue_55); + _sigIdx_64 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_106 = _sigIdx_64 + 2*_sigSizes_55[1]; + ctx->getSignal(ctx->cIdx, _offset_106, _sigValue_56); + ctx->field->mul(_tmp_48,_tmp_47,_sigValue_56); + _sigIdx_65 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _sigSizes_56 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _offset_108 = _sigIdx_65 + 0*_sigSizes_56[1]; + ctx->setSignal(ctx->cIdx, _offset_108, _tmp_48); + + /* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */ + _sigIdx_66 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_110 = _sigIdx_66 + 0*_sigSizes_57[1] + 10*_sigSizes_57[2]; + ctx->getSignal(ctx->cIdx, _offset_110, _sigValue_57); + _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_58 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_112 = _sigIdx_67 + 0*_sigSizes_58[1] + 8*_sigSizes_58[2]; + ctx->getSignal(ctx->cIdx, _offset_112, _sigValue_58); + ctx->field->sub(_tmp_49,_sigValue_57,_sigValue_58); + _sigIdx_68 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_59 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_114 = _sigIdx_68 + 0*_sigSizes_59[1] + 2*_sigSizes_59[2]; + ctx->getSignal(ctx->cIdx, _offset_114, _sigValue_59); + ctx->field->sub(_tmp_50,_tmp_49,_sigValue_59); + _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_60 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_116 = _sigIdx_69 + 0*_sigSizes_60[1] + 0*_sigSizes_60[2]; + ctx->getSignal(ctx->cIdx, _offset_116, _sigValue_60); + ctx->field->add(_tmp_51,_tmp_50,_sigValue_60); + _sigIdx_70 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_61 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_117 = _sigIdx_70 + 1*_sigSizes_61[1]; + ctx->getSignal(ctx->cIdx, _offset_117, _sigValue_61); + ctx->field->mul(_tmp_52,_tmp_51,_sigValue_61); + _sigIdx_71 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _sigSizes_62 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _offset_119 = _sigIdx_71 + 0*_sigSizes_62[1]; + ctx->setSignal(ctx->cIdx, _offset_119, _tmp_52); + + /* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */ + _sigIdx_72 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_63 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_121 = _sigIdx_72 + 0*_sigSizes_63[1] + 9*_sigSizes_63[2]; + ctx->getSignal(ctx->cIdx, _offset_121, _sigValue_62); + _sigIdx_73 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_64 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_123 = _sigIdx_73 + 0*_sigSizes_64[1] + 8*_sigSizes_64[2]; + ctx->getSignal(ctx->cIdx, _offset_123, _sigValue_63); + ctx->field->sub(_tmp_53,_sigValue_62,_sigValue_63); + _sigIdx_74 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_65 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_125 = _sigIdx_74 + 0*_sigSizes_65[1] + 1*_sigSizes_65[2]; + ctx->getSignal(ctx->cIdx, _offset_125, _sigValue_64); + ctx->field->sub(_tmp_54,_tmp_53,_sigValue_64); + _sigIdx_75 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_66 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_127 = _sigIdx_75 + 0*_sigSizes_66[1] + 0*_sigSizes_66[2]; + ctx->getSignal(ctx->cIdx, _offset_127, _sigValue_65); + ctx->field->add(_tmp_55,_tmp_54,_sigValue_65); + _sigIdx_76 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_128 = _sigIdx_76 + 0*_sigSizes_67[1]; + ctx->getSignal(ctx->cIdx, _offset_128, _sigValue_66); + ctx->field->mul(_tmp_56,_tmp_55,_sigValue_66); + _sigIdx_77 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _sigSizes_68 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _offset_130 = _sigIdx_77 + 0*_sigSizes_68[1]; + ctx->setSignal(ctx->cIdx, _offset_130, _tmp_56); + + /* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */ + _sigIdx_78 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_132 = _sigIdx_78 + 0*_sigSizes_69[1] + 8*_sigSizes_69[2]; + ctx->getSignal(ctx->cIdx, _offset_132, _sigValue_67); + _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_70 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_134 = _sigIdx_79 + 0*_sigSizes_70[1] + 0*_sigSizes_70[2]; + ctx->getSignal(ctx->cIdx, _offset_134, _sigValue_68); + ctx->field->sub(_tmp_57,_sigValue_67,_sigValue_68); + _sigIdx_80 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _sigSizes_71 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _offset_136 = _sigIdx_80 + 0*_sigSizes_71[1]; + ctx->setSignal(ctx->cIdx, _offset_136, _tmp_57); + + /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */ + _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_72 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_138 = _sigIdx_81 + 0*_sigSizes_72[1] + 7*_sigSizes_72[2]; + ctx->getSignal(ctx->cIdx, _offset_138, _sigValue_69); + _sigIdx_82 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_73 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_140 = _sigIdx_82 + 0*_sigSizes_73[1] + 6*_sigSizes_73[2]; + ctx->getSignal(ctx->cIdx, _offset_140, _sigValue_70); + ctx->field->sub(_tmp_58,_sigValue_69,_sigValue_70); + _sigIdx_83 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_74 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_142 = _sigIdx_83 + 0*_sigSizes_74[1] + 5*_sigSizes_74[2]; + ctx->getSignal(ctx->cIdx, _offset_142, _sigValue_71); + ctx->field->sub(_tmp_59,_tmp_58,_sigValue_71); + _sigIdx_84 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_75 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_144 = _sigIdx_84 + 0*_sigSizes_75[1] + 4*_sigSizes_75[2]; + ctx->getSignal(ctx->cIdx, _offset_144, _sigValue_72); + ctx->field->add(_tmp_60,_tmp_59,_sigValue_72); + _sigIdx_85 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_76 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_146 = _sigIdx_85 + 0*_sigSizes_76[1] + 3*_sigSizes_76[2]; + ctx->getSignal(ctx->cIdx, _offset_146, _sigValue_73); + ctx->field->sub(_tmp_61,_tmp_60,_sigValue_73); + _sigIdx_86 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_77 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_148 = _sigIdx_86 + 0*_sigSizes_77[1] + 2*_sigSizes_77[2]; + ctx->getSignal(ctx->cIdx, _offset_148, _sigValue_74); + ctx->field->add(_tmp_62,_tmp_61,_sigValue_74); + _sigIdx_87 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_78 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_150 = _sigIdx_87 + 0*_sigSizes_78[1] + 1*_sigSizes_78[2]; + ctx->getSignal(ctx->cIdx, _offset_150, _sigValue_75); + ctx->field->add(_tmp_63,_tmp_62,_sigValue_75); + _sigIdx_88 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_152 = _sigIdx_88 + 0*_sigSizes_79[1] + 0*_sigSizes_79[2]; + ctx->getSignal(ctx->cIdx, _offset_152, _sigValue_76); + ctx->field->sub(_tmp_64,_tmp_63,_sigValue_76); + _sigIdx_89 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); + ctx->getSignal(ctx->cIdx, _sigIdx_89, _sigValue_77); + ctx->field->mul(_tmp_65,_tmp_64,_sigValue_77); + _sigIdx_90 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_80 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _offset_154 = _sigIdx_90 + 0*_sigSizes_80[1]; + ctx->setSignal(ctx->cIdx, _offset_154, _tmp_65); + + /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */ + _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_156 = _sigIdx_91 + 0*_sigSizes_81[1] + 6*_sigSizes_81[2]; + ctx->getSignal(ctx->cIdx, _offset_156, _sigValue_78); + _sigIdx_92 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_82 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_158 = _sigIdx_92 + 0*_sigSizes_82[1] + 4*_sigSizes_82[2]; + ctx->getSignal(ctx->cIdx, _offset_158, _sigValue_79); + ctx->field->sub(_tmp_66,_sigValue_78,_sigValue_79); + _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_83 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_160 = _sigIdx_93 + 0*_sigSizes_83[1] + 2*_sigSizes_83[2]; + ctx->getSignal(ctx->cIdx, _offset_160, _sigValue_80); + ctx->field->sub(_tmp_67,_tmp_66,_sigValue_80); + _sigIdx_94 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_84 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_162 = _sigIdx_94 + 0*_sigSizes_84[1] + 0*_sigSizes_84[2]; + ctx->getSignal(ctx->cIdx, _offset_162, _sigValue_81); + ctx->field->add(_tmp_68,_tmp_67,_sigValue_81); + _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->getSignal(ctx->cIdx, _sigIdx_95, _sigValue_82); + ctx->field->mul(_tmp_69,_tmp_68,_sigValue_82); + _sigIdx_96 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_85 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _offset_164 = _sigIdx_96 + 0*_sigSizes_85[1]; + ctx->setSignal(ctx->cIdx, _offset_164, _tmp_69); + + /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */ + _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_86 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_166 = _sigIdx_97 + 0*_sigSizes_86[1] + 5*_sigSizes_86[2]; + ctx->getSignal(ctx->cIdx, _offset_166, _sigValue_83); + _sigIdx_98 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_87 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_168 = _sigIdx_98 + 0*_sigSizes_87[1] + 4*_sigSizes_87[2]; + ctx->getSignal(ctx->cIdx, _offset_168, _sigValue_84); + ctx->field->sub(_tmp_70,_sigValue_83,_sigValue_84); + _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_88 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_170 = _sigIdx_99 + 0*_sigSizes_88[1] + 1*_sigSizes_88[2]; + ctx->getSignal(ctx->cIdx, _offset_170, _sigValue_85); + ctx->field->sub(_tmp_71,_tmp_70,_sigValue_85); + _sigIdx_100 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_89 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_172 = _sigIdx_100 + 0*_sigSizes_89[1] + 0*_sigSizes_89[2]; + ctx->getSignal(ctx->cIdx, _offset_172, _sigValue_86); + ctx->field->add(_tmp_72,_tmp_71,_sigValue_86); + _sigIdx_101 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); + ctx->getSignal(ctx->cIdx, _sigIdx_101, _sigValue_87); + ctx->field->mul(_tmp_73,_tmp_72,_sigValue_87); + _sigIdx_102 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_90 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _offset_174 = _sigIdx_102 + 0*_sigSizes_90[1]; + ctx->setSignal(ctx->cIdx, _offset_174, _tmp_73); + + /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ + _sigIdx_103 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_176 = _sigIdx_103 + 0*_sigSizes_91[1] + 3*_sigSizes_91[2]; + ctx->getSignal(ctx->cIdx, _offset_176, _sigValue_88); + _sigIdx_104 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_92 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_178 = _sigIdx_104 + 0*_sigSizes_92[1] + 2*_sigSizes_92[2]; + ctx->getSignal(ctx->cIdx, _offset_178, _sigValue_89); + ctx->field->sub(_tmp_74,_sigValue_88,_sigValue_89); + _sigIdx_105 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_180 = _sigIdx_105 + 0*_sigSizes_93[1] + 1*_sigSizes_93[2]; + ctx->getSignal(ctx->cIdx, _offset_180, _sigValue_90); + ctx->field->sub(_tmp_75,_tmp_74,_sigValue_90); + _sigIdx_106 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_94 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_182 = _sigIdx_106 + 0*_sigSizes_94[1] + 0*_sigSizes_94[2]; + ctx->getSignal(ctx->cIdx, _offset_182, _sigValue_91); + ctx->field->add(_tmp_76,_tmp_75,_sigValue_91); + _sigIdx_107 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_107, _sigValue_92); + ctx->field->mul(_tmp_77,_tmp_76,_sigValue_92); + _sigIdx_108 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _offset_184 = _sigIdx_108 + 0*_sigSizes_95[1]; + ctx->setSignal(ctx->cIdx, _offset_184, _tmp_77); + + /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */ + _sigIdx_109 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_96 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_186 = _sigIdx_109 + 0*_sigSizes_96[1] + 4*_sigSizes_96[2]; + ctx->getSignal(ctx->cIdx, _offset_186, _sigValue_93); + _sigIdx_110 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_188 = _sigIdx_110 + 0*_sigSizes_97[1] + 0*_sigSizes_97[2]; + ctx->getSignal(ctx->cIdx, _offset_188, _sigValue_94); + ctx->field->sub(_tmp_78,_sigValue_93,_sigValue_94); + _sigIdx_111 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_98 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_189 = _sigIdx_111 + 2*_sigSizes_98[1]; + ctx->getSignal(ctx->cIdx, _offset_189, _sigValue_95); + ctx->field->mul(_tmp_79,_tmp_78,_sigValue_95); + _sigIdx_112 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _offset_191 = _sigIdx_112 + 0*_sigSizes_99[1]; + ctx->setSignal(ctx->cIdx, _offset_191, _tmp_79); + + /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ + _sigIdx_113 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_100 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_193 = _sigIdx_113 + 0*_sigSizes_100[1] + 2*_sigSizes_100[2]; + ctx->getSignal(ctx->cIdx, _offset_193, _sigValue_96); + _sigIdx_114 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_101 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_195 = _sigIdx_114 + 0*_sigSizes_101[1] + 0*_sigSizes_101[2]; + ctx->getSignal(ctx->cIdx, _offset_195, _sigValue_97); + ctx->field->sub(_tmp_80,_sigValue_96,_sigValue_97); + _sigIdx_115 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_102 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_196 = _sigIdx_115 + 1*_sigSizes_102[1]; + ctx->getSignal(ctx->cIdx, _offset_196, _sigValue_98); + ctx->field->mul(_tmp_81,_tmp_80,_sigValue_98); + _sigIdx_116 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_103 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _offset_198 = _sigIdx_116 + 0*_sigSizes_103[1]; + ctx->setSignal(ctx->cIdx, _offset_198, _tmp_81); + + /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ + _sigIdx_117 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_104 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_200 = _sigIdx_117 + 0*_sigSizes_104[1] + 1*_sigSizes_104[2]; + ctx->getSignal(ctx->cIdx, _offset_200, _sigValue_99); + _sigIdx_118 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_105 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_202 = _sigIdx_118 + 0*_sigSizes_105[1] + 0*_sigSizes_105[2]; + ctx->getSignal(ctx->cIdx, _offset_202, _sigValue_100); + ctx->field->sub(_tmp_82,_sigValue_99,_sigValue_100); + _sigIdx_119 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_106 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_203 = _sigIdx_119 + 0*_sigSizes_106[1]; + ctx->getSignal(ctx->cIdx, _offset_203, _sigValue_101); + ctx->field->mul(_tmp_83,_tmp_82,_sigValue_101); + _sigIdx_120 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_107 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _offset_205 = _sigIdx_120 + 0*_sigSizes_107[1]; + ctx->setSignal(ctx->cIdx, _offset_205, _tmp_83); + + /* a[i] <== ( c[i][ 0] ) */ + _sigIdx_121 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_108 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_207 = _sigIdx_121 + 0*_sigSizes_108[1] + 0*_sigSizes_108[2]; + ctx->getSignal(ctx->cIdx, _offset_207, _sigValue_102); + _sigIdx_122 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_109 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _offset_209 = _sigIdx_122 + 0*_sigSizes_109[1]; + ctx->setSignal(ctx->cIdx, _offset_209, _sigValue_102); + + /* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] + + ( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */ + _sigIdx_123 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _sigSizes_110 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _offset_211 = _sigIdx_123 + 0*_sigSizes_110[1]; + ctx->getSignal(ctx->cIdx, _offset_211, _sigValue_103); + _sigIdx_124 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _sigSizes_111 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _offset_213 = _sigIdx_124 + 0*_sigSizes_111[1]; + ctx->getSignal(ctx->cIdx, _offset_213, _sigValue_104); + ctx->field->add(_tmp_84,_sigValue_103,_sigValue_104); + _sigIdx_125 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _sigSizes_112 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _offset_215 = _sigIdx_125 + 0*_sigSizes_112[1]; + ctx->getSignal(ctx->cIdx, _offset_215, _sigValue_105); + ctx->field->add(_tmp_85,_tmp_84,_sigValue_105); + _sigIdx_126 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _sigSizes_113 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _offset_217 = _sigIdx_126 + 0*_sigSizes_113[1]; + ctx->getSignal(ctx->cIdx, _offset_217, _sigValue_106); + ctx->field->add(_tmp_86,_tmp_85,_sigValue_106); + _sigIdx_127 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _sigSizes_114 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _offset_219 = _sigIdx_127 + 0*_sigSizes_114[1]; + ctx->getSignal(ctx->cIdx, _offset_219, _sigValue_107); + ctx->field->add(_tmp_87,_tmp_86,_sigValue_107); + _sigIdx_128 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _sigSizes_115 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _offset_221 = _sigIdx_128 + 0*_sigSizes_115[1]; + ctx->getSignal(ctx->cIdx, _offset_221, _sigValue_108); + ctx->field->add(_tmp_88,_tmp_87,_sigValue_108); + _sigIdx_129 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _sigSizes_116 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _offset_223 = _sigIdx_129 + 0*_sigSizes_116[1]; + ctx->getSignal(ctx->cIdx, _offset_223, _sigValue_109); + ctx->field->add(_tmp_89,_tmp_88,_sigValue_109); + _sigIdx_130 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _sigSizes_117 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _offset_225 = _sigIdx_130 + 0*_sigSizes_117[1]; + ctx->getSignal(ctx->cIdx, _offset_225, _sigValue_110); + ctx->field->add(_tmp_90,_tmp_89,_sigValue_110); + _sigIdx_131 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_118 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_226 = _sigIdx_131 + 3*_sigSizes_118[1]; + ctx->getSignal(ctx->cIdx, _offset_226, _sigValue_111); + ctx->field->mul(_tmp_91,_tmp_90,_sigValue_111); + _sigIdx_132 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_119 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _offset_228 = _sigIdx_132 + 0*_sigSizes_119[1]; + ctx->getSignal(ctx->cIdx, _offset_228, _sigValue_112); + _sigIdx_133 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_120 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _offset_230 = _sigIdx_133 + 0*_sigSizes_120[1]; + ctx->getSignal(ctx->cIdx, _offset_230, _sigValue_113); + ctx->field->add(_tmp_92,_sigValue_112,_sigValue_113); + _sigIdx_134 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_121 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _offset_232 = _sigIdx_134 + 0*_sigSizes_121[1]; + ctx->getSignal(ctx->cIdx, _offset_232, _sigValue_114); + ctx->field->add(_tmp_93,_tmp_92,_sigValue_114); + _sigIdx_135 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_122 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _offset_234 = _sigIdx_135 + 0*_sigSizes_122[1]; + ctx->getSignal(ctx->cIdx, _offset_234, _sigValue_115); + ctx->field->add(_tmp_94,_tmp_93,_sigValue_115); + _sigIdx_136 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_123 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _offset_236 = _sigIdx_136 + 0*_sigSizes_123[1]; + ctx->getSignal(ctx->cIdx, _offset_236, _sigValue_116); + ctx->field->add(_tmp_95,_tmp_94,_sigValue_116); + _sigIdx_137 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_124 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _offset_238 = _sigIdx_137 + 0*_sigSizes_124[1]; + ctx->getSignal(ctx->cIdx, _offset_238, _sigValue_117); + ctx->field->add(_tmp_96,_tmp_95,_sigValue_117); + _sigIdx_138 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_125 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _offset_240 = _sigIdx_138 + 0*_sigSizes_125[1]; + ctx->getSignal(ctx->cIdx, _offset_240, _sigValue_118); + ctx->field->add(_tmp_97,_tmp_96,_sigValue_118); + _sigIdx_139 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_126 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _offset_242 = _sigIdx_139 + 0*_sigSizes_126[1]; + ctx->getSignal(ctx->cIdx, _offset_242, _sigValue_119); + ctx->field->add(_tmp_98,_tmp_97,_sigValue_119); + ctx->field->add(_tmp_99,_tmp_91,_tmp_98); + _sigIdx_140 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_127 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_244 = _sigIdx_140 + 0*_sigSizes_127[1]; + ctx->setSignal(ctx->cIdx, _offset_244, _tmp_99); + mpz_set_str(_tmp_101[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_101); + while (_cond) { + + /* a3210[i] <== ( c[i][15]-c[i][14]-c[i][13]+c[i][12] - c[i][11]+c[i][10]+c[i][ 9]-c[i][ 8] + -c[i][ 7]+c[i][ 6]+c[i][ 5]-c[i][ 4] + c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s210 */ + _sigIdx_141 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_128 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_119 = i + 0; + _offset_250 = _sigIdx_141 + ctx->field->toInt(_v_119)*_sigSizes_128[1] + 15*_sigSizes_128[2]; + ctx->getSignal(ctx->cIdx, _offset_250, _sigValue_120); + _sigIdx_142 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_129 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_120 = i + 0; + _offset_252 = _sigIdx_142 + ctx->field->toInt(_v_120)*_sigSizes_129[1] + 14*_sigSizes_129[2]; + ctx->getSignal(ctx->cIdx, _offset_252, _sigValue_121); + ctx->field->sub(_tmp_102,_sigValue_120,_sigValue_121); + _sigIdx_143 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_130 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_121 = i + 0; + _offset_254 = _sigIdx_143 + ctx->field->toInt(_v_121)*_sigSizes_130[1] + 13*_sigSizes_130[2]; + ctx->getSignal(ctx->cIdx, _offset_254, _sigValue_122); + ctx->field->sub(_tmp_103,_tmp_102,_sigValue_122); + _sigIdx_144 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_131 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_122 = i + 0; + _offset_256 = _sigIdx_144 + ctx->field->toInt(_v_122)*_sigSizes_131[1] + 12*_sigSizes_131[2]; + ctx->getSignal(ctx->cIdx, _offset_256, _sigValue_123); + ctx->field->add(_tmp_104,_tmp_103,_sigValue_123); + _sigIdx_145 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_132 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_123 = i + 0; + _offset_258 = _sigIdx_145 + ctx->field->toInt(_v_123)*_sigSizes_132[1] + 11*_sigSizes_132[2]; + ctx->getSignal(ctx->cIdx, _offset_258, _sigValue_124); + ctx->field->sub(_tmp_105,_tmp_104,_sigValue_124); + _sigIdx_146 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_133 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_124 = i + 0; + _offset_260 = _sigIdx_146 + ctx->field->toInt(_v_124)*_sigSizes_133[1] + 10*_sigSizes_133[2]; + ctx->getSignal(ctx->cIdx, _offset_260, _sigValue_125); + ctx->field->add(_tmp_106,_tmp_105,_sigValue_125); + _sigIdx_147 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_134 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_125 = i + 0; + _offset_262 = _sigIdx_147 + ctx->field->toInt(_v_125)*_sigSizes_134[1] + 9*_sigSizes_134[2]; + ctx->getSignal(ctx->cIdx, _offset_262, _sigValue_126); + ctx->field->add(_tmp_107,_tmp_106,_sigValue_126); + _sigIdx_148 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_135 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_126 = i + 0; + _offset_264 = _sigIdx_148 + ctx->field->toInt(_v_126)*_sigSizes_135[1] + 8*_sigSizes_135[2]; + ctx->getSignal(ctx->cIdx, _offset_264, _sigValue_127); + ctx->field->sub(_tmp_108,_tmp_107,_sigValue_127); + _sigIdx_149 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_136 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_127 = i + 0; + _offset_266 = _sigIdx_149 + ctx->field->toInt(_v_127)*_sigSizes_136[1] + 7*_sigSizes_136[2]; + ctx->getSignal(ctx->cIdx, _offset_266, _sigValue_128); + ctx->field->sub(_tmp_109,_tmp_108,_sigValue_128); + _sigIdx_150 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_137 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_128 = i + 0; + _offset_268 = _sigIdx_150 + ctx->field->toInt(_v_128)*_sigSizes_137[1] + 6*_sigSizes_137[2]; + ctx->getSignal(ctx->cIdx, _offset_268, _sigValue_129); + ctx->field->add(_tmp_110,_tmp_109,_sigValue_129); + _sigIdx_151 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_138 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_129 = i + 0; + _offset_270 = _sigIdx_151 + ctx->field->toInt(_v_129)*_sigSizes_138[1] + 5*_sigSizes_138[2]; + ctx->getSignal(ctx->cIdx, _offset_270, _sigValue_130); + ctx->field->add(_tmp_111,_tmp_110,_sigValue_130); + _sigIdx_152 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_139 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_130 = i + 0; + _offset_272 = _sigIdx_152 + ctx->field->toInt(_v_130)*_sigSizes_139[1] + 4*_sigSizes_139[2]; + ctx->getSignal(ctx->cIdx, _offset_272, _sigValue_131); + ctx->field->sub(_tmp_112,_tmp_111,_sigValue_131); + _sigIdx_153 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_140 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_131 = i + 0; + _offset_274 = _sigIdx_153 + ctx->field->toInt(_v_131)*_sigSizes_140[1] + 3*_sigSizes_140[2]; + ctx->getSignal(ctx->cIdx, _offset_274, _sigValue_132); + ctx->field->add(_tmp_113,_tmp_112,_sigValue_132); + _sigIdx_154 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_141 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_132 = i + 0; + _offset_276 = _sigIdx_154 + ctx->field->toInt(_v_132)*_sigSizes_141[1] + 2*_sigSizes_141[2]; + ctx->getSignal(ctx->cIdx, _offset_276, _sigValue_133); + ctx->field->sub(_tmp_114,_tmp_113,_sigValue_133); + _sigIdx_155 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_142 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_133 = i + 0; + _offset_278 = _sigIdx_155 + ctx->field->toInt(_v_133)*_sigSizes_142[1] + 1*_sigSizes_142[2]; + ctx->getSignal(ctx->cIdx, _offset_278, _sigValue_134); + ctx->field->sub(_tmp_115,_tmp_114,_sigValue_134); + _sigIdx_156 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_143 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_134 = i + 0; + _offset_280 = _sigIdx_156 + ctx->field->toInt(_v_134)*_sigSizes_143[1] + 0*_sigSizes_143[2]; + ctx->getSignal(ctx->cIdx, _offset_280, _sigValue_135); + ctx->field->add(_tmp_116,_tmp_115,_sigValue_135); + _sigIdx_157 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); + ctx->getSignal(ctx->cIdx, _sigIdx_157, _sigValue_136); + ctx->field->mul(_tmp_117,_tmp_116,_sigValue_136); + _sigIdx_158 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _sigSizes_144 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _v_135 = i + 0; + _offset_282 = _sigIdx_158 + ctx->field->toInt(_v_135)*_sigSizes_144[1]; + ctx->setSignal(ctx->cIdx, _offset_282, _tmp_117); + + /* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */ + _sigIdx_159 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_145 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_136 = i + 0; + _offset_284 = _sigIdx_159 + ctx->field->toInt(_v_136)*_sigSizes_145[1] + 14*_sigSizes_145[2]; + ctx->getSignal(ctx->cIdx, _offset_284, _sigValue_137); + _sigIdx_160 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_146 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_137 = i + 0; + _offset_286 = _sigIdx_160 + ctx->field->toInt(_v_137)*_sigSizes_146[1] + 12*_sigSizes_146[2]; + ctx->getSignal(ctx->cIdx, _offset_286, _sigValue_138); + ctx->field->sub(_tmp_118,_sigValue_137,_sigValue_138); + _sigIdx_161 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_147 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_138 = i + 0; + _offset_288 = _sigIdx_161 + ctx->field->toInt(_v_138)*_sigSizes_147[1] + 10*_sigSizes_147[2]; + ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_139); + ctx->field->sub(_tmp_119,_tmp_118,_sigValue_139); + _sigIdx_162 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_148 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_139 = i + 0; + _offset_290 = _sigIdx_162 + ctx->field->toInt(_v_139)*_sigSizes_148[1] + 8*_sigSizes_148[2]; + ctx->getSignal(ctx->cIdx, _offset_290, _sigValue_140); + ctx->field->add(_tmp_120,_tmp_119,_sigValue_140); + _sigIdx_163 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_149 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_140 = i + 0; + _offset_292 = _sigIdx_163 + ctx->field->toInt(_v_140)*_sigSizes_149[1] + 6*_sigSizes_149[2]; + ctx->getSignal(ctx->cIdx, _offset_292, _sigValue_141); + ctx->field->sub(_tmp_121,_tmp_120,_sigValue_141); + _sigIdx_164 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_150 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_141 = i + 0; + _offset_294 = _sigIdx_164 + ctx->field->toInt(_v_141)*_sigSizes_150[1] + 4*_sigSizes_150[2]; + ctx->getSignal(ctx->cIdx, _offset_294, _sigValue_142); + ctx->field->add(_tmp_122,_tmp_121,_sigValue_142); + _sigIdx_165 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_151 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_142 = i + 0; + _offset_296 = _sigIdx_165 + ctx->field->toInt(_v_142)*_sigSizes_151[1] + 2*_sigSizes_151[2]; + ctx->getSignal(ctx->cIdx, _offset_296, _sigValue_143); + ctx->field->add(_tmp_123,_tmp_122,_sigValue_143); + _sigIdx_166 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_152 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_143 = i + 0; + _offset_298 = _sigIdx_166 + ctx->field->toInt(_v_143)*_sigSizes_152[1] + 0*_sigSizes_152[2]; + ctx->getSignal(ctx->cIdx, _offset_298, _sigValue_144); + ctx->field->sub(_tmp_124,_tmp_123,_sigValue_144); + _sigIdx_167 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->getSignal(ctx->cIdx, _sigIdx_167, _sigValue_145); + ctx->field->mul(_tmp_125,_tmp_124,_sigValue_145); + _sigIdx_168 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _sigSizes_153 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _v_144 = i + 0; + _offset_300 = _sigIdx_168 + ctx->field->toInt(_v_144)*_sigSizes_153[1]; + ctx->setSignal(ctx->cIdx, _offset_300, _tmp_125); + + /* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */ + _sigIdx_169 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_154 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_145 = i + 0; + _offset_302 = _sigIdx_169 + ctx->field->toInt(_v_145)*_sigSizes_154[1] + 13*_sigSizes_154[2]; + ctx->getSignal(ctx->cIdx, _offset_302, _sigValue_146); + _sigIdx_170 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_155 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_146 = i + 0; + _offset_304 = _sigIdx_170 + ctx->field->toInt(_v_146)*_sigSizes_155[1] + 12*_sigSizes_155[2]; + ctx->getSignal(ctx->cIdx, _offset_304, _sigValue_147); + ctx->field->sub(_tmp_126,_sigValue_146,_sigValue_147); + _sigIdx_171 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_156 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_147 = i + 0; + _offset_306 = _sigIdx_171 + ctx->field->toInt(_v_147)*_sigSizes_156[1] + 9*_sigSizes_156[2]; + ctx->getSignal(ctx->cIdx, _offset_306, _sigValue_148); + ctx->field->sub(_tmp_127,_tmp_126,_sigValue_148); + _sigIdx_172 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_157 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_148 = i + 0; + _offset_308 = _sigIdx_172 + ctx->field->toInt(_v_148)*_sigSizes_157[1] + 8*_sigSizes_157[2]; + ctx->getSignal(ctx->cIdx, _offset_308, _sigValue_149); + ctx->field->add(_tmp_128,_tmp_127,_sigValue_149); + _sigIdx_173 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_158 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_149 = i + 0; + _offset_310 = _sigIdx_173 + ctx->field->toInt(_v_149)*_sigSizes_158[1] + 5*_sigSizes_158[2]; + ctx->getSignal(ctx->cIdx, _offset_310, _sigValue_150); + ctx->field->sub(_tmp_129,_tmp_128,_sigValue_150); + _sigIdx_174 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_159 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_150 = i + 0; + _offset_312 = _sigIdx_174 + ctx->field->toInt(_v_150)*_sigSizes_159[1] + 4*_sigSizes_159[2]; + ctx->getSignal(ctx->cIdx, _offset_312, _sigValue_151); + ctx->field->add(_tmp_130,_tmp_129,_sigValue_151); + _sigIdx_175 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_160 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_151 = i + 0; + _offset_314 = _sigIdx_175 + ctx->field->toInt(_v_151)*_sigSizes_160[1] + 1*_sigSizes_160[2]; + ctx->getSignal(ctx->cIdx, _offset_314, _sigValue_152); + ctx->field->add(_tmp_131,_tmp_130,_sigValue_152); + _sigIdx_176 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_161 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_152 = i + 0; + _offset_316 = _sigIdx_176 + ctx->field->toInt(_v_152)*_sigSizes_161[1] + 0*_sigSizes_161[2]; + ctx->getSignal(ctx->cIdx, _offset_316, _sigValue_153); + ctx->field->sub(_tmp_132,_tmp_131,_sigValue_153); + _sigIdx_177 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); + ctx->getSignal(ctx->cIdx, _sigIdx_177, _sigValue_154); + ctx->field->mul(_tmp_133,_tmp_132,_sigValue_154); + _sigIdx_178 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _sigSizes_162 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _v_153 = i + 0; + _offset_318 = _sigIdx_178 + ctx->field->toInt(_v_153)*_sigSizes_162[1]; + ctx->setSignal(ctx->cIdx, _offset_318, _tmp_133); + + /* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ + _sigIdx_179 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_163 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_154 = i + 0; + _offset_320 = _sigIdx_179 + ctx->field->toInt(_v_154)*_sigSizes_163[1] + 11*_sigSizes_163[2]; + ctx->getSignal(ctx->cIdx, _offset_320, _sigValue_155); + _sigIdx_180 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_164 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_155 = i + 0; + _offset_322 = _sigIdx_180 + ctx->field->toInt(_v_155)*_sigSizes_164[1] + 10*_sigSizes_164[2]; + ctx->getSignal(ctx->cIdx, _offset_322, _sigValue_156); + ctx->field->sub(_tmp_134,_sigValue_155,_sigValue_156); + _sigIdx_181 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_165 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_156 = i + 0; + _offset_324 = _sigIdx_181 + ctx->field->toInt(_v_156)*_sigSizes_165[1] + 9*_sigSizes_165[2]; + ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_157); + ctx->field->sub(_tmp_135,_tmp_134,_sigValue_157); + _sigIdx_182 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_166 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_157 = i + 0; + _offset_326 = _sigIdx_182 + ctx->field->toInt(_v_157)*_sigSizes_166[1] + 8*_sigSizes_166[2]; + ctx->getSignal(ctx->cIdx, _offset_326, _sigValue_158); + ctx->field->add(_tmp_136,_tmp_135,_sigValue_158); + _sigIdx_183 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_167 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_158 = i + 0; + _offset_328 = _sigIdx_183 + ctx->field->toInt(_v_158)*_sigSizes_167[1] + 3*_sigSizes_167[2]; + ctx->getSignal(ctx->cIdx, _offset_328, _sigValue_159); + ctx->field->sub(_tmp_137,_tmp_136,_sigValue_159); + _sigIdx_184 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_168 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_159 = i + 0; + _offset_330 = _sigIdx_184 + ctx->field->toInt(_v_159)*_sigSizes_168[1] + 2*_sigSizes_168[2]; + ctx->getSignal(ctx->cIdx, _offset_330, _sigValue_160); + ctx->field->add(_tmp_138,_tmp_137,_sigValue_160); + _sigIdx_185 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_169 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_160 = i + 0; + _offset_332 = _sigIdx_185 + ctx->field->toInt(_v_160)*_sigSizes_169[1] + 1*_sigSizes_169[2]; + ctx->getSignal(ctx->cIdx, _offset_332, _sigValue_161); + ctx->field->add(_tmp_139,_tmp_138,_sigValue_161); + _sigIdx_186 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_170 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_161 = i + 0; + _offset_334 = _sigIdx_186 + ctx->field->toInt(_v_161)*_sigSizes_170[1] + 0*_sigSizes_170[2]; + ctx->getSignal(ctx->cIdx, _offset_334, _sigValue_162); + ctx->field->sub(_tmp_140,_tmp_139,_sigValue_162); + _sigIdx_187 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_187, _sigValue_163); + ctx->field->mul(_tmp_141,_tmp_140,_sigValue_163); + _sigIdx_188 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _sigSizes_171 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _v_162 = i + 0; + _offset_336 = _sigIdx_188 + ctx->field->toInt(_v_162)*_sigSizes_171[1]; + ctx->setSignal(ctx->cIdx, _offset_336, _tmp_141); + + /* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */ + _sigIdx_189 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_172 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_163 = i + 0; + _offset_338 = _sigIdx_189 + ctx->field->toInt(_v_163)*_sigSizes_172[1] + 12*_sigSizes_172[2]; + ctx->getSignal(ctx->cIdx, _offset_338, _sigValue_164); + _sigIdx_190 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_173 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_164 = i + 0; + _offset_340 = _sigIdx_190 + ctx->field->toInt(_v_164)*_sigSizes_173[1] + 8*_sigSizes_173[2]; + ctx->getSignal(ctx->cIdx, _offset_340, _sigValue_165); + ctx->field->sub(_tmp_142,_sigValue_164,_sigValue_165); + _sigIdx_191 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_174 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_165 = i + 0; + _offset_342 = _sigIdx_191 + ctx->field->toInt(_v_165)*_sigSizes_174[1] + 4*_sigSizes_174[2]; + ctx->getSignal(ctx->cIdx, _offset_342, _sigValue_166); + ctx->field->sub(_tmp_143,_tmp_142,_sigValue_166); + _sigIdx_192 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_175 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_166 = i + 0; + _offset_344 = _sigIdx_192 + ctx->field->toInt(_v_166)*_sigSizes_175[1] + 0*_sigSizes_175[2]; + ctx->getSignal(ctx->cIdx, _offset_344, _sigValue_167); + ctx->field->add(_tmp_144,_tmp_143,_sigValue_167); + _sigIdx_193 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_176 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_345 = _sigIdx_193 + 2*_sigSizes_176[1]; + ctx->getSignal(ctx->cIdx, _offset_345, _sigValue_168); + ctx->field->mul(_tmp_145,_tmp_144,_sigValue_168); + _sigIdx_194 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _sigSizes_177 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _v_167 = i + 0; + _offset_347 = _sigIdx_194 + ctx->field->toInt(_v_167)*_sigSizes_177[1]; + ctx->setSignal(ctx->cIdx, _offset_347, _tmp_145); + + /* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */ + _sigIdx_195 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_178 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_168 = i + 0; + _offset_349 = _sigIdx_195 + ctx->field->toInt(_v_168)*_sigSizes_178[1] + 10*_sigSizes_178[2]; + ctx->getSignal(ctx->cIdx, _offset_349, _sigValue_169); + _sigIdx_196 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_179 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_169 = i + 0; + _offset_351 = _sigIdx_196 + ctx->field->toInt(_v_169)*_sigSizes_179[1] + 8*_sigSizes_179[2]; + ctx->getSignal(ctx->cIdx, _offset_351, _sigValue_170); + ctx->field->sub(_tmp_146,_sigValue_169,_sigValue_170); + _sigIdx_197 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_180 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_170 = i + 0; + _offset_353 = _sigIdx_197 + ctx->field->toInt(_v_170)*_sigSizes_180[1] + 2*_sigSizes_180[2]; + ctx->getSignal(ctx->cIdx, _offset_353, _sigValue_171); + ctx->field->sub(_tmp_147,_tmp_146,_sigValue_171); + _sigIdx_198 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_181 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_171 = i + 0; + _offset_355 = _sigIdx_198 + ctx->field->toInt(_v_171)*_sigSizes_181[1] + 0*_sigSizes_181[2]; + ctx->getSignal(ctx->cIdx, _offset_355, _sigValue_172); + ctx->field->add(_tmp_148,_tmp_147,_sigValue_172); + _sigIdx_199 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_182 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_356 = _sigIdx_199 + 1*_sigSizes_182[1]; + ctx->getSignal(ctx->cIdx, _offset_356, _sigValue_173); + ctx->field->mul(_tmp_149,_tmp_148,_sigValue_173); + _sigIdx_200 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _sigSizes_183 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _v_172 = i + 0; + _offset_358 = _sigIdx_200 + ctx->field->toInt(_v_172)*_sigSizes_183[1]; + ctx->setSignal(ctx->cIdx, _offset_358, _tmp_149); + + /* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */ + _sigIdx_201 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_184 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_173 = i + 0; + _offset_360 = _sigIdx_201 + ctx->field->toInt(_v_173)*_sigSizes_184[1] + 9*_sigSizes_184[2]; + ctx->getSignal(ctx->cIdx, _offset_360, _sigValue_174); + _sigIdx_202 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_185 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_174 = i + 0; + _offset_362 = _sigIdx_202 + ctx->field->toInt(_v_174)*_sigSizes_185[1] + 8*_sigSizes_185[2]; + ctx->getSignal(ctx->cIdx, _offset_362, _sigValue_175); + ctx->field->sub(_tmp_150,_sigValue_174,_sigValue_175); + _sigIdx_203 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_186 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_175 = i + 0; + _offset_364 = _sigIdx_203 + ctx->field->toInt(_v_175)*_sigSizes_186[1] + 1*_sigSizes_186[2]; + ctx->getSignal(ctx->cIdx, _offset_364, _sigValue_176); + ctx->field->sub(_tmp_151,_tmp_150,_sigValue_176); + _sigIdx_204 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_187 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_176 = i + 0; + _offset_366 = _sigIdx_204 + ctx->field->toInt(_v_176)*_sigSizes_187[1] + 0*_sigSizes_187[2]; + ctx->getSignal(ctx->cIdx, _offset_366, _sigValue_177); + ctx->field->add(_tmp_152,_tmp_151,_sigValue_177); + _sigIdx_205 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_188 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_367 = _sigIdx_205 + 0*_sigSizes_188[1]; + ctx->getSignal(ctx->cIdx, _offset_367, _sigValue_178); + ctx->field->mul(_tmp_153,_tmp_152,_sigValue_178); + _sigIdx_206 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _sigSizes_189 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _v_177 = i + 0; + _offset_369 = _sigIdx_206 + ctx->field->toInt(_v_177)*_sigSizes_189[1]; + ctx->setSignal(ctx->cIdx, _offset_369, _tmp_153); + + /* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */ + _sigIdx_207 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_190 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_178 = i + 0; + _offset_371 = _sigIdx_207 + ctx->field->toInt(_v_178)*_sigSizes_190[1] + 8*_sigSizes_190[2]; + ctx->getSignal(ctx->cIdx, _offset_371, _sigValue_179); + _sigIdx_208 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_191 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_179 = i + 0; + _offset_373 = _sigIdx_208 + ctx->field->toInt(_v_179)*_sigSizes_191[1] + 0*_sigSizes_191[2]; + ctx->getSignal(ctx->cIdx, _offset_373, _sigValue_180); + ctx->field->sub(_tmp_154,_sigValue_179,_sigValue_180); + _sigIdx_209 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _sigSizes_192 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _v_180 = i + 0; + _offset_375 = _sigIdx_209 + ctx->field->toInt(_v_180)*_sigSizes_192[1]; + ctx->setSignal(ctx->cIdx, _offset_375, _tmp_154); + + /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */ + _sigIdx_210 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_193 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_181 = i + 0; + _offset_377 = _sigIdx_210 + ctx->field->toInt(_v_181)*_sigSizes_193[1] + 7*_sigSizes_193[2]; + ctx->getSignal(ctx->cIdx, _offset_377, _sigValue_181); + _sigIdx_211 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_194 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_182 = i + 0; + _offset_379 = _sigIdx_211 + ctx->field->toInt(_v_182)*_sigSizes_194[1] + 6*_sigSizes_194[2]; + ctx->getSignal(ctx->cIdx, _offset_379, _sigValue_182); + ctx->field->sub(_tmp_155,_sigValue_181,_sigValue_182); + _sigIdx_212 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_195 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_183 = i + 0; + _offset_381 = _sigIdx_212 + ctx->field->toInt(_v_183)*_sigSizes_195[1] + 5*_sigSizes_195[2]; + ctx->getSignal(ctx->cIdx, _offset_381, _sigValue_183); + ctx->field->sub(_tmp_156,_tmp_155,_sigValue_183); + _sigIdx_213 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_196 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_184 = i + 0; + _offset_383 = _sigIdx_213 + ctx->field->toInt(_v_184)*_sigSizes_196[1] + 4*_sigSizes_196[2]; + ctx->getSignal(ctx->cIdx, _offset_383, _sigValue_184); + ctx->field->add(_tmp_157,_tmp_156,_sigValue_184); + _sigIdx_214 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_197 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_185 = i + 0; + _offset_385 = _sigIdx_214 + ctx->field->toInt(_v_185)*_sigSizes_197[1] + 3*_sigSizes_197[2]; + ctx->getSignal(ctx->cIdx, _offset_385, _sigValue_185); + ctx->field->sub(_tmp_158,_tmp_157,_sigValue_185); + _sigIdx_215 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_198 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_186 = i + 0; + _offset_387 = _sigIdx_215 + ctx->field->toInt(_v_186)*_sigSizes_198[1] + 2*_sigSizes_198[2]; + ctx->getSignal(ctx->cIdx, _offset_387, _sigValue_186); + ctx->field->add(_tmp_159,_tmp_158,_sigValue_186); + _sigIdx_216 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_199 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_187 = i + 0; + _offset_389 = _sigIdx_216 + ctx->field->toInt(_v_187)*_sigSizes_199[1] + 1*_sigSizes_199[2]; + ctx->getSignal(ctx->cIdx, _offset_389, _sigValue_187); + ctx->field->add(_tmp_160,_tmp_159,_sigValue_187); + _sigIdx_217 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_200 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_188 = i + 0; + _offset_391 = _sigIdx_217 + ctx->field->toInt(_v_188)*_sigSizes_200[1] + 0*_sigSizes_200[2]; + ctx->getSignal(ctx->cIdx, _offset_391, _sigValue_188); + ctx->field->sub(_tmp_161,_tmp_160,_sigValue_188); + _sigIdx_218 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); + ctx->getSignal(ctx->cIdx, _sigIdx_218, _sigValue_189); + ctx->field->mul(_tmp_162,_tmp_161,_sigValue_189); + _sigIdx_219 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_201 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _v_189 = i + 0; + _offset_393 = _sigIdx_219 + ctx->field->toInt(_v_189)*_sigSizes_201[1]; + ctx->setSignal(ctx->cIdx, _offset_393, _tmp_162); + + /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */ + _sigIdx_220 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_202 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_190 = i + 0; + _offset_395 = _sigIdx_220 + ctx->field->toInt(_v_190)*_sigSizes_202[1] + 6*_sigSizes_202[2]; + ctx->getSignal(ctx->cIdx, _offset_395, _sigValue_190); + _sigIdx_221 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_203 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_191 = i + 0; + _offset_397 = _sigIdx_221 + ctx->field->toInt(_v_191)*_sigSizes_203[1] + 4*_sigSizes_203[2]; + ctx->getSignal(ctx->cIdx, _offset_397, _sigValue_191); + ctx->field->sub(_tmp_163,_sigValue_190,_sigValue_191); + _sigIdx_222 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_204 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_192 = i + 0; + _offset_399 = _sigIdx_222 + ctx->field->toInt(_v_192)*_sigSizes_204[1] + 2*_sigSizes_204[2]; + ctx->getSignal(ctx->cIdx, _offset_399, _sigValue_192); + ctx->field->sub(_tmp_164,_tmp_163,_sigValue_192); + _sigIdx_223 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_205 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_193 = i + 0; + _offset_401 = _sigIdx_223 + ctx->field->toInt(_v_193)*_sigSizes_205[1] + 0*_sigSizes_205[2]; + ctx->getSignal(ctx->cIdx, _offset_401, _sigValue_193); + ctx->field->add(_tmp_165,_tmp_164,_sigValue_193); + _sigIdx_224 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); + ctx->getSignal(ctx->cIdx, _sigIdx_224, _sigValue_194); + ctx->field->mul(_tmp_166,_tmp_165,_sigValue_194); + _sigIdx_225 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_206 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _v_194 = i + 0; + _offset_403 = _sigIdx_225 + ctx->field->toInt(_v_194)*_sigSizes_206[1]; + ctx->setSignal(ctx->cIdx, _offset_403, _tmp_166); + + /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */ + _sigIdx_226 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_207 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_195 = i + 0; + _offset_405 = _sigIdx_226 + ctx->field->toInt(_v_195)*_sigSizes_207[1] + 5*_sigSizes_207[2]; + ctx->getSignal(ctx->cIdx, _offset_405, _sigValue_195); + _sigIdx_227 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_208 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_196 = i + 0; + _offset_407 = _sigIdx_227 + ctx->field->toInt(_v_196)*_sigSizes_208[1] + 4*_sigSizes_208[2]; + ctx->getSignal(ctx->cIdx, _offset_407, _sigValue_196); + ctx->field->sub(_tmp_167,_sigValue_195,_sigValue_196); + _sigIdx_228 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_209 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_197 = i + 0; + _offset_409 = _sigIdx_228 + ctx->field->toInt(_v_197)*_sigSizes_209[1] + 1*_sigSizes_209[2]; + ctx->getSignal(ctx->cIdx, _offset_409, _sigValue_197); + ctx->field->sub(_tmp_168,_tmp_167,_sigValue_197); + _sigIdx_229 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_210 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_198 = i + 0; + _offset_411 = _sigIdx_229 + ctx->field->toInt(_v_198)*_sigSizes_210[1] + 0*_sigSizes_210[2]; + ctx->getSignal(ctx->cIdx, _offset_411, _sigValue_198); + ctx->field->add(_tmp_169,_tmp_168,_sigValue_198); + _sigIdx_230 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); + ctx->getSignal(ctx->cIdx, _sigIdx_230, _sigValue_199); + ctx->field->mul(_tmp_170,_tmp_169,_sigValue_199); + _sigIdx_231 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_211 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _v_199 = i + 0; + _offset_413 = _sigIdx_231 + ctx->field->toInt(_v_199)*_sigSizes_211[1]; + ctx->setSignal(ctx->cIdx, _offset_413, _tmp_170); + + /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ + _sigIdx_232 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_212 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_200 = i + 0; + _offset_415 = _sigIdx_232 + ctx->field->toInt(_v_200)*_sigSizes_212[1] + 3*_sigSizes_212[2]; + ctx->getSignal(ctx->cIdx, _offset_415, _sigValue_200); + _sigIdx_233 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_213 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_201 = i + 0; + _offset_417 = _sigIdx_233 + ctx->field->toInt(_v_201)*_sigSizes_213[1] + 2*_sigSizes_213[2]; + ctx->getSignal(ctx->cIdx, _offset_417, _sigValue_201); + ctx->field->sub(_tmp_171,_sigValue_200,_sigValue_201); + _sigIdx_234 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_214 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_202 = i + 0; + _offset_419 = _sigIdx_234 + ctx->field->toInt(_v_202)*_sigSizes_214[1] + 1*_sigSizes_214[2]; + ctx->getSignal(ctx->cIdx, _offset_419, _sigValue_202); + ctx->field->sub(_tmp_172,_tmp_171,_sigValue_202); + _sigIdx_235 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_215 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_203 = i + 0; + _offset_421 = _sigIdx_235 + ctx->field->toInt(_v_203)*_sigSizes_215[1] + 0*_sigSizes_215[2]; + ctx->getSignal(ctx->cIdx, _offset_421, _sigValue_203); + ctx->field->add(_tmp_173,_tmp_172,_sigValue_203); + _sigIdx_236 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_236, _sigValue_204); + ctx->field->mul(_tmp_174,_tmp_173,_sigValue_204); + _sigIdx_237 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_216 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _v_204 = i + 0; + _offset_423 = _sigIdx_237 + ctx->field->toInt(_v_204)*_sigSizes_216[1]; + ctx->setSignal(ctx->cIdx, _offset_423, _tmp_174); + + /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */ + _sigIdx_238 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_217 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_205 = i + 0; + _offset_425 = _sigIdx_238 + ctx->field->toInt(_v_205)*_sigSizes_217[1] + 4*_sigSizes_217[2]; + ctx->getSignal(ctx->cIdx, _offset_425, _sigValue_205); + _sigIdx_239 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_218 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_206 = i + 0; + _offset_427 = _sigIdx_239 + ctx->field->toInt(_v_206)*_sigSizes_218[1] + 0*_sigSizes_218[2]; + ctx->getSignal(ctx->cIdx, _offset_427, _sigValue_206); + ctx->field->sub(_tmp_175,_sigValue_205,_sigValue_206); + _sigIdx_240 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_219 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_428 = _sigIdx_240 + 2*_sigSizes_219[1]; + ctx->getSignal(ctx->cIdx, _offset_428, _sigValue_207); + ctx->field->mul(_tmp_176,_tmp_175,_sigValue_207); + _sigIdx_241 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_220 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _v_207 = i + 0; + _offset_430 = _sigIdx_241 + ctx->field->toInt(_v_207)*_sigSizes_220[1]; + ctx->setSignal(ctx->cIdx, _offset_430, _tmp_176); + + /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ + _sigIdx_242 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_221 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_208 = i + 0; + _offset_432 = _sigIdx_242 + ctx->field->toInt(_v_208)*_sigSizes_221[1] + 2*_sigSizes_221[2]; + ctx->getSignal(ctx->cIdx, _offset_432, _sigValue_208); + _sigIdx_243 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_222 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_209 = i + 0; + _offset_434 = _sigIdx_243 + ctx->field->toInt(_v_209)*_sigSizes_222[1] + 0*_sigSizes_222[2]; + ctx->getSignal(ctx->cIdx, _offset_434, _sigValue_209); + ctx->field->sub(_tmp_177,_sigValue_208,_sigValue_209); + _sigIdx_244 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_223 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_435 = _sigIdx_244 + 1*_sigSizes_223[1]; + ctx->getSignal(ctx->cIdx, _offset_435, _sigValue_210); + ctx->field->mul(_tmp_178,_tmp_177,_sigValue_210); + _sigIdx_245 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_224 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _v_210 = i + 0; + _offset_437 = _sigIdx_245 + ctx->field->toInt(_v_210)*_sigSizes_224[1]; + ctx->setSignal(ctx->cIdx, _offset_437, _tmp_178); + + /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ + _sigIdx_246 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_225 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_211 = i + 0; + _offset_439 = _sigIdx_246 + ctx->field->toInt(_v_211)*_sigSizes_225[1] + 1*_sigSizes_225[2]; + ctx->getSignal(ctx->cIdx, _offset_439, _sigValue_211); + _sigIdx_247 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_226 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_212 = i + 0; + _offset_441 = _sigIdx_247 + ctx->field->toInt(_v_212)*_sigSizes_226[1] + 0*_sigSizes_226[2]; + ctx->getSignal(ctx->cIdx, _offset_441, _sigValue_212); + ctx->field->sub(_tmp_179,_sigValue_211,_sigValue_212); + _sigIdx_248 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_227 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_442 = _sigIdx_248 + 0*_sigSizes_227[1]; + ctx->getSignal(ctx->cIdx, _offset_442, _sigValue_213); + ctx->field->mul(_tmp_180,_tmp_179,_sigValue_213); + _sigIdx_249 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_228 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _v_213 = i + 0; + _offset_444 = _sigIdx_249 + ctx->field->toInt(_v_213)*_sigSizes_228[1]; + ctx->setSignal(ctx->cIdx, _offset_444, _tmp_180); + + /* a[i] <== ( c[i][ 0] ) */ + _sigIdx_250 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_229 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_214 = i + 0; + _offset_446 = _sigIdx_250 + ctx->field->toInt(_v_214)*_sigSizes_229[1] + 0*_sigSizes_229[2]; + ctx->getSignal(ctx->cIdx, _offset_446, _sigValue_214); + _sigIdx_251 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_230 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _v_215 = i + 0; + _offset_448 = _sigIdx_251 + ctx->field->toInt(_v_215)*_sigSizes_230[1]; + ctx->setSignal(ctx->cIdx, _offset_448, _sigValue_214); + + /* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] + + ( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */ + _sigIdx_252 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _sigSizes_231 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); + _v_216 = i + 0; + _offset_450 = _sigIdx_252 + ctx->field->toInt(_v_216)*_sigSizes_231[1]; + ctx->getSignal(ctx->cIdx, _offset_450, _sigValue_215); + _sigIdx_253 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _sigSizes_232 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); + _v_217 = i + 0; + _offset_452 = _sigIdx_253 + ctx->field->toInt(_v_217)*_sigSizes_232[1]; + ctx->getSignal(ctx->cIdx, _offset_452, _sigValue_216); + ctx->field->add(_tmp_181,_sigValue_215,_sigValue_216); + _sigIdx_254 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _sigSizes_233 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); + _v_218 = i + 0; + _offset_454 = _sigIdx_254 + ctx->field->toInt(_v_218)*_sigSizes_233[1]; + ctx->getSignal(ctx->cIdx, _offset_454, _sigValue_217); + ctx->field->add(_tmp_182,_tmp_181,_sigValue_217); + _sigIdx_255 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _sigSizes_234 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); + _v_219 = i + 0; + _offset_456 = _sigIdx_255 + ctx->field->toInt(_v_219)*_sigSizes_234[1]; + ctx->getSignal(ctx->cIdx, _offset_456, _sigValue_218); + ctx->field->add(_tmp_183,_tmp_182,_sigValue_218); + _sigIdx_256 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _sigSizes_235 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); + _v_220 = i + 0; + _offset_458 = _sigIdx_256 + ctx->field->toInt(_v_220)*_sigSizes_235[1]; + ctx->getSignal(ctx->cIdx, _offset_458, _sigValue_219); + ctx->field->add(_tmp_184,_tmp_183,_sigValue_219); + _sigIdx_257 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _sigSizes_236 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); + _v_221 = i + 0; + _offset_460 = _sigIdx_257 + ctx->field->toInt(_v_221)*_sigSizes_236[1]; + ctx->getSignal(ctx->cIdx, _offset_460, _sigValue_220); + ctx->field->add(_tmp_185,_tmp_184,_sigValue_220); + _sigIdx_258 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _sigSizes_237 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); + _v_222 = i + 0; + _offset_462 = _sigIdx_258 + ctx->field->toInt(_v_222)*_sigSizes_237[1]; + ctx->getSignal(ctx->cIdx, _offset_462, _sigValue_221); + ctx->field->add(_tmp_186,_tmp_185,_sigValue_221); + _sigIdx_259 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _sigSizes_238 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); + _v_223 = i + 0; + _offset_464 = _sigIdx_259 + ctx->field->toInt(_v_223)*_sigSizes_238[1]; + ctx->getSignal(ctx->cIdx, _offset_464, _sigValue_222); + ctx->field->add(_tmp_187,_tmp_186,_sigValue_222); + _sigIdx_260 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_239 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_465 = _sigIdx_260 + 3*_sigSizes_239[1]; + ctx->getSignal(ctx->cIdx, _offset_465, _sigValue_223); + ctx->field->mul(_tmp_188,_tmp_187,_sigValue_223); + _sigIdx_261 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_240 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _v_224 = i + 0; + _offset_467 = _sigIdx_261 + ctx->field->toInt(_v_224)*_sigSizes_240[1]; + ctx->getSignal(ctx->cIdx, _offset_467, _sigValue_224); + _sigIdx_262 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_241 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _v_225 = i + 0; + _offset_469 = _sigIdx_262 + ctx->field->toInt(_v_225)*_sigSizes_241[1]; + ctx->getSignal(ctx->cIdx, _offset_469, _sigValue_225); + ctx->field->add(_tmp_189,_sigValue_224,_sigValue_225); + _sigIdx_263 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_242 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _v_226 = i + 0; + _offset_471 = _sigIdx_263 + ctx->field->toInt(_v_226)*_sigSizes_242[1]; + ctx->getSignal(ctx->cIdx, _offset_471, _sigValue_226); + ctx->field->add(_tmp_190,_tmp_189,_sigValue_226); + _sigIdx_264 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_243 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _v_227 = i + 0; + _offset_473 = _sigIdx_264 + ctx->field->toInt(_v_227)*_sigSizes_243[1]; + ctx->getSignal(ctx->cIdx, _offset_473, _sigValue_227); + ctx->field->add(_tmp_191,_tmp_190,_sigValue_227); + _sigIdx_265 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_244 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _v_228 = i + 0; + _offset_475 = _sigIdx_265 + ctx->field->toInt(_v_228)*_sigSizes_244[1]; + ctx->getSignal(ctx->cIdx, _offset_475, _sigValue_228); + ctx->field->add(_tmp_192,_tmp_191,_sigValue_228); + _sigIdx_266 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_245 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _v_229 = i + 0; + _offset_477 = _sigIdx_266 + ctx->field->toInt(_v_229)*_sigSizes_245[1]; + ctx->getSignal(ctx->cIdx, _offset_477, _sigValue_229); + ctx->field->add(_tmp_193,_tmp_192,_sigValue_229); + _sigIdx_267 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_246 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _v_230 = i + 0; + _offset_479 = _sigIdx_267 + ctx->field->toInt(_v_230)*_sigSizes_246[1]; + ctx->getSignal(ctx->cIdx, _offset_479, _sigValue_230); + ctx->field->add(_tmp_194,_tmp_193,_sigValue_230); + _sigIdx_268 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_247 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _v_231 = i + 0; + _offset_481 = _sigIdx_268 + ctx->field->toInt(_v_231)*_sigSizes_247[1]; + ctx->getSignal(ctx->cIdx, _offset_481, _sigValue_231); + ctx->field->add(_tmp_195,_tmp_194,_sigValue_231); + ctx->field->add(_tmp_196,_tmp_188,_tmp_195); + _sigIdx_269 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_248 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_232 = i + 0; + _offset_483 = _sigIdx_269 + ctx->field->toInt(_v_232)*_sigSizes_248[1]; + ctx->setSignal(ctx->cIdx, _offset_483, _tmp_196); + _v_233 = i + 0; + ctx->field->add(_tmp_197, _v_233, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_197, 1); + _v_234 = i + 0; + ctx->field->lt(_tmp_198,_v_234,_const); + _cond = ctx->field->isTrue(_tmp_198); + } + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_sigValue_24, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_sigValue_25, 1); + ctx->freeBigInts(_sigValue_26, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_27, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_sigValue_28, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_29, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_sigValue_30, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_31, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_32, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_sigValue_33, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_sigValue_34, 1); + ctx->freeBigInts(_sigValue_35, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_sigValue_36, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_sigValue_37, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_sigValue_38, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(_sigValue_39, 1); + ctx->freeBigInts(_tmp_33, 1); + ctx->freeBigInts(_sigValue_40, 1); + ctx->freeBigInts(_tmp_34, 1); + ctx->freeBigInts(_sigValue_41, 1); + ctx->freeBigInts(_tmp_35, 1); + ctx->freeBigInts(_sigValue_42, 1); + ctx->freeBigInts(_tmp_36, 1); + ctx->freeBigInts(_sigValue_43, 1); + ctx->freeBigInts(_sigValue_44, 1); + ctx->freeBigInts(_tmp_37, 1); + ctx->freeBigInts(_sigValue_45, 1); + ctx->freeBigInts(_tmp_38, 1); + ctx->freeBigInts(_sigValue_46, 1); + ctx->freeBigInts(_tmp_39, 1); + ctx->freeBigInts(_sigValue_47, 1); + ctx->freeBigInts(_tmp_40, 1); + ctx->freeBigInts(_sigValue_48, 1); + ctx->freeBigInts(_tmp_41, 1); + ctx->freeBigInts(_sigValue_49, 1); + ctx->freeBigInts(_tmp_42, 1); + ctx->freeBigInts(_sigValue_50, 1); + ctx->freeBigInts(_tmp_43, 1); + ctx->freeBigInts(_sigValue_51, 1); + ctx->freeBigInts(_tmp_44, 1); + ctx->freeBigInts(_sigValue_52, 1); + ctx->freeBigInts(_sigValue_53, 1); + ctx->freeBigInts(_tmp_45, 1); + ctx->freeBigInts(_sigValue_54, 1); + ctx->freeBigInts(_tmp_46, 1); + ctx->freeBigInts(_sigValue_55, 1); + ctx->freeBigInts(_tmp_47, 1); + ctx->freeBigInts(_sigValue_56, 1); + ctx->freeBigInts(_tmp_48, 1); + ctx->freeBigInts(_sigValue_57, 1); + ctx->freeBigInts(_sigValue_58, 1); + ctx->freeBigInts(_tmp_49, 1); + ctx->freeBigInts(_sigValue_59, 1); + ctx->freeBigInts(_tmp_50, 1); + ctx->freeBigInts(_sigValue_60, 1); + ctx->freeBigInts(_tmp_51, 1); + ctx->freeBigInts(_sigValue_61, 1); + ctx->freeBigInts(_tmp_52, 1); + ctx->freeBigInts(_sigValue_62, 1); + ctx->freeBigInts(_sigValue_63, 1); + ctx->freeBigInts(_tmp_53, 1); + ctx->freeBigInts(_sigValue_64, 1); + ctx->freeBigInts(_tmp_54, 1); + ctx->freeBigInts(_sigValue_65, 1); + ctx->freeBigInts(_tmp_55, 1); + ctx->freeBigInts(_sigValue_66, 1); + ctx->freeBigInts(_tmp_56, 1); + ctx->freeBigInts(_sigValue_67, 1); + ctx->freeBigInts(_sigValue_68, 1); + ctx->freeBigInts(_tmp_57, 1); + ctx->freeBigInts(_sigValue_69, 1); + ctx->freeBigInts(_sigValue_70, 1); + ctx->freeBigInts(_tmp_58, 1); + ctx->freeBigInts(_sigValue_71, 1); + ctx->freeBigInts(_tmp_59, 1); + ctx->freeBigInts(_sigValue_72, 1); + ctx->freeBigInts(_tmp_60, 1); + ctx->freeBigInts(_sigValue_73, 1); + ctx->freeBigInts(_tmp_61, 1); + ctx->freeBigInts(_sigValue_74, 1); + ctx->freeBigInts(_tmp_62, 1); + ctx->freeBigInts(_sigValue_75, 1); + ctx->freeBigInts(_tmp_63, 1); + ctx->freeBigInts(_sigValue_76, 1); + ctx->freeBigInts(_tmp_64, 1); + ctx->freeBigInts(_sigValue_77, 1); + ctx->freeBigInts(_tmp_65, 1); + ctx->freeBigInts(_sigValue_78, 1); + ctx->freeBigInts(_sigValue_79, 1); + ctx->freeBigInts(_tmp_66, 1); + ctx->freeBigInts(_sigValue_80, 1); + ctx->freeBigInts(_tmp_67, 1); + ctx->freeBigInts(_sigValue_81, 1); + ctx->freeBigInts(_tmp_68, 1); + ctx->freeBigInts(_sigValue_82, 1); + ctx->freeBigInts(_tmp_69, 1); + ctx->freeBigInts(_sigValue_83, 1); + ctx->freeBigInts(_sigValue_84, 1); + ctx->freeBigInts(_tmp_70, 1); + ctx->freeBigInts(_sigValue_85, 1); + ctx->freeBigInts(_tmp_71, 1); + ctx->freeBigInts(_sigValue_86, 1); + ctx->freeBigInts(_tmp_72, 1); + ctx->freeBigInts(_sigValue_87, 1); + ctx->freeBigInts(_tmp_73, 1); + ctx->freeBigInts(_sigValue_88, 1); + ctx->freeBigInts(_sigValue_89, 1); + ctx->freeBigInts(_tmp_74, 1); + ctx->freeBigInts(_sigValue_90, 1); + ctx->freeBigInts(_tmp_75, 1); + ctx->freeBigInts(_sigValue_91, 1); + ctx->freeBigInts(_tmp_76, 1); + ctx->freeBigInts(_sigValue_92, 1); + ctx->freeBigInts(_tmp_77, 1); + ctx->freeBigInts(_sigValue_93, 1); + ctx->freeBigInts(_sigValue_94, 1); + ctx->freeBigInts(_tmp_78, 1); + ctx->freeBigInts(_sigValue_95, 1); + ctx->freeBigInts(_tmp_79, 1); + ctx->freeBigInts(_sigValue_96, 1); + ctx->freeBigInts(_sigValue_97, 1); + ctx->freeBigInts(_tmp_80, 1); + ctx->freeBigInts(_sigValue_98, 1); + ctx->freeBigInts(_tmp_81, 1); + ctx->freeBigInts(_sigValue_99, 1); + ctx->freeBigInts(_sigValue_100, 1); + ctx->freeBigInts(_tmp_82, 1); + ctx->freeBigInts(_sigValue_101, 1); + ctx->freeBigInts(_tmp_83, 1); + ctx->freeBigInts(_sigValue_102, 1); + ctx->freeBigInts(_sigValue_103, 1); + ctx->freeBigInts(_sigValue_104, 1); + ctx->freeBigInts(_tmp_84, 1); + ctx->freeBigInts(_sigValue_105, 1); + ctx->freeBigInts(_tmp_85, 1); + ctx->freeBigInts(_sigValue_106, 1); + ctx->freeBigInts(_tmp_86, 1); + ctx->freeBigInts(_sigValue_107, 1); + ctx->freeBigInts(_tmp_87, 1); + ctx->freeBigInts(_sigValue_108, 1); + ctx->freeBigInts(_tmp_88, 1); + ctx->freeBigInts(_sigValue_109, 1); + ctx->freeBigInts(_tmp_89, 1); + ctx->freeBigInts(_sigValue_110, 1); + ctx->freeBigInts(_tmp_90, 1); + ctx->freeBigInts(_sigValue_111, 1); + ctx->freeBigInts(_tmp_91, 1); + ctx->freeBigInts(_sigValue_112, 1); + ctx->freeBigInts(_sigValue_113, 1); + ctx->freeBigInts(_tmp_92, 1); + ctx->freeBigInts(_sigValue_114, 1); + ctx->freeBigInts(_tmp_93, 1); + ctx->freeBigInts(_sigValue_115, 1); + ctx->freeBigInts(_tmp_94, 1); + ctx->freeBigInts(_sigValue_116, 1); + ctx->freeBigInts(_tmp_95, 1); + ctx->freeBigInts(_sigValue_117, 1); + ctx->freeBigInts(_tmp_96, 1); + ctx->freeBigInts(_sigValue_118, 1); + ctx->freeBigInts(_tmp_97, 1); + ctx->freeBigInts(_sigValue_119, 1); + ctx->freeBigInts(_tmp_98, 1); + ctx->freeBigInts(_tmp_99, 1); + ctx->freeBigInts(_tmp_101, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_120, 1); + ctx->freeBigInts(_sigValue_121, 1); + ctx->freeBigInts(_tmp_102, 1); + ctx->freeBigInts(_sigValue_122, 1); + ctx->freeBigInts(_tmp_103, 1); + ctx->freeBigInts(_sigValue_123, 1); + ctx->freeBigInts(_tmp_104, 1); + ctx->freeBigInts(_sigValue_124, 1); + ctx->freeBigInts(_tmp_105, 1); + ctx->freeBigInts(_sigValue_125, 1); + ctx->freeBigInts(_tmp_106, 1); + ctx->freeBigInts(_sigValue_126, 1); + ctx->freeBigInts(_tmp_107, 1); + ctx->freeBigInts(_sigValue_127, 1); + ctx->freeBigInts(_tmp_108, 1); + ctx->freeBigInts(_sigValue_128, 1); + ctx->freeBigInts(_tmp_109, 1); + ctx->freeBigInts(_sigValue_129, 1); + ctx->freeBigInts(_tmp_110, 1); + ctx->freeBigInts(_sigValue_130, 1); + ctx->freeBigInts(_tmp_111, 1); + ctx->freeBigInts(_sigValue_131, 1); + ctx->freeBigInts(_tmp_112, 1); + ctx->freeBigInts(_sigValue_132, 1); + ctx->freeBigInts(_tmp_113, 1); + ctx->freeBigInts(_sigValue_133, 1); + ctx->freeBigInts(_tmp_114, 1); + ctx->freeBigInts(_sigValue_134, 1); + ctx->freeBigInts(_tmp_115, 1); + ctx->freeBigInts(_sigValue_135, 1); + ctx->freeBigInts(_tmp_116, 1); + ctx->freeBigInts(_sigValue_136, 1); + ctx->freeBigInts(_tmp_117, 1); + ctx->freeBigInts(_sigValue_137, 1); + ctx->freeBigInts(_sigValue_138, 1); + ctx->freeBigInts(_tmp_118, 1); + ctx->freeBigInts(_sigValue_139, 1); + ctx->freeBigInts(_tmp_119, 1); + ctx->freeBigInts(_sigValue_140, 1); + ctx->freeBigInts(_tmp_120, 1); + ctx->freeBigInts(_sigValue_141, 1); + ctx->freeBigInts(_tmp_121, 1); + ctx->freeBigInts(_sigValue_142, 1); + ctx->freeBigInts(_tmp_122, 1); + ctx->freeBigInts(_sigValue_143, 1); + ctx->freeBigInts(_tmp_123, 1); + ctx->freeBigInts(_sigValue_144, 1); + ctx->freeBigInts(_tmp_124, 1); + ctx->freeBigInts(_sigValue_145, 1); + ctx->freeBigInts(_tmp_125, 1); + ctx->freeBigInts(_sigValue_146, 1); + ctx->freeBigInts(_sigValue_147, 1); + ctx->freeBigInts(_tmp_126, 1); + ctx->freeBigInts(_sigValue_148, 1); + ctx->freeBigInts(_tmp_127, 1); + ctx->freeBigInts(_sigValue_149, 1); + ctx->freeBigInts(_tmp_128, 1); + ctx->freeBigInts(_sigValue_150, 1); + ctx->freeBigInts(_tmp_129, 1); + ctx->freeBigInts(_sigValue_151, 1); + ctx->freeBigInts(_tmp_130, 1); + ctx->freeBigInts(_sigValue_152, 1); + ctx->freeBigInts(_tmp_131, 1); + ctx->freeBigInts(_sigValue_153, 1); + ctx->freeBigInts(_tmp_132, 1); + ctx->freeBigInts(_sigValue_154, 1); + ctx->freeBigInts(_tmp_133, 1); + ctx->freeBigInts(_sigValue_155, 1); + ctx->freeBigInts(_sigValue_156, 1); + ctx->freeBigInts(_tmp_134, 1); + ctx->freeBigInts(_sigValue_157, 1); + ctx->freeBigInts(_tmp_135, 1); + ctx->freeBigInts(_sigValue_158, 1); + ctx->freeBigInts(_tmp_136, 1); + ctx->freeBigInts(_sigValue_159, 1); + ctx->freeBigInts(_tmp_137, 1); + ctx->freeBigInts(_sigValue_160, 1); + ctx->freeBigInts(_tmp_138, 1); + ctx->freeBigInts(_sigValue_161, 1); + ctx->freeBigInts(_tmp_139, 1); + ctx->freeBigInts(_sigValue_162, 1); + ctx->freeBigInts(_tmp_140, 1); + ctx->freeBigInts(_sigValue_163, 1); + ctx->freeBigInts(_tmp_141, 1); + ctx->freeBigInts(_sigValue_164, 1); + ctx->freeBigInts(_sigValue_165, 1); + ctx->freeBigInts(_tmp_142, 1); + ctx->freeBigInts(_sigValue_166, 1); + ctx->freeBigInts(_tmp_143, 1); + ctx->freeBigInts(_sigValue_167, 1); + ctx->freeBigInts(_tmp_144, 1); + ctx->freeBigInts(_sigValue_168, 1); + ctx->freeBigInts(_tmp_145, 1); + ctx->freeBigInts(_sigValue_169, 1); + ctx->freeBigInts(_sigValue_170, 1); + ctx->freeBigInts(_tmp_146, 1); + ctx->freeBigInts(_sigValue_171, 1); + ctx->freeBigInts(_tmp_147, 1); + ctx->freeBigInts(_sigValue_172, 1); + ctx->freeBigInts(_tmp_148, 1); + ctx->freeBigInts(_sigValue_173, 1); + ctx->freeBigInts(_tmp_149, 1); + ctx->freeBigInts(_sigValue_174, 1); + ctx->freeBigInts(_sigValue_175, 1); + ctx->freeBigInts(_tmp_150, 1); + ctx->freeBigInts(_sigValue_176, 1); + ctx->freeBigInts(_tmp_151, 1); + ctx->freeBigInts(_sigValue_177, 1); + ctx->freeBigInts(_tmp_152, 1); + ctx->freeBigInts(_sigValue_178, 1); + ctx->freeBigInts(_tmp_153, 1); + ctx->freeBigInts(_sigValue_179, 1); + ctx->freeBigInts(_sigValue_180, 1); + ctx->freeBigInts(_tmp_154, 1); + ctx->freeBigInts(_sigValue_181, 1); + ctx->freeBigInts(_sigValue_182, 1); + ctx->freeBigInts(_tmp_155, 1); + ctx->freeBigInts(_sigValue_183, 1); + ctx->freeBigInts(_tmp_156, 1); + ctx->freeBigInts(_sigValue_184, 1); + ctx->freeBigInts(_tmp_157, 1); + ctx->freeBigInts(_sigValue_185, 1); + ctx->freeBigInts(_tmp_158, 1); + ctx->freeBigInts(_sigValue_186, 1); + ctx->freeBigInts(_tmp_159, 1); + ctx->freeBigInts(_sigValue_187, 1); + ctx->freeBigInts(_tmp_160, 1); + ctx->freeBigInts(_sigValue_188, 1); + ctx->freeBigInts(_tmp_161, 1); + ctx->freeBigInts(_sigValue_189, 1); + ctx->freeBigInts(_tmp_162, 1); + ctx->freeBigInts(_sigValue_190, 1); + ctx->freeBigInts(_sigValue_191, 1); + ctx->freeBigInts(_tmp_163, 1); + ctx->freeBigInts(_sigValue_192, 1); + ctx->freeBigInts(_tmp_164, 1); + ctx->freeBigInts(_sigValue_193, 1); + ctx->freeBigInts(_tmp_165, 1); + ctx->freeBigInts(_sigValue_194, 1); + ctx->freeBigInts(_tmp_166, 1); + ctx->freeBigInts(_sigValue_195, 1); + ctx->freeBigInts(_sigValue_196, 1); + ctx->freeBigInts(_tmp_167, 1); + ctx->freeBigInts(_sigValue_197, 1); + ctx->freeBigInts(_tmp_168, 1); + ctx->freeBigInts(_sigValue_198, 1); + ctx->freeBigInts(_tmp_169, 1); + ctx->freeBigInts(_sigValue_199, 1); + ctx->freeBigInts(_tmp_170, 1); + ctx->freeBigInts(_sigValue_200, 1); + ctx->freeBigInts(_sigValue_201, 1); + ctx->freeBigInts(_tmp_171, 1); + ctx->freeBigInts(_sigValue_202, 1); + ctx->freeBigInts(_tmp_172, 1); + ctx->freeBigInts(_sigValue_203, 1); + ctx->freeBigInts(_tmp_173, 1); + ctx->freeBigInts(_sigValue_204, 1); + ctx->freeBigInts(_tmp_174, 1); + ctx->freeBigInts(_sigValue_205, 1); + ctx->freeBigInts(_sigValue_206, 1); + ctx->freeBigInts(_tmp_175, 1); + ctx->freeBigInts(_sigValue_207, 1); + ctx->freeBigInts(_tmp_176, 1); + ctx->freeBigInts(_sigValue_208, 1); + ctx->freeBigInts(_sigValue_209, 1); + ctx->freeBigInts(_tmp_177, 1); + ctx->freeBigInts(_sigValue_210, 1); + ctx->freeBigInts(_tmp_178, 1); + ctx->freeBigInts(_sigValue_211, 1); + ctx->freeBigInts(_sigValue_212, 1); + ctx->freeBigInts(_tmp_179, 1); + ctx->freeBigInts(_sigValue_213, 1); + ctx->freeBigInts(_tmp_180, 1); + ctx->freeBigInts(_sigValue_214, 1); + ctx->freeBigInts(_sigValue_215, 1); + ctx->freeBigInts(_sigValue_216, 1); + ctx->freeBigInts(_tmp_181, 1); + ctx->freeBigInts(_sigValue_217, 1); + ctx->freeBigInts(_tmp_182, 1); + ctx->freeBigInts(_sigValue_218, 1); + ctx->freeBigInts(_tmp_183, 1); + ctx->freeBigInts(_sigValue_219, 1); + ctx->freeBigInts(_tmp_184, 1); + ctx->freeBigInts(_sigValue_220, 1); + ctx->freeBigInts(_tmp_185, 1); + ctx->freeBigInts(_sigValue_221, 1); + ctx->freeBigInts(_tmp_186, 1); + ctx->freeBigInts(_sigValue_222, 1); + ctx->freeBigInts(_tmp_187, 1); + ctx->freeBigInts(_sigValue_223, 1); + ctx->freeBigInts(_tmp_188, 1); + ctx->freeBigInts(_sigValue_224, 1); + ctx->freeBigInts(_sigValue_225, 1); + ctx->freeBigInts(_tmp_189, 1); + ctx->freeBigInts(_sigValue_226, 1); + ctx->freeBigInts(_tmp_190, 1); + ctx->freeBigInts(_sigValue_227, 1); + ctx->freeBigInts(_tmp_191, 1); + ctx->freeBigInts(_sigValue_228, 1); + ctx->freeBigInts(_tmp_192, 1); + ctx->freeBigInts(_sigValue_229, 1); + ctx->freeBigInts(_tmp_193, 1); + ctx->freeBigInts(_sigValue_230, 1); + ctx->freeBigInts(_tmp_194, 1); + ctx->freeBigInts(_sigValue_231, 1); + ctx->freeBigInts(_tmp_195, 1); + ctx->freeBigInts(_tmp_196, 1); + ctx->freeBigInts(_tmp_197, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_198, 1); +} + +/* +BabyAdd +*/ +void BabyAdd_4d10bd4b8f5eb590(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_2; + int _sigIdx_3; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_4; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_1 = ctx->allocBigInts(1); + int _sigIdx_5; + int _sigIdx_6; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "21888242871839275222246405745257275088548364400416034343698204186575808326917", 10); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_7; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + int _sigIdx_8; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_9; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _tmp_5 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_10; + int _sigIdx_11; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _sigIdx_12; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_13; + int _sigIdx_14; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + int _sigIdx_15; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _sigIdx_16; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "168696", 10); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_17; + int _sigIdx_18; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "168696", 10); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "1", 10); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _sigIdx_19; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_20; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + int _sigIdx_21; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _sigIdx_22; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + int _sigIdx_23; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "168700", 10); + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _sigIdx_24; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_25; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "168696", 10); + PBigInt _tmp_19 = ctx->allocBigInts(1); + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_20 = ctx->allocBigInts(1); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _sigIdx_26; + int _sigIdx_27; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "168696", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "1", 10); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _sigIdx_28; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _sigIdx_29; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _sigIdx_30; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "168700", 10); + PBigInt _tmp_25 = ctx->allocBigInts(1); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _sigIdx_31; + PBigInt _sigValue_25 = ctx->allocBigInts(1); + PBigInt _tmp_27 = ctx->allocBigInts(1); + + + /* signal input x1 */ + + /* signal input y1 */ + + /* signal input x2 */ + + /* signal input y2 */ + + /* signal output xout */ + + /* signal output yout */ + + /* signal beta */ + + /* signal gamma */ + + /* signal delta */ + + /* signal tau */ + + /* var a = 168700 */ + + /* var d = 168696 */ + + /* beta <== x1*y2 */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); + ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue_1); + ctx->field->mul(_tmp,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); + + /* gamma <== y1*x2 */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_4, _sigValue_3); + ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); + + /* delta <== (-a*x1+y1)*(x2 + y2) */ + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_6, _sigValue_4); + ctx->field->mul(_tmp_3,_const,_sigValue_4); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); + ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_8, _sigValue_6); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); + ctx->field->add(_tmp_5,_sigValue_6,_sigValue_7); + ctx->field->mul(_tmp_6,_tmp_4,_tmp_5); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->setSignal(ctx->cIdx, _sigIdx_10, _tmp_6); + + /* tau <== beta * gamma */ + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_8); + _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_9); + ctx->field->mul(_tmp_7,_sigValue_8,_sigValue_9); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->setSignal(ctx->cIdx, _sigIdx_13, _tmp_7); + + /* xout <-- (beta + gamma) / (1+ d*tau) */ + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_14, _sigValue_10); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_11); + ctx->field->add(_tmp_8,_sigValue_10,_sigValue_11); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_16, _sigValue_12); + ctx->field->mul(_tmp_9,_const_1,_sigValue_12); + ctx->field->add(_tmp_10,_const_2,_tmp_9); + ctx->field->div(_tmp_11,_tmp_8,_tmp_10); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); + ctx->setSignal(ctx->cIdx, _sigIdx_17, _tmp_11); + + /* (1+ d*tau) * xout === (beta + gamma) */ + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_18, _sigValue_13); + ctx->field->mul(_tmp_12,_const_3,_sigValue_13); + ctx->field->add(_tmp_13,_const_4,_tmp_12); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(ctx->cIdx, _sigIdx_19, _sigValue_14); + ctx->field->mul(_tmp_14,_tmp_13,_sigValue_14); + _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_20, _sigValue_15); + _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_21, _sigValue_16); + ctx->field->add(_tmp_15,_sigValue_15,_sigValue_16); + ctx->checkConstraint(_tmp_14, _tmp_15, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:45:4"); + /* yout <-- (delta + a*beta - gamma) / (1-d*tau) */ + _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->getSignal(ctx->cIdx, _sigIdx_22, _sigValue_17); + _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_23, _sigValue_18); + ctx->field->mul(_tmp_16,_const_5,_sigValue_18); + ctx->field->add(_tmp_17,_sigValue_17,_tmp_16); + _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_24, _sigValue_19); + ctx->field->sub(_tmp_18,_tmp_17,_sigValue_19); + _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_25, _sigValue_20); + ctx->field->mul(_tmp_19,_const_6,_sigValue_20); + ctx->field->sub(_tmp_20,_const_7,_tmp_19); + ctx->field->div(_tmp_21,_tmp_18,_tmp_20); + _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); + ctx->setSignal(ctx->cIdx, _sigIdx_26, _tmp_21); + + /* (1-d*tau)*yout === (delta + a*beta - gamma) */ + _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_27, _sigValue_21); + ctx->field->mul(_tmp_22,_const_8,_sigValue_21); + ctx->field->sub(_tmp_23,_const_9,_tmp_22); + _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_22); + ctx->field->mul(_tmp_24,_tmp_23,_sigValue_22); + _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->getSignal(ctx->cIdx, _sigIdx_29, _sigValue_23); + _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_30, _sigValue_24); + ctx->field->mul(_tmp_25,_const_10,_sigValue_24); + ctx->field->add(_tmp_26,_sigValue_23,_tmp_25); + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_31, _sigValue_25); + ctx->field->sub(_tmp_27,_tmp_26,_sigValue_25); + ctx->checkConstraint(_tmp_24, _tmp_27, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:48:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_25, 1); + ctx->freeBigInts(_tmp_27, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=0 +*/ +void EscalarMulWindow_c58c15588b83ea88(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "2671756056509184035029146175565761955751135805354291559563293617232983272177", 10); + mpz_set_str(table[3], "2663205510731142763556352975002641716101654201788071096152948830924149045094", 10); + mpz_set_str(table[4], "21061849532035604199835446647463213287644222029065034749734651703816665561936", 10); + mpz_set_str(table[5], "10590233619556693821464000850700822860334161666884611627447818867434809995703", 10); + mpz_set_str(table[6], "20317648563765902174667075232032560370309215640559693287156736658161704424594", 10); + mpz_set_str(table[7], "21013647718336911519764140024913157479577493715202328677986614600884911794491", 10); + mpz_set_str(table[8], "14478206612680015666001373583501139293983486047137949145191530060944286683521", 10); + mpz_set_str(table[9], "10123863954505892803935721758442873472294119246957893940443040317515579486726", 10); + mpz_set_str(table[10], "17533772573527889246527547392489694739099032758079124639632822701511575877562", 10); + mpz_set_str(table[11], "10485946492182283858299804441446054924473212259565210991291733992330817035622", 10); + mpz_set_str(table[12], "10691945132484551239590811899222374800071270413484981694447010851744275692492", 10); + mpz_set_str(table[13], "17017220761087367377437872599437857226988338675941324372991530149189226041639", 10); + mpz_set_str(table[14], "11512305266119483002967267541281378583475563590412603361589692706428762942919", 10); + mpz_set_str(table[15], "17701998960898923168769796194904256588134759210821296842657572359646247369904", 10); + mpz_set_str(table[16], "14748579267318245095313355470697847753165312291616751728218498300852858576240", 10); + mpz_set_str(table[17], "12348105919434692489761959759489837184429607773008554537644575195064773395599", 10); + mpz_set_str(table[18], "20627209280839605123458262072710281132770262871506070816948130741226736752378", 10); + mpz_set_str(table[19], "19774165882217531119739800793352824781327668198019718066011577860282902125243", 10); + mpz_set_str(table[20], "13138473324145907025806656975321736895998099375896328736232314856705580868417", 10); + mpz_set_str(table[21], "11161378845903559652998558387712808648701614065229446679904118706678977704673", 10); + mpz_set_str(table[22], "4783703548184459946824339914087560705114529464571510440857756065249448387111", 10); + mpz_set_str(table[23], "17372228386106645746052050627097719626888756085069034782717276260887316255101", 10); + mpz_set_str(table[24], "14047413995832988517702590877959433912209562292767914010963039996558229040933", 10); + mpz_set_str(table[25], "15371248093363251128008345015380390264962889173415460722202760022337670229170", 10); + mpz_set_str(table[26], "14909468781625592758256535742632378596186891695566342467657803191467264544669", 10); + mpz_set_str(table[27], "3548853310819272883077126647158239434842415848621355976908519691315221761647", 10); + mpz_set_str(table[28], "4549037862652931337968683807757208928887981760400435154359412727518098339337", 10); + mpz_set_str(table[29], "9570397906664064215145622756617417040436100343051281135720852571956974557834", 10); + mpz_set_str(table[30], "15639545649252730533429378371400422015088795179548877158373407950802419394172", 10); + mpz_set_str(table[31], "10862252642237447003556041796754771236159124858390445391230106925080927464385", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=1 +*/ +void EscalarMulWindow_c58c16588b83ec3b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "19455639892203982161904065887827858143789210199458192045947095791879563002868", 10); + mpz_set_str(table[3], "5728209579115735160253096048399417829610899048655747609318106071850801912321", 10); + mpz_set_str(table[4], "18686111957603690142897163935624451798199750214413650410111676285463855030329", 10); + mpz_set_str(table[5], "19323810151487654006030918772798553609636456219633670253832750591762532092432", 10); + mpz_set_str(table[6], "706228624705042566868137974354817500023047387261009322012026511666994805696", 10); + mpz_set_str(table[7], "12718753489108893940617839864580563828565238915991990901201774215604335348934", 10); + mpz_set_str(table[8], "219027113030251483556148462862945817714391143716517443418769250867495969997", 10); + mpz_set_str(table[9], "16962394730098992742840890875321417988868456101920458125612662972429881454408", 10); + mpz_set_str(table[10], "13016826415290691919553731757976770379671939718956443199809356095112004579699", 10); + mpz_set_str(table[11], "1359466613565304654749319254848103402738704679493312522734974950562290665325", 10); + mpz_set_str(table[12], "5140095991777712156655118225691596094097957392214510343203353723912782997132", 10); + mpz_set_str(table[13], "3987059370913932243425052982430684796273382748549604198559328872438757141590", 10); + mpz_set_str(table[14], "2283566044616545281776255683217251843611107557577469795054423579012635869675", 10); + mpz_set_str(table[15], "70264709290222483776098951810282562276044890574113774620457455075794591312", 10); + mpz_set_str(table[16], "16555314855491486874438631352543335040340030241816507059736477310745154472640", 10); + mpz_set_str(table[17], "19382928900222393377473659441126625670945163376073678194142983735634141916263", 10); + mpz_set_str(table[18], "8086092990754260566701029612135162344420167517529259360723765668718606900034", 10); + mpz_set_str(table[19], "16111606256110216805458928120918958525326838805009433283434999243360680375910", 10); + mpz_set_str(table[20], "18248481455996927337609181666090322265796817336713969037740875253880857812596", 10); + mpz_set_str(table[21], "3081229463882440249188163677994210271499208795907811910647944775042100707985", 10); + mpz_set_str(table[22], "5640279503961230459401276264741775148836142745649387394373819934366888926345", 10); + mpz_set_str(table[23], "15396724379836625238543402477270760289309088934474925981791699207401537515620", 10); + mpz_set_str(table[24], "8607722889528498400823478295882721091737905572460707006751171159342906843742", 10); + mpz_set_str(table[25], "21466865367587905325003930902912047106650665927536036768946340342192655382096", 10); + mpz_set_str(table[26], "4854500387999538816548985530147382852450171939158774084937784863757011025279", 10); + mpz_set_str(table[27], "10310501313371743938750396948922110166818977458931556811646942602928314527040", 10); + mpz_set_str(table[28], "14604549082165157031789965675930596799936491131656743459412745484005719211110", 10); + mpz_set_str(table[29], "1339979265112341323491906777046183714637158038283904900091428409914103298899", 10); + mpz_set_str(table[30], "4792538761263689650036234468785937904696616586598070710846239025949758471218", 10); + mpz_set_str(table[31], "12711691658268437920239413698528095261450592977303563540981382180495087939658", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=2 +*/ +void EscalarMulWindow_c58c17588b83edee(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9446005552421437632171670368411141852950491030316681294022758941762353691302", 10); + mpz_set_str(table[3], "2659082391675250564706486650259869870961386176207643658467710396489318334239", 10); + mpz_set_str(table[4], "3567776678731498205360741700177218786645604816296171311351827198380504470091", 10); + mpz_set_str(table[5], "8566560682186698983919280572805734023394051348324032030872146310266738697218", 10); + mpz_set_str(table[6], "258911588087935750556942942400031114216937370209695211046780804829949135511", 10); + mpz_set_str(table[7], "14300986411385662963053584650495461488028522919951330498240837785458712915934", 10); + mpz_set_str(table[8], "15564738851955513773493711440024193357909300986464999380286348490264230670386", 10); + mpz_set_str(table[9], "5965579401397693974925033270864680183364822636666363235432562636579089978930", 10); + mpz_set_str(table[10], "7657407311087419164589122153471097548039283075908805789298656400236333314321", 10); + mpz_set_str(table[11], "9545803729989116516909189980406185940534435535160487234366655346494995944031", 10); + mpz_set_str(table[12], "8904879112878954266045205312892118060926220046935092572749733631753765966133", 10); + mpz_set_str(table[13], "5397942272759262673541954303471790981432054904879506655872748899940928743848", 10); + mpz_set_str(table[14], "16005405010959983253060935791915368839392689218364939430089223865098988491261", 10); + mpz_set_str(table[15], "12780906601762734568154860729143030086742693287996922377232618204399174262389", 10); + mpz_set_str(table[16], "6355113513875581014627558583581851782513034723503575831227260581989021260986", 10); + mpz_set_str(table[17], "19228898953773995361652944393706800625574665856608795952703625316607893036471", 10); + mpz_set_str(table[18], "13341589571471376591988824520667845474859907413843030067082319287114707148997", 10); + mpz_set_str(table[19], "11939769823730562198751801938985875475927535850886049883104757466206396080091", 10); + mpz_set_str(table[20], "16490585193629424755585755820029525210801181920131533025324423002003774108689", 10); + mpz_set_str(table[21], "13764187366310991388903774097630124543619255258828595613110964142183378786976", 10); + mpz_set_str(table[22], "8006315467798305079984157816179731973218311346019365349814756162269404722839", 10); + mpz_set_str(table[23], "1605023994361242947668016322130262544864224794817220524339289545125698624339", 10); + mpz_set_str(table[24], "9530959617474658142363905231723417839467126504682984204053041372375877710848", 10); + mpz_set_str(table[25], "16118223422123893792488680167063782747373990466155676430595485511134433349476", 10); + mpz_set_str(table[26], "2865399069098153375767726449428261452275209590690129835321747816113392404504", 10); + mpz_set_str(table[27], "8928564173378216588030433107324122575827378299963147498101157041063618300439", 10); + mpz_set_str(table[28], "10339017142837648466886820897040099586220256711351150134165915735328557576324", 10); + mpz_set_str(table[29], "6596585013208715469387108496234424289676462443093059959055359882641385749585", 10); + mpz_set_str(table[30], "14825605545088609252050521210594268465512765862272571308204873997578798474325", 10); + mpz_set_str(table[31], "12187805937843977377971909266679659960602587881013889583696693031688772786111", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=3 +*/ +void EscalarMulWindow_c58c18588b83efa1(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8150092786527816117187776982124415533909397268460948027014784329744581130055", 10); + mpz_set_str(table[3], "9518404959558566461656628035698053553320470917559935829024277026442632056374", 10); + mpz_set_str(table[4], "19557512886391178973040556919290088965905391130848997966415180460989529314240", 10); + mpz_set_str(table[5], "13180631977306207642756209240118576579994394123759676161103836152880322549063", 10); + mpz_set_str(table[6], "19477474816043793545117155715097546600589596961654549537557057126397214129618", 10); + mpz_set_str(table[7], "8777943635232350965989221427258224047780458468881792910136531538587040893617", 10); + mpz_set_str(table[8], "12030196390222755730200134355747729718237637263992972457879893194696449174278", 10); + mpz_set_str(table[9], "17846471008363408645850734457538034601310377961363285443030130502052793125919", 10); + mpz_set_str(table[10], "4549527814713249266071034960306756526094528593868529547706421904603490190414", 10); + mpz_set_str(table[11], "3378272617647076909564417794520077205413646921985457795877389705928708328881", 10); + mpz_set_str(table[12], "5996432105003214217061307570202564768225021824385263349334268127523564597056", 10); + mpz_set_str(table[13], "7770619726190874830265312966887584714987914307242217484543218976822310113700", 10); + mpz_set_str(table[14], "1483679205901265195758427835974928922190981298819003793956998332436015765360", 10); + mpz_set_str(table[15], "3073341262968435807189266353884391706594011592475698977361871901736181092796", 10); + mpz_set_str(table[16], "10985704671102161346854146792047362123740315488132666227309860492960747383468", 10); + mpz_set_str(table[17], "5011814540563716381283896406542887602569134987549250765805611764631975504631", 10); + mpz_set_str(table[18], "9796417847389666106133741044999871704158698170778634927072967498096563971465", 10); + mpz_set_str(table[19], "7139881315939230237213038310613971673498303203772940185084463029730438207111", 10); + mpz_set_str(table[20], "3858790035360253599992673710272605999900361113229111656484083455737561764266", 10); + mpz_set_str(table[21], "18193594779659082118327670475682455165691956974006422261251303354759573985179", 10); + mpz_set_str(table[22], "15913395802415558156450090448958994836876094485178169297011671361802250846294", 10); + mpz_set_str(table[23], "6290954700813415583702420446892893724592386469368652831713294424023921328391", 10); + mpz_set_str(table[24], "12234154988449955295007801346911730456263810093685589990745736296694691331689", 10); + mpz_set_str(table[25], "4071619348865044242854337481102671518468245316509398317323413829676831184140", 10); + mpz_set_str(table[26], "18296970670987470541928352293945651926143113385337809319372379472353243645271", 10); + mpz_set_str(table[27], "4335070521515665236648391284184099626198223819230647317471408272758195314225", 10); + mpz_set_str(table[28], "7371225017789541274935253781835429956558085106989173971539756734534037636223", 10); + mpz_set_str(table[29], "16010871926200898046323835838781774961955270791100780009807204854105126992789", 10); + mpz_set_str(table[30], "16441281352077729865298617620287397671304532588403423939109136321565674518251", 10); + mpz_set_str(table[31], "3943334682388292137963538837370597916654690547563398341672467979005282708582", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=4 +*/ +void EscalarMulWindow_c58c19588b83f154(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3417806579160556134333813259460474815981119464296707667859014889696018752668", 10); + mpz_set_str(table[3], "18303530119038872491958068153679093932762993086624566840246755837399985722074", 10); + mpz_set_str(table[4], "1278722777077380932846071312495674428829103826635244088139534656779247221080", 10); + mpz_set_str(table[5], "4766813576924613894849782381099443235425062896697198995309921179968121988382", 10); + mpz_set_str(table[6], "21706560547471963408928734542577270786058777664821805388285584236309745036595", 10); + mpz_set_str(table[7], "19474420358542337323166829084757866210622349125481878856679236914789204554456", 10); + mpz_set_str(table[8], "16148777962245742753344807259751415019316024545781160256739350564573105618519", 10); + mpz_set_str(table[9], "13136915380084811164829570762824983872909448080088933584491857527036149129016", 10); + mpz_set_str(table[10], "13523320605698245999658794856573576592560865356495661132295347461850750329252", 10); + mpz_set_str(table[11], "16945934443961665381663271958175209640958642333272209699999019699882600368277", 10); + mpz_set_str(table[12], "20076159369861017393528816561212830413329240268304655238542677851614925369880", 10); + mpz_set_str(table[13], "19712144684855766330661628479389116499212293472268323254960610438656057236756", 10); + mpz_set_str(table[14], "17016301484294934920930205076531639302999426390692086365871738070055504226095", 10); + mpz_set_str(table[15], "13398371924924462007415512847441324485047078419293140459621970026684818296882", 10); + mpz_set_str(table[16], "19217525217547781067659519568214099648797785214583347559328549941353656852574", 10); + mpz_set_str(table[17], "2178082404318103957879941978677884675189740693774631385842865689786090982265", 10); + mpz_set_str(table[18], "15658612728463314899530508864952139121459571024126136259396145002568899460974", 10); + mpz_set_str(table[19], "18440614053011977886564579546481983730765315209862726547260461172138295387769", 10); + mpz_set_str(table[20], "18839244752907500590526601192991753266046853314501406690535890618462054339560", 10); + mpz_set_str(table[21], "10841318968708963276604972380526125897904867627368853645446154325238682572695", 10); + mpz_set_str(table[22], "20660736421097303468403672441762447742351266035660081190461881367659810884140", 10); + mpz_set_str(table[23], "9050275196723472554785339332181686124757733268343017160454836316985136474861", 10); + mpz_set_str(table[24], "20640074942511254836094073673277550508496065345652377346684872774744705553194", 10); + mpz_set_str(table[25], "8167234296839537558032690969949000222860801978663856658019195761607674902086", 10); + mpz_set_str(table[26], "1394942689707751005522748817749065157094525057684238600474139408310067123334", 10); + mpz_set_str(table[27], "10441944898740297097292400320919437470446758344635169492916298862720353642446", 10); + mpz_set_str(table[28], "15744618198993550727048455997859510978234635572593326504554282177598131883106", 10); + mpz_set_str(table[29], "10859554966742577506446219189812047764206433665977759405737438783611339614897", 10); + mpz_set_str(table[30], "14993305322415576880408281122582894662874043134537330316523606697439674338905", 10); + mpz_set_str(table[31], "1201099550761690530930370254368883330229857131132952162294279509850888593432", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=5 +*/ +void EscalarMulWindow_c58c1a588b83f307(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "13574041550626754575366066602333672761973100503047465467497309037302178242397", 10); + mpz_set_str(table[3], "19992524180043582397908710904281864534803688779981125908797255813631674839085", 10); + mpz_set_str(table[4], "4233278821061390511829933889266566610972903117154372446017957348055990808177", 10); + mpz_set_str(table[5], "5045259922158927676824318395562168462542291641505375801985274351573893106551", 10); + mpz_set_str(table[6], "16514342103887099746634946485715139122889733891075255727183720476971477249965", 10); + mpz_set_str(table[7], "8941892154166956580644653623322591610335064214261856454536520725502245404896", 10); + mpz_set_str(table[8], "187640030886842074568868794411316543881262478898014282086332526801593304561", 10); + mpz_set_str(table[9], "7353300810991449244645247513757041449213870871611661875317196811133530771377", 10); + mpz_set_str(table[10], "9035012071275405030113227508261398328675897139033940681663695733954625302633", 10); + mpz_set_str(table[11], "13994146853448139651844184964877279457606458646044220254646840214379104181616", 10); + mpz_set_str(table[12], "10056493999583946229755037153761492391057729831323133475063291955099443866427", 10); + mpz_set_str(table[13], "17665730161408451108051039115010176092290627929105985845561186395902567388712", 10); + mpz_set_str(table[14], "4984009842947563263845614070467543138668350217322828972470105767837626797905", 10); + mpz_set_str(table[15], "6666279057534804934632346478442039345840959420838158257904518468325188099048", 10); + mpz_set_str(table[16], "16667717833601441596497020218451346232900287361473307554125507497294302221125", 10); + mpz_set_str(table[17], "4299190798223000045100922324845313965612727298585835155326418127263167430446", 10); + mpz_set_str(table[18], "8963999402585305736134178842989471983204848885881140435965840852298428910979", 10); + mpz_set_str(table[19], "15195888441457465364169687194530930837418845100802253190463719389850135837997", 10); + mpz_set_str(table[20], "21019300571349511718902277781053887653229961974932304986282542770263430207678", 10); + mpz_set_str(table[21], "15913614265219129518097086214455721058544292837089029054840324473554057262891", 10); + mpz_set_str(table[22], "2457286044316427442609379624657309589484096804612134196540071711219220641249", 10); + mpz_set_str(table[23], "13952791732012830625717758607733331162866966608885517470676907036767142639134", 10); + mpz_set_str(table[24], "14169902924456573990005873884160956219559738432450143453558722645043316468575", 10); + mpz_set_str(table[25], "16516874647228823808201476919779146507700305046953995102714068022782496874651", 10); + mpz_set_str(table[26], "10179980925318753964222549921492314309924887331948014358420810323581002555886", 10); + mpz_set_str(table[27], "18619066094028827185374111955005952707817917611725674290260026457865932605501", 10); + mpz_set_str(table[28], "7517604717861108228073885641035471467823508010054167193261226877877706805997", 10); + mpz_set_str(table[29], "15746667833056847894521939085540098519545058475593094497857665247104406848304", 10); + mpz_set_str(table[30], "7743850684229402724789741766630601562127324427592054959511324901026542794431", 10); + mpz_set_str(table[31], "21555586625526756660000084359038381415932637176256224834915467932769687133109", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=6 +*/ +void EscalarMulWindow_c58c1b588b83f4ba(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1367171927688033792937127342794885269658852023132799321225490157407070058762", 10); + mpz_set_str(table[3], "797200664327279789045585739586663179139763885691838560812393575802708162210", 10); + mpz_set_str(table[4], "2478479560900352699371773841963371661968085221354896581327612976097409624779", 10); + mpz_set_str(table[5], "19405286850126667179254174032091736212470292728059670084127403462846282788337", 10); + mpz_set_str(table[6], "5101779653541371224858788909925955904602739867751223498034053147664336395754", 10); + mpz_set_str(table[7], "10700110326771927853267714729731410941323958176927369499403923181315197852793", 10); + mpz_set_str(table[8], "6275321396272730090068884048459793259314026105989234293426165306003526311238", 10); + mpz_set_str(table[9], "10104549563133875423098894908570292894031875862857669179469491475855970626947", 10); + mpz_set_str(table[10], "18404244673240535460123268667169151035025048307794045575775213931077195145927", 10); + mpz_set_str(table[11], "8942784120151170167258939582572713521929039913753173983443996335737334980793", 10); + mpz_set_str(table[12], "4633483970547986365421327573054512933974141132760370864999650733086727768046", 10); + mpz_set_str(table[13], "9009730381790998742974182210001757950733454364587917243775636889747248972669", 10); + mpz_set_str(table[14], "7427360474163682348250173216816459370976459844143942567461741671948983362324", 10); + mpz_set_str(table[15], "18292799227385845925065461501189831239438442153343390063672864695602681736061", 10); + mpz_set_str(table[16], "14735664295925425221836761558674417704288144909360086121117360031860648586455", 10); + mpz_set_str(table[17], "18583606781988182037907490788308543648320079488581187869129307115022237334457", 10); + mpz_set_str(table[18], "12777678658925273973088387672940003952177723245694982962883356178316669212477", 10); + mpz_set_str(table[19], "5637312524523844945891969570765162593622794984416453233025931986985055827403", 10); + mpz_set_str(table[20], "9909486993958827185874771452543608292613144284873568526308659168095275673839", 10); + mpz_set_str(table[21], "9146983406389853436947576030254304482941905831952725248818877535684037646252", 10); + mpz_set_str(table[22], "19518092185752236311600027606949648172471133805621571199346732302580806609743", 10); + mpz_set_str(table[23], "9957876950026238308820319993187500420108611978781999596543765876983596907717", 10); + mpz_set_str(table[24], "1219286442043354058918010512542170951521811645460214828620748367885333639674", 10); + mpz_set_str(table[25], "19010914730213639558002623321779179581169503231078267225511409880999166854901", 10); + mpz_set_str(table[26], "513617967041559823154990639715417273537517756000051673345628667515198596466", 10); + mpz_set_str(table[27], "14627318016218467117296969564922426676122099051204886899742020066199527336638", 10); + mpz_set_str(table[28], "11403478616988372783401449997899314606994937244150566743376931324910640767209", 10); + mpz_set_str(table[29], "18993527257154634672661225032978403670982575920564062169783950865712754487884", 10); + mpz_set_str(table[30], "3577787637458093032841629227658969520749575787783500762540350520200389396561", 10); + mpz_set_str(table[31], "12026429520295952764028678521473341883884595153451914417062786396630616624903", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=7 +*/ +void EscalarMulWindow_c58c1c588b83f66d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3891238125689641083272054181451614235275442105730548223613703336053411960865", 10); + mpz_set_str(table[3], "1125798325584321554932117473264029905222269191303956186177915922848902449348", 10); + mpz_set_str(table[4], "18811314629583795450754550686819618506290688999032429460272886547355937594481", 10); + mpz_set_str(table[5], "743641611598619956892447583450279820853245112907864405949546266867991326681", 10); + mpz_set_str(table[6], "12674152987647317357436660497983601407934717000635208894246881682115059668783", 10); + mpz_set_str(table[7], "2731948519743128208962958548689526928107880809867169522069976629557266668316", 10); + mpz_set_str(table[8], "16482585878862398274255960964747228154725962554340646286442608159132111601461", 10); + mpz_set_str(table[9], "10772569820317817912940492332785796901432704643787646542813732044816613647988", 10); + mpz_set_str(table[10], "19213557489668634334139961814145734637881760588652395528769218657969561599430", 10); + mpz_set_str(table[11], "881665067430045320157242108536278827467731062742216537739787616061088604889", 10); + mpz_set_str(table[12], "8022420069346311072459275620939960934916745476310726896902030927312544370881", 10); + mpz_set_str(table[13], "1992221994912378784099877897662499880225735965017625625596438124785556522682", 10); + mpz_set_str(table[14], "9579197648093147990435619190051486232957889723473619421160487253349907681737", 10); + mpz_set_str(table[15], "17433951758159373070687378937146442646797615686152061312185795302324714837213", 10); + mpz_set_str(table[16], "7553501597476906893943769622683919576692323300102412267724272556166167390078", 10); + mpz_set_str(table[17], "14213085830959259156631217046380055056105366441190083587202646276745163396882", 10); + mpz_set_str(table[18], "6979529573172107993295430043924649442626597164366924448699038753432119095939", 10); + mpz_set_str(table[19], "19365865479772050250197257972579267029089957043096488813131500904045878621210", 10); + mpz_set_str(table[20], "20925131749182228854581359557993279979655416083047024798331982593689456949197", 10); + mpz_set_str(table[21], "628995645007569592184402778913304900211149232540769166783874341020026208953", 10); + mpz_set_str(table[22], "17604242730180055507332535312674958511227580885260714928678244677719349589005", 10); + mpz_set_str(table[23], "2574984066471136101998448855653371872700738183778305596173970377799619795701", 10); + mpz_set_str(table[24], "20831534721817566186990444281074518162298405326364930135929253022007977768980", 10); + mpz_set_str(table[25], "7689350931531565801873219872319436570642719761656167748947907769850519053938", 10); + mpz_set_str(table[26], "18613508951623748297992761400272086480834541050963364751960748269136052300213", 10); + mpz_set_str(table[27], "8254170720289236606417785739253419008714856210428738112401503829897048265561", 10); + mpz_set_str(table[28], "517738969825127850907339493958915189443963544613620013410488427321685508446", 10); + mpz_set_str(table[29], "10370448260708554237391268061399697566385114319122080384420492198387291165447", 10); + mpz_set_str(table[30], "2076232869116281317249840903513496619429855165491949853324719270169302893646", 10); + mpz_set_str(table[31], "14472244621101046483773531028403346444711843306763568805526784629539214435895", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=8 +*/ +void EscalarMulWindow_c58c0d588b83dcf0(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8231156569464835406105509955023398166583563145140077214061588271089883186724", 10); + mpz_set_str(table[3], "4131559530122773333148950856493472988410947362284455542714720636875440611709", 10); + mpz_set_str(table[4], "4222320340710021220635087605434545057931931608869700256351360614476775187130", 10); + mpz_set_str(table[5], "14891625252913543700728395232972502335864501199802412742215658789488258063649", 10); + mpz_set_str(table[6], "1646455484262666516106813873103835882048340923205939732254987444947610808767", 10); + mpz_set_str(table[7], "9286252187272588230151612370954491032363682998240982552859376165533701208989", 10); + mpz_set_str(table[8], "7557814199980749065003261053473663978667771976955446302398943322123332421978", 10); + mpz_set_str(table[9], "16648723380483431056833262106171882793443194716361935878476180011966676846493", 10); + mpz_set_str(table[10], "16078747115019990102299206526736463185663781880481057561894251210897974738019", 10); + mpz_set_str(table[11], "17134923776801537028531921398273215271831000960700761228465194550135991063443", 10); + mpz_set_str(table[12], "15905365286702861801361159667210946044588171652081130043945932140372389814791", 10); + mpz_set_str(table[13], "19964296123418756982702962637911322624425532309870269116767261118099207919566", 10); + mpz_set_str(table[14], "6915366607654543142221457161670542993108683652514645755759560456632586150493", 10); + mpz_set_str(table[15], "2087846465560868958703916325478946971263933285651790233772293039497495902936", 10); + mpz_set_str(table[16], "6309377082500543956327385030496077809477197422635109868300311692183321725738", 10); + mpz_set_str(table[17], "5052698669200407156616317933289761324507423553046478403149081185734480934122", 10); + mpz_set_str(table[18], "6456122751549808126695922793720951492345761686251563930706806741318056833979", 10); + mpz_set_str(table[19], "6878739043111876705182750491460844497947386020177656507038316770255001250637", 10); + mpz_set_str(table[20], "7917307151338755976207128351426187088443406922987157133711392099880198657856", 10); + mpz_set_str(table[21], "18211873978366518156707561062393288287663250919693117404231604485688475921886", 10); + mpz_set_str(table[22], "1437402662452623373177033207654924876763958897638262849381063725387025038843", 10); + mpz_set_str(table[23], "13407872492018827434872326149982037883391571435859313293715271856141638795735", 10); + mpz_set_str(table[24], "9133674188366622502516686841396573731703876205389833786088490310840680578430", 10); + mpz_set_str(table[25], "10981702961553361033825179020366876816731745122481552196385533205621301133135", 10); + mpz_set_str(table[26], "20532474418676117775130188133095832624629144992872350926421446666621295945680", 10); + mpz_set_str(table[27], "15736874318734568974434385373061997380725219963467856048535897629617875058108", 10); + mpz_set_str(table[28], "15208431825461040341250408448403292980816360063058809663637843517769211407177", 10); + mpz_set_str(table[29], "50119157137458024594283940301095474534515525283008096722355131965567175660", 10); + mpz_set_str(table[30], "17785744879219433292693984240496519711163127823897332842028710747473969558571", 10); + mpz_set_str(table[31], "3057853011904607944579126163912257194811180316351743314958470454159142095921", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=9 +*/ +void EscalarMulWindow_c58c0e588b83dea3(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18617832170581036663417610659828058003481609984032545510203670434577085669785", 10); + mpz_set_str(table[3], "20412179687374163530786375779400207318219951740876146791634938465624957055314", 10); + mpz_set_str(table[4], "12457183533565642941886418128340642104667337040823610826843739438122849506047", 10); + mpz_set_str(table[5], "14850708549463353135142738287059857119694474270768096104468781998162967836263", 10); + mpz_set_str(table[6], "5758258007888214430724448822096874285894421081593125767887837305340558823825", 10); + mpz_set_str(table[7], "12908247414706452795675786267497089124657703798322216672101648812327464029693", 10); + mpz_set_str(table[8], "12628856576746666315953079387391323090098384251046226236462275503116598986451", 10); + mpz_set_str(table[9], "12436666347724549495679084191202020944109875496797887286001099997629377639308", 10); + mpz_set_str(table[10], "13330703629071735966906823755876917026077523563661193538535592320086189247375", 10); + mpz_set_str(table[11], "10055883878689392527641259079743647076204784376930036192101152887126596371664", 10); + mpz_set_str(table[12], "21164901024292654384455784364953343170171781144357866479228083243091567786986", 10); + mpz_set_str(table[13], "15390527040081147513512905468158231588131396033599486976144901799096996111254", 10); + mpz_set_str(table[14], "21016138860700529805263900864154479632703600969377068409301301813357046324250", 10); + mpz_set_str(table[15], "10435576735924395051973219477709356250113178418716359347303295486272229950478", 10); + mpz_set_str(table[16], "18462785813886428819263566993530862099109115137010424306990953442545591636078", 10); + mpz_set_str(table[17], "13288894132151667245986605906028822212827467714603251483730908037245184306685", 10); + mpz_set_str(table[18], "7570200057881871540479013925807761268012361481749735662055975628124204770367", 10); + mpz_set_str(table[19], "3268478569496605830559256289069469748930923010063009787217999466880442437844", 10); + mpz_set_str(table[20], "15280529358426874360284774896617245007977077787991294150845573308326676905676", 10); + mpz_set_str(table[21], "12054492305035346286835680080423869393656706210538153075463784179908512055594", 10); + mpz_set_str(table[22], "5681160944000792954586470007809034909456732483527540608380398161693837695779", 10); + mpz_set_str(table[23], "9135504547777922242451249559369889563405952621865490209792286266789592880104", 10); + mpz_set_str(table[24], "18519121082866482879961846300133818362939830820686482425546076262186819717393", 10); + mpz_set_str(table[25], "2354548588196348528742155546955212874093891220853928746813848261284580574574", 10); + mpz_set_str(table[26], "8678247297418326754073776545803169263543225312571792778715319400119072196922", 10); + mpz_set_str(table[27], "4441680220072976954875335846537049450334223858875460093405814007357649312568", 10); + mpz_set_str(table[28], "912266678453399837056794519055563566831096961430259403483239037834335836676", 10); + mpz_set_str(table[29], "3397107365521793004590603449858579536151451686084973041055963447874748614384", 10); + mpz_set_str(table[30], "5046975788673094176954511868550759539640818278140040944232465268523113411229", 10); + mpz_set_str(table[31], "19615064900452383446866677839538530779671164591433827586846654479882935673365", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=10 +*/ +void EscalarMulWindow_30f60375112a16b1(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "7218657565857634059283342360952742183382712091400426268573442944107381443388", 10); + mpz_set_str(table[3], "17160582899498480071455831631422020028835133084533852397761379917276527593721", 10); + mpz_set_str(table[4], "10186244570061438572032553670437086437287778685519652947122178551823437117713", 10); + mpz_set_str(table[5], "13991166554227572878486140294474365469273307215968693498614051452443763358554", 10); + mpz_set_str(table[6], "5350247150685119384570754450340813183671336820647779863234393494486933893881", 10); + mpz_set_str(table[7], "15733596748455350315107945099742433290371037950694973328748835067823199767898", 10); + mpz_set_str(table[8], "8337043997288171710709237803954782951159399083385000361227705717164964485925", 10); + mpz_set_str(table[9], "16870774346853266168261613283603693357394011048308000490047350805761637643282", 10); + mpz_set_str(table[10], "7137567347873534899811081492389018173636809450246781575378682264607113176297", 10); + mpz_set_str(table[11], "2371417936628767926281866765754871389531406874608119179754496783903212169987", 10); + mpz_set_str(table[12], "15197773318265769940848787973289322540341609537038752342985384412674513817720", 10); + mpz_set_str(table[13], "17340538157558214432914624695631354955915974528460536507133956969002887728959", 10); + mpz_set_str(table[14], "10723613986484070217901591619417121152424090255436979566500942845532315427797", 10); + mpz_set_str(table[15], "3531934693678906083709954988801146753352878910237452898557849940021116433787", 10); + mpz_set_str(table[16], "1058387089158874495748679519782568945307296763857205104356187848251661479935", 10); + mpz_set_str(table[17], "10014229397537760594589890198451174632935240683470271014910895676463819881873", 10); + mpz_set_str(table[18], "7459717927874853609354812503791662414188719623157168180739348789619385438524", 10); + mpz_set_str(table[19], "21683041979439224411228989551115702832981449905206766043676732484497316157439", 10); + mpz_set_str(table[20], "14655609360270071012253902556539172560649588753054340131544939519506919896565", 10); + mpz_set_str(table[21], "17222448550262656329122931157454530350492495528298467166646184661229938452904", 10); + mpz_set_str(table[22], "5041330788509026145429442923080624984391916874029792901702390131473787867001", 10); + mpz_set_str(table[23], "2955018266698320912011470339888350168396459178178175328048428666813785486685", 10); + mpz_set_str(table[24], "19799683165647698954513082267828924865825875119027741571265592171834187183676", 10); + mpz_set_str(table[25], "21023373768363267061196142565244260500502466179273367870776987753388628420870", 10); + mpz_set_str(table[26], "8350728456894184592598529379116822425073724484756766289354946413301154463450", 10); + mpz_set_str(table[27], "20578523138976807775606576448739232605435191461454224553948643677354723328515", 10); + mpz_set_str(table[28], "3151098990900512741475971703578308604851523455076559790455859913596103381918", 10); + mpz_set_str(table[29], "11761276687160601334447629972918073325865398406897957184139044559005155413579", 10); + mpz_set_str(table[30], "18489117266543323541481847481109893515465557367865781971836580256104281213574", 10); + mpz_set_str(table[31], "19510496718399056064005926379365170446484654649297094653473858176478266416059", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=11 +*/ +void EscalarMulWindow_30f60275112a14fe(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "17627115594938429195179382336613067065701186383491157399068114303409652515793", 10); + mpz_set_str(table[3], "14847389619923894435264147753205007668091445330954217588844172431898288723621", 10); + mpz_set_str(table[4], "18357105556253046877119581308403465507755840292169012626540369212280146629667", 10); + mpz_set_str(table[5], "12873298841381326213408571031124043715255674465445800848009931156463734079321", 10); + mpz_set_str(table[6], "14786732146438618816915732831605352525406029376399822999821152429016038065677", 10); + mpz_set_str(table[7], "7079773868070731212606415423727377091003554975557211601330302646724734132376", 10); + mpz_set_str(table[8], "4888886172637015967702976141658643106565919889532813513702009241903659965207", 10); + mpz_set_str(table[9], "17378967528347060604558090883474747331154858402758301159996537758994815086458", 10); + mpz_set_str(table[10], "20380928417561340002494774785395409598013624894673626753616368263830338062811", 10); + mpz_set_str(table[11], "4736868222180854093784865266863657062019824867839134189830422539807722765945", 10); + mpz_set_str(table[12], "6580820316209959065322387305670736372550792870362511042627223737961611968914", 10); + mpz_set_str(table[13], "8257261394353062674744288141060131687298029842108282740770401366912586735943", 10); + mpz_set_str(table[14], "6900561257461657255157040380038967998478934897578378238634071444046012712054", 10); + mpz_set_str(table[15], "3680555849087316553388283566926794773690203220547228818016414082246349408632", 10); + mpz_set_str(table[16], "6416908667669098636758352477123500927705738914217575432735408147513377293392", 10); + mpz_set_str(table[17], "9416392961232970856511939022395117518514111997439749748360281904639088738986", 10); + mpz_set_str(table[18], "5410434850201564027053068952850382811960933426726367582054893626504615034377", 10); + mpz_set_str(table[19], "4161427134091166782127696715129650185185107565289262295394043751697945235880", 10); + mpz_set_str(table[20], "2334308851862124677679577811630033742864849289715909635581625548350969912802", 10); + mpz_set_str(table[21], "6746428787808162792042636218548957144920280607863310324940920677685166022224", 10); + mpz_set_str(table[22], "16260569633406738612759941010437852679549772937941191704089709198039998163438", 10); + mpz_set_str(table[23], "13354874821080404846358196384661515222642992404944068630010192146656138224873", 10); + mpz_set_str(table[24], "14462206154914760578439664376446416846437489597337142196010413746845742204026", 10); + mpz_set_str(table[25], "13954242650774425005389608614406636092810995935497563618610153627975097445182", 10); + mpz_set_str(table[26], "5550442138284530622830485810514012547942937088899737084528778977051454139340", 10); + mpz_set_str(table[27], "6145077197463223854394312952539513415328344246339224476191868207360214610551", 10); + mpz_set_str(table[28], "10389020547018608604495055393317288848540588962096958890414507604514920078931", 10); + mpz_set_str(table[29], "8694427405080668255454008609135263541121080294559982646928745463043868784680", 10); + mpz_set_str(table[30], "12985306307378847369862306598067349386942485263673681772149760278233795329419", 10); + mpz_set_str(table[31], "21073403027239980286155808830364120419256144147695551924288187918777638098919", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=12 +*/ +void EscalarMulWindow_30f60175112a134b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "21406266100294308258976730729951177599093980942246378650460791540693708941131", 10); + mpz_set_str(table[3], "7877274652800816269238646347263909567184367388655766436924422252980333045618", 10); + mpz_set_str(table[4], "11615481393401268470059864848005403970571694721225362784042488749778235712658", 10); + mpz_set_str(table[5], "3892451240021972787440780523987872955074895528179412683730651568924376590154", 10); + mpz_set_str(table[6], "10670351770367089799432708606981514933281302266275209146614306323542227951265", 10); + mpz_set_str(table[7], "16151361929274094631406321569309492990971995061452371432314318111466035411800", 10); + mpz_set_str(table[8], "971553312833100069635523245967082040139883981750223719728956974999153461750", 10); + mpz_set_str(table[9], "17819503667076337826313198244543173919898460743554060676860603589596833585071", 10); + mpz_set_str(table[10], "3334076365622847096896176766506555070707332964911270163700099536790480657002", 10); + mpz_set_str(table[11], "10240153919253132783611893884618698140634837377586426667059076299895274629275", 10); + mpz_set_str(table[12], "1874472046851062748441454248258480987888540756207448372392045595157997967031", 10); + mpz_set_str(table[13], "12623749250356633203162621704515318615499408888863033335863097393105309137346", 10); + mpz_set_str(table[14], "10923369031485894103387217225764276776041423771149617779018011964861807963257", 10); + mpz_set_str(table[15], "12989286730506679179058591222023867789871912881295524380082720429125121399001", 10); + mpz_set_str(table[16], "2259701475232619764070487764536238278026656442243942280453580615306096626784", 10); + mpz_set_str(table[17], "2270915073297799730877739409596975617019163395632138360587195406154729757720", 10); + mpz_set_str(table[18], "5931246686568067150598203862728949815841762350754619266156445272731820862049", 10); + mpz_set_str(table[19], "2584372454573711174225430711030577055896155427813538907344123903582401754710", 10); + mpz_set_str(table[20], "4706443765820575463919610467491484671708524019950265427147260059392528056060", 10); + mpz_set_str(table[21], "8105804904073869871246605349098539176728707679515780264710351822101291262612", 10); + mpz_set_str(table[22], "9504988942174531577732768380019369316966401556152246131994053294359357481258", 10); + mpz_set_str(table[23], "13741856178344801669926506029421641367756342207162345308522239421227959751975", 10); + mpz_set_str(table[24], "15635909652286798856608138413605658644601947115158405338797816160329726917767", 10); + mpz_set_str(table[25], "20565994843560377977021026588522712492302491769380753714341670858782271055601", 10); + mpz_set_str(table[26], "2485555744302745559984328787511065995152022696883174359853534198235130815728", 10); + mpz_set_str(table[27], "3547559827994774535883841123214577229601100974473972921419815981202047984913", 10); + mpz_set_str(table[28], "4336572663118905220511580556495629072580506400568335964359662194164978127635", 10); + mpz_set_str(table[29], "16850767654677508795765516474407725763573565445621584343776097018936049322937", 10); + mpz_set_str(table[30], "8391364532029527605494647034197041450757968270724395432463754556682038202387", 10); + mpz_set_str(table[31], "7602849530096454185676463820713744197395764762299481069276207743451846048145", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=13 +*/ +void EscalarMulWindow_30f60075112a1198(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "20368805382066390855370580938434491491074918181697176632894338461928121607214", 10); + mpz_set_str(table[3], "9305888420984109922714456122057872910251963998922280053693043329647838846628", 10); + mpz_set_str(table[4], "7404068292968618157198434582880753580140834990198991497279561603115321336230", 10); + mpz_set_str(table[5], "21179286622896829509065809684414123082342211115457330515118811077049806883317", 10); + mpz_set_str(table[6], "19998861929298978474819935817716142979949932118713295084224126562309488883020", 10); + mpz_set_str(table[7], "20145584544074078088243347893318728157525463604023122548603248999320476268242", 10); + mpz_set_str(table[8], "3484951936290974462427616792127881882565194255692129296077913077178924835179", 10); + mpz_set_str(table[9], "14653140588116458668599038411359480802821205162175182644547718897819293440567", 10); + mpz_set_str(table[10], "14063943860937746762482104267737218507421082985551240607087617177679617985028", 10); + mpz_set_str(table[11], "21205834481354540639253189314895513963900378283101937204274408112637386069830", 10); + mpz_set_str(table[12], "16376992682315569000437675111256109668877953418381536318545295567221909896846", 10); + mpz_set_str(table[13], "14408122676965443606983288518886959565359086997763539679737749711161703488746", 10); + mpz_set_str(table[14], "19943868845064746733859408068232514306868058771733451929229707867179710797664", 10); + mpz_set_str(table[15], "12352991272806402882113573479537861355899211615650436180038269954862484913117", 10); + mpz_set_str(table[16], "20768002234062516847624694033022815281279994036654504568904215919314125574550", 10); + mpz_set_str(table[17], "17870950160708140918218774096995236584396435709771766987254491539350572805405", 10); + mpz_set_str(table[18], "8809551753159688303358363925218577307429466842675987235222674188593606950133", 10); + mpz_set_str(table[19], "6829367519942241425630805330052799262918261256661070566333445186056095977652", 10); + mpz_set_str(table[20], "9711463575682660875962645157117221168561645375886979821279087890806918052546", 10); + mpz_set_str(table[21], "18935589070402758666848018125933182586601618722901853454083159202877487595528", 10); + mpz_set_str(table[22], "19106240018819167718911888000695134543953338349481683123854636160617692327447", 10); + mpz_set_str(table[23], "14899351520537753896868593114387969511034853308773378152551069228289673108694", 10); + mpz_set_str(table[24], "11379141446085287948551218273681361041890654902705670686517028094240464246736", 10); + mpz_set_str(table[25], "14406337613731341296101221325959392808029227427183610855249750727190627484966", 10); + mpz_set_str(table[26], "13423153512467907698522962681039651632973672835328890143462878470709259059336", 10); + mpz_set_str(table[27], "10019210713131860674029272254365440275349869413646602119861610356584814746485", 10); + mpz_set_str(table[28], "3639244108897444530904619911086283136142931235495285385925604153819779390376", 10); + mpz_set_str(table[29], "14989113416303752241113782414779192489405183329363232144870350846648115482798", 10); + mpz_set_str(table[30], "20881089298624368198833493837440958436619903492184821767522174497167899692619", 10); + mpz_set_str(table[31], "10034734467523739817809464883158758984329476630676417052223762129741901073475", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=14 +*/ +void EscalarMulWindow_30f60775112a1d7d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3844056532212427920703046301582562022630032175143128283603650807154122941613", 10); + mpz_set_str(table[3], "21877205794289052566482628161337444889236310919796139915119554980819389260782", 10); + mpz_set_str(table[4], "17893688271546016078170348994605987377180325229622395472134708071837598302714", 10); + mpz_set_str(table[5], "14904098382911509714605365071605702342786377579792397559134806416858986406785", 10); + mpz_set_str(table[6], "16177490040435399189021404736139388811986219849619929764534466945275821341071", 10); + mpz_set_str(table[7], "4333394866391900781060183319088326500257993299285421761813104597681192754163", 10); + mpz_set_str(table[8], "14657578415571762332382143101312246002767066748229371278719024779186823916520", 10); + mpz_set_str(table[9], "15171875479173719553269418569221875941918818898442123661820384547581727016825", 10); + mpz_set_str(table[10], "19647950007479939863866131939346679992421562775966555217065984179171693890563", 10); + mpz_set_str(table[11], "11782878127232311537752731760261245852279923583794929813087382878149963513014", 10); + mpz_set_str(table[12], "3441033532790589018678662363403135472007949677932474904070531683544627419070", 10); + mpz_set_str(table[13], "13469846744068669554861108717348350395503330478650499144759927007805647748184", 10); + mpz_set_str(table[14], "14626715081540434895546518067319699285670464030490817857044720485732014422920", 10); + mpz_set_str(table[15], "1950666084301315711267821800770230166853323409578564806140780099592266993494", 10); + mpz_set_str(table[16], "11427928641312783957877600621745010825794692249627772592556251426183012414426", 10); + mpz_set_str(table[17], "8356936709467574659019980828919956191045781930222977341869835551813429418243", 10); + mpz_set_str(table[18], "19158337466133685220613707888126478971655900890055588811830854024712172055121", 10); + mpz_set_str(table[19], "5221487166936011794520960314357185967707976634514069063130380892439798575065", 10); + mpz_set_str(table[20], "10457592673590857705289217067399913757235283918017664883176127251246569904774", 10); + mpz_set_str(table[21], "5791410595677392396055922683867905703270175166847811885101398598970173353869", 10); + mpz_set_str(table[22], "16073856972154322218280302345189787414665737456509863650436918481213265854959", 10); + mpz_set_str(table[23], "18314598050973076820060219907610831433069435613362200662126390095926463026235", 10); + mpz_set_str(table[24], "4470672832764532978350328117979898319815131152684006440041545087442103961247", 10); + mpz_set_str(table[25], "146731309361288239543551730428739503162440684257180669767354567768748979090", 10); + mpz_set_str(table[26], "7388823483393338577320754770026785193707290770263907326950021345378471344397", 10); + mpz_set_str(table[27], "18131047975849523420475380521570938050675698736543451318092285583484853073390", 10); + mpz_set_str(table[28], "11193720551724742993487749101268440215654074888739962103006194853354385469098", 10); + mpz_set_str(table[29], "9921307855924728259771710233607299467453926223251637399791119676810341252498", 10); + mpz_set_str(table[30], "14295056121400511697943925860176045689609413144551107265274420628019781029830", 10); + mpz_set_str(table[31], "8304185134807940706187025335577576801973178728643958047877619958886386470686", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=15 +*/ +void EscalarMulWindow_30f60675112a1bca(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "721217074257914107100140684807639099957016760525471162101340773561442251383", 10); + mpz_set_str(table[3], "17242782517449232116567743999802492458301077407392882218473522380645787536271", 10); + mpz_set_str(table[4], "15981258764604595761596000879259240994818506247912237843793448628957842854447", 10); + mpz_set_str(table[5], "18976270096277130835496670882673776922828731305183099774884630211068536294410", 10); + mpz_set_str(table[6], "18376098225559052748920029923891788577590450011386508252238843197622173604178", 10); + mpz_set_str(table[7], "10389285600602703837735373865938509418604546320488006778467587544917522061880", 10); + mpz_set_str(table[8], "20711689519707141129278513110758203179758074069359284578563938472702760357298", 10); + mpz_set_str(table[9], "12197992835568918700329203999156441993065165086377884619886464175032345919228", 10); + mpz_set_str(table[10], "8942864681739369251054493430530570068103067906113373925393672127102143437166", 10); + mpz_set_str(table[11], "10760382932682789106949844893884354776151044858789957326996053386843172000987", 10); + mpz_set_str(table[12], "17995564523066155932217124407782091034505450637692854008036354454394438356249", 10); + mpz_set_str(table[13], "5988184361705254525688027451401460549881776305948368789621019110486915897697", 10); + mpz_set_str(table[14], "19735987513674328628990316582881650010457376110592964132312775640093239593447", 10); + mpz_set_str(table[15], "9629057368942843598698613890045021799675111127101280258524618062557771318167", 10); + mpz_set_str(table[16], "2774967275349449434215202696256804898438555873172884079621359337704721792645", 10); + mpz_set_str(table[17], "9420349657879853095560705082415018643155237910865586486333956937331044558034", 10); + mpz_set_str(table[18], "11999814134263113577061687098855734984543928505436857750509731769547692774730", 10); + mpz_set_str(table[19], "6326851556673180570166466998187161967127115145770552096862788821295236837767", 10); + mpz_set_str(table[20], "39866131788188652661102470510668177320069615445777173435858777329018560298", 10); + mpz_set_str(table[21], "21490271566532096033053529001883327318132907284194270822104550699223148621794", 10); + mpz_set_str(table[22], "7110158795069510612383263547968474377235061769261595253395098187497270670397", 10); + mpz_set_str(table[23], "10358987578026446120623949612328406804253508031482211904406032140382338222927", 10); + mpz_set_str(table[24], "13402471941016528566984852588356140243433801611592215491912023310499638611953", 10); + mpz_set_str(table[25], "18038619467197834557979985155714398191169295737498844489561545563029654754975", 10); + mpz_set_str(table[26], "20927151617394892731664400354901477632314504270018287459747822152297589887801", 10); + mpz_set_str(table[27], "14711458301261027803832796771086150571290410267865524824308423725949065157332", 10); + mpz_set_str(table[28], "5463401788209126425441887183250029747920862060359394502340856758732695552418", 10); + mpz_set_str(table[29], "20871681674724634625298886559017929548969169897579492199281754086681815302782", 10); + mpz_set_str(table[30], "9912205445382706322440231932430192319167874859669573980219539898038983479082", 10); + mpz_set_str(table[31], "17259553928274030489221840568057979270119422844979191173714242336761560841022", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=16 +*/ +void EscalarMulWindow_30f60575112a1a17(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1913500900861768332911157239087603286952255744021671889642956877083114069429", 10); + mpz_set_str(table[3], "19876401017254350503232281977742874562023796967708073124837443712547963772704", 10); + mpz_set_str(table[4], "5851717731928341482912868654142766273028000649203394589049020149573247531152", 10); + mpz_set_str(table[5], "5978322172286146410538060043645839288151380987212527862456647251057896397799", 10); + mpz_set_str(table[6], "20535221395659425720049437624088696986770582561042719099389922087438972381963", 10); + mpz_set_str(table[7], "7077928786465763349233954007627389823549476481845762441056620526561105021571", 10); + mpz_set_str(table[8], "7082785819823920956213867288288784148406676445208335197543237580869900491506", 10); + mpz_set_str(table[9], "13676032632628666471935786134843198563034854324932704593028514517413934832148", 10); + mpz_set_str(table[10], "12786874211172034458850213584578049682232430195839381689748947106663657168986", 10); + mpz_set_str(table[11], "14797410417392742804482079712959254103798439060679634056181197954370609303650", 10); + mpz_set_str(table[12], "15516745738683223230047559437236533911290995348403619716825645261823423690001", 10); + mpz_set_str(table[13], "12189570494815440545175679059338810048960492098209481509602997925669455116177", 10); + mpz_set_str(table[14], "18977401993857562695027053365183794981652229620847991298442203175482901511502", 10); + mpz_set_str(table[15], "12192628695990270720213406216558068662505175586909744583648261436794304030205", 10); + mpz_set_str(table[16], "7491211328817416747712040341211639259996058777757758486768214250111399044214", 10); + mpz_set_str(table[17], "6963264230852014268124266154612502611678628837660436814455072442131615286328", 10); + mpz_set_str(table[18], "12047429844855490666711542141778383755479823080321447926187200749142240778270", 10); + mpz_set_str(table[19], "11001550880238862591536564057480606890913372500934662224671246461292490691820", 10); + mpz_set_str(table[20], "10440269225071198138073625010154713507154569658310609152289577170365368076669", 10); + mpz_set_str(table[21], "12979052836610137269461072854168552717849346983293170636833939820258639253952", 10); + mpz_set_str(table[22], "19239890654112947929800208266453640067356255922371040055070602653444191423951", 10); + mpz_set_str(table[23], "16393054080870528663340858502712547117926214660769236540923857669702028478616", 10); + mpz_set_str(table[24], "21811132758228890861192371115055157235917947229466338080954660235397090047491", 10); + mpz_set_str(table[25], "13168651022883789247160925844463134539203175909511193248668918559400245790820", 10); + mpz_set_str(table[26], "4954571621472247840577376397897892986113493849731017493062980573779240196394", 10); + mpz_set_str(table[27], "1749798675761303006561955754799611115840323550955411937892373131234990455821", 10); + mpz_set_str(table[28], "15194236512196257325247662406152009303089835917586414870437908927614371570221", 10); + mpz_set_str(table[29], "13948949229108262726032415281910066413131216429234419552300756889262069975530", 10); + mpz_set_str(table[30], "17275051633009111686202497394646445602286460612817779437672408933675758336822", 10); + mpz_set_str(table[31], "12858670515109185390260362944194507980012697126666264977080463649072859717350", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=17 +*/ +void EscalarMulWindow_30f60475112a1864(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "19594995906983301063748985241725369583450956835895004338914052583638635627164", 10); + mpz_set_str(table[3], "1215926295609961973178802978113691920943873917262364276571043975844415457430", 10); + mpz_set_str(table[4], "13680120615873646905650649888531871229798680314077975001067764279138301255170", 10); + mpz_set_str(table[5], "11679802772801722271436715434001794526376017110703065066984418622148645644956", 10); + mpz_set_str(table[6], "10979341915399951902015740939032822672146819278824531018643131652140288301014", 10); + mpz_set_str(table[7], "1128938794460156739510087831546869613949458523857798147843037676969390757351", 10); + mpz_set_str(table[8], "11417207654213566428955165125420223686697634423476353113856821345932148839235", 10); + mpz_set_str(table[9], "16278369531341485179310531056709836675509247861314440168008253344879884622292", 10); + mpz_set_str(table[10], "3842058238648774272238521575505241866464319169346817482244543193037967028760", 10); + mpz_set_str(table[11], "3297152180148393601281244619939566700761905977752254247032865834216164249633", 10); + mpz_set_str(table[12], "6622319412290027253342527106910935087791237950656104822721750678439517675406", 10); + mpz_set_str(table[13], "15563695601006071611759800106851924305036436829892750897739422951169473619064", 10); + mpz_set_str(table[14], "13181292919259972556639906356936058589088713465328052485058387976053610631205", 10); + mpz_set_str(table[15], "14174612766848311804555439182245136066229960363804901703871692885589716060136", 10); + mpz_set_str(table[16], "4645281581656015420496872130733244385398168466053036517895585842477585275046", 10); + mpz_set_str(table[17], "13388788866872323911338081882407812293216974521297840117861305370240861450202", 10); + mpz_set_str(table[18], "14470418013964966588478796047499059679730950423852084824042591416726242049103", 10); + mpz_set_str(table[19], "8938922412156439011269335829350772999604734675059561786733499345430884870141", 10); + mpz_set_str(table[20], "16583034467503919351009794659923551003482985068407670237504367831689061026399", 10); + mpz_set_str(table[21], "17934564505102549601406759185519121191350998174279713908964549014457346634418", 10); + mpz_set_str(table[22], "9757564301640443893855110905957625113894277082326684304241516512016467769317", 10); + mpz_set_str(table[23], "1093003292740088586535614873398893844131165201691264454713623619356501401576", 10); + mpz_set_str(table[24], "8930760743322516729352183604104888944268770368876484262273427713783535096417", 10); + mpz_set_str(table[25], "20500788111863716898655373359941603247264827808933928063053854053889433887379", 10); + mpz_set_str(table[26], "10325948559242230564505513451041474024150507149775113688462798028112759671639", 10); + mpz_set_str(table[27], "9949134148849891248980728887476154503418473274459477620459454445566430549900", 10); + mpz_set_str(table[28], "20850470589696115423944426649995762350480503676215236066076175833293126852226", 10); + mpz_set_str(table[29], "9293707378443556729889633647170741445487948735283158363104714873453960261067", 10); + mpz_set_str(table[30], "11506234994915917043079338431936472606095366999874655172862180702208431556136", 10); + mpz_set_str(table[31], "14452161014730982463939118536942796797787085687047964584245086072370846008969", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=18 +*/ +void EscalarMulWindow_30f5fb75112a0919(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6312691792654410014356584427505264977044214785648879812260067443628814317724", 10); + mpz_set_str(table[3], "14257925555696485109423282223628644381907477878338453236945302381542539693152", 10); + mpz_set_str(table[4], "9079855899544673861069508683438599865287170526888623417575853179100155587421", 10); + mpz_set_str(table[5], "11747099952471887487349670583465838854694154132732966946339929820424060581377", 10); + mpz_set_str(table[6], "9926724767750502267020902031535358250941316922597501328671254928568059868630", 10); + mpz_set_str(table[7], "16821600372089473903171410123072432537192155752776540175307336066638097521527", 10); + mpz_set_str(table[8], "20635293817545174956276452235916453375967085766837594079701573806032274758259", 10); + mpz_set_str(table[9], "4912512049743211176965763421180046617710732578108083267821221661055177237077", 10); + mpz_set_str(table[10], "411881382991356540105861938156871419405153744365905334631688028442348430985", 10); + mpz_set_str(table[11], "16685015024012304642411668463502135734825976961116232386538435049054789575302", 10); + mpz_set_str(table[12], "1951368980472136932441687347664445891023675565835050146789421909805631371664", 10); + mpz_set_str(table[13], "11287114984404015098124177901222091172812420835823247131199502060618186952166", 10); + mpz_set_str(table[14], "7379533608810983364793672738582799910029031891543571041761107517310222208247", 10); + mpz_set_str(table[15], "13399612413165157758299296827409143706312891775899559638036270942734074449125", 10); + mpz_set_str(table[16], "18097381858740678293457614181919174232176469414874575520697469909514241939024", 10); + mpz_set_str(table[17], "4107614292008565637389179637150907090647271061483538027207486281498506071181", 10); + mpz_set_str(table[18], "4221029787515199874482585115454809564764913719164280506998326392946531091406", 10); + mpz_set_str(table[19], "14511565058221721785867308497857644761994783433805802129049163115945538912592", 10); + mpz_set_str(table[20], "19064616081847131050486902726890211463823604737876917751141851582206688823476", 10); + mpz_set_str(table[21], "19305785521020881025809325975238987523250715355720440618753131635790623862637", 10); + mpz_set_str(table[22], "376690769678970312884173363533987470085698535644652464378932502831219098675", 10); + mpz_set_str(table[23], "16151158210729365941379101185138578882120207316093416865384627786060577519384", 10); + mpz_set_str(table[24], "9655130494952168107489622636324264807869329354706619831758200785766793900079", 10); + mpz_set_str(table[25], "7370791930939716916060570360405414357961437265044872294872661183828871809853", 10); + mpz_set_str(table[26], "3016083093942985489664330590280047850941630624344213776449594114695748088177", 10); + mpz_set_str(table[27], "7765665938575600052803917765104035735372754858663990184054196680089365942590", 10); + mpz_set_str(table[28], "15470796451743826076048680783482800062356759951872837242126968785576660484350", 10); + mpz_set_str(table[29], "19958584304795888531136879277811447884659833674189844715246657205418972745951", 10); + mpz_set_str(table[30], "16847736027160059327449442740261749558110983384879238269268369148426541523474", 10); + mpz_set_str(table[31], "1251494417790554898599828925225568659390027683346363434077305463639243757815", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=19 +*/ +void EscalarMulWindow_30f5fa75112a0766(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16024328474586947999611988875348946173769472036103591071171010693036953749882", 10); + mpz_set_str(table[3], "14804393272372404339223772478958155444344906573584470867273131626842614791709", 10); + mpz_set_str(table[4], "12857876610230464978090922315137262766681813308210186686850822801120713042222", 10); + mpz_set_str(table[5], "3247332889965250299312120890147769864465763934114581644953310832723221077803", 10); + mpz_set_str(table[6], "16898705825298281918704104770508760031527789951463785171503746175337535048133", 10); + mpz_set_str(table[7], "21815927779766092718524650336576226579386983974765968777957031184689301958562", 10); + mpz_set_str(table[8], "10701407951495212600430556383163409810000064362417862698723957609796722336721", 10); + mpz_set_str(table[9], "7176521326774182157375178200505594559054306816407906142496519114416733417342", 10); + mpz_set_str(table[10], "333269565591390435197441758316480870496579282972568545691789378188159824667", 10); + mpz_set_str(table[11], "5199589019041858328871803300018773262561078507262706594207140034975230303145", 10); + mpz_set_str(table[12], "10516815997468347512537054395380614545597570585858291154960022194234124710351", 10); + mpz_set_str(table[13], "2048124309430691116008666427834801945157825307803403795457429483351015155636", 10); + mpz_set_str(table[14], "18690417672678854397740824950928189266055128193633461621611287620583691760321", 10); + mpz_set_str(table[15], "2446811724965007992072151991861273401256883982688281531647525698649870761078", 10); + mpz_set_str(table[16], "14821863823323946577374892806028294227521384354570837403340745793076906345558", 10); + mpz_set_str(table[17], "619240785714923214300645397387303846390803870555274780165010159255081256316", 10); + mpz_set_str(table[18], "11485729906478279574997551638314736978988040244366203958886090316590751316382", 10); + mpz_set_str(table[19], "16600379123070912488186112703435760500453896619638580888431101168947106705492", 10); + mpz_set_str(table[20], "18248163225478284815146399711977062170631805024513029272097954384197990820575", 10); + mpz_set_str(table[21], "10659581067441546915398469751082277830577415802047918311604800899713014482734", 10); + mpz_set_str(table[22], "14315930221655012114211898105875258610186864391549293271105393462053664769062", 10); + mpz_set_str(table[23], "5679132383932568258755662162149376656569182143003535773492313140031994313805", 10); + mpz_set_str(table[24], "11543502507334990425086613340677553055976693329024911597346637517571390158486", 10); + mpz_set_str(table[25], "14798308302648391302770513124948365007394138440918360659792027734739574565869", 10); + mpz_set_str(table[26], "1487766650306908933818473941850707071632336735476231622012126976637739047447", 10); + mpz_set_str(table[27], "11298947007704343658754760564239480618021487917411498140725111966031220893952", 10); + mpz_set_str(table[28], "9164260540245701665838272155536219856760847523580314432921627904333083890874", 10); + mpz_set_str(table[29], "9092714875731577526320815891085122357436278777755936510851467613253498176317", 10); + mpz_set_str(table[30], "8273543818606827310097635470019493027806998802204368651946249099141570851357", 10); + mpz_set_str(table[31], "2163918904986580293654793921161885771685405590890203258794630196802340879703", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=20 +*/ +void EscalarMulWindow_30f98975112d303a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11871910977766011920816446486193798660236707342995853240375904231743537384545", 10); + mpz_set_str(table[3], "20610729299430050079792204347236370479584886256516728887654325759969428749992", 10); + mpz_set_str(table[4], "12743408662495222566043613262112858144256560935017760327010736246602467483150", 10); + mpz_set_str(table[5], "15109594273298918588496489411453054924243392341715251778972968998817996670976", 10); + mpz_set_str(table[6], "8364253619238265287093721128966366839136151230988171559073649474924325892283", 10); + mpz_set_str(table[7], "20482254094781082458674634090947182311369429166318189152327777124129197709799", 10); + mpz_set_str(table[8], "10426449090815715511224288225972409509029474523185138171661344283795593528493", 10); + mpz_set_str(table[9], "7688172378779668062431456499435160122201857961488517507867699727181649285542", 10); + mpz_set_str(table[10], "3535022249268712716533933991521277190534770993956537738111480727521692421369", 10); + mpz_set_str(table[11], "1387504752830526797534019238803226253679518461854437882827172927398412402241", 10); + mpz_set_str(table[12], "1770886290973271430448702507085389379708580440175685725865682000286144054921", 10); + mpz_set_str(table[13], "13938484618349633976307001401715686809066297255822233088273265831677670592590", 10); + mpz_set_str(table[14], "21568045811883255107493207009765098238025569043887973536517665254603242410463", 10); + mpz_set_str(table[15], "12592503904667875325696849610942428306884878626915198015291521427077539935050", 10); + mpz_set_str(table[16], "20085879247533524852915230842067917206291281085409167265008801473472623288259", 10); + mpz_set_str(table[17], "17082834473878800143327371165752294000524688389488657738457095895646273532410", 10); + mpz_set_str(table[18], "162805608641097611943173908492645526726393233820160727579296793201335141443", 10); + mpz_set_str(table[19], "17930557892852251117344484797102053647425658327367869735802499830644751386948", 10); + mpz_set_str(table[20], "8895040019136530246546768084556005378225652704224561726912998112993001940621", 10); + mpz_set_str(table[21], "304810220126773818358033943987674731074621073326382052314251057666437827534", 10); + mpz_set_str(table[22], "13881362926924868911557664853185935136616926367643420556905353290969974903261", 10); + mpz_set_str(table[23], "5844943467023006897102673813891533696702422550619010185061788845546876544157", 10); + mpz_set_str(table[24], "7284848380542271764984948800937414715881481529004299411394698828286305780999", 10); + mpz_set_str(table[25], "14171211339959572027783817872063839937865396706527929051135006988414673198455", 10); + mpz_set_str(table[26], "14624103983407750565393878866397037565434063047288702251393226821417460421138", 10); + mpz_set_str(table[27], "12612129695092601447110574817896214165270559690588762966998288185584433697549", 10); + mpz_set_str(table[28], "15678697525169812515100103406782477338793583121700799975646759374433614726590", 10); + mpz_set_str(table[29], "7137975458748802650528734903352815685012077027463958390027464999721739251010", 10); + mpz_set_str(table[30], "9510266114532705029865351760321295213764735907899118936713480742401105769355", 10); + mpz_set_str(table[31], "20978530220498792094619180962465611954416505118239102547242363138293931909862", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=21 +*/ +void EscalarMulWindow_30f98a75112d31ed(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1657406379595848394476612640280471112641524820143272573499212019562410269228", 10); + mpz_set_str(table[3], "7269701504674841275797546967798812590777834664593211185470037358128039066150", 10); + mpz_set_str(table[4], "2522095723368487799543210821017645805640839982823331467357211528983126163635", 10); + mpz_set_str(table[5], "283540280262695966072349740890322027947881039799814425276881426986608381276", 10); + mpz_set_str(table[6], "2206314138608150882414675237398151544938853291550184067655468168974724266837", 10); + mpz_set_str(table[7], "20984927715688518935268761282802045165863979162597459301076271411420234828448", 10); + mpz_set_str(table[8], "19343098100954012908816225672139684513498357300288819758321925224043062620888", 10); + mpz_set_str(table[9], "5575925556738783202828978240293092221632041119313664173212505953117674853298", 10); + mpz_set_str(table[10], "17858528780853536480056389171368321208808476539575439869382653842929896909290", 10); + mpz_set_str(table[11], "21661360577003584128057528691802403264462234581125644757957689351632092412741", 10); + mpz_set_str(table[12], "16320678953064781254200232266144625188049051402359399385707486576820311075894", 10); + mpz_set_str(table[13], "19324301573467876621692346465139232045375933590077918835384591065976014653506", 10); + mpz_set_str(table[14], "5987610433294785509028905998282110917708617640779221522032358626774257498886", 10); + mpz_set_str(table[15], "13399879126657318041120438257417680411882232100717116037434801386481407400300", 10); + mpz_set_str(table[16], "12369477960734113722864525078582608852370018094061204027942627890135194989507", 10); + mpz_set_str(table[17], "16163964964586340502481422808875676121087522897744995566259880919753966403255", 10); + mpz_set_str(table[18], "7702736120303126921093930726352040212433766821508419429985047441722093406459", 10); + mpz_set_str(table[19], "7246729385887108740283006671788539249190688392859887641307405934690350862577", 10); + mpz_set_str(table[20], "9997451569095438210177601601525789878145195348412680318050593528279544009529", 10); + mpz_set_str(table[21], "13351799380672813272888481361747277406291715908203649317072459470209053368711", 10); + mpz_set_str(table[22], "1773897381344651665913655357422475866587266783466742549897693688802771343421", 10); + mpz_set_str(table[23], "16651208206485722403868841705688598251975239805372694434227088716692944444481", 10); + mpz_set_str(table[24], "18591812731898475944754561232540921618539098719009219952834750606364012015190", 10); + mpz_set_str(table[25], "10306739583439085894427119905905060738766163649788668995725228423619188185612", 10); + mpz_set_str(table[26], "66865139241574800688241507800546546981627984204164258513766123417387927304", 10); + mpz_set_str(table[27], "3117005704251728314121265949438172590029403373829696135299072995521493558348", 10); + mpz_set_str(table[28], "10903684612539203130543164951218570964354821403206799855909881481322430524323", 10); + mpz_set_str(table[29], "11250101561961297773106005143622245961912412345371816081877043479955953346628", 10); + mpz_set_str(table[30], "3017567837262857273430893285918339032720677356685745383331534986484636098824", 10); + mpz_set_str(table[31], "13931080935868505516190704666941022660207581072746676055655987494700835702500", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=22 +*/ +void EscalarMulWindow_30f98775112d2cd4(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8938286554228544146174935118066197962621531067129841012707772022867703925656", 10); + mpz_set_str(table[3], "16233020724865011658897065342314816850087702885764903183418504396595757282796", 10); + mpz_set_str(table[4], "17788068487178949472006556212688526701488695761204073382019553632867906404471", 10); + mpz_set_str(table[5], "16127823313341081822494850404375536033371699056428971183012507006102307142724", 10); + mpz_set_str(table[6], "7948203346355397426642285862907539603341349107055405573959944605644158516483", 10); + mpz_set_str(table[7], "8080213050870144724053705109131048654207107135303024810751701147314122163095", 10); + mpz_set_str(table[8], "18836461869410204095776934792761344149932025549217744071005539527374774323825", 10); + mpz_set_str(table[9], "12315930453124844529601426229511916040567059674397790856441547364639703358972", 10); + mpz_set_str(table[10], "3029948802756980831465293146155474995008293938711435950379966727706069635762", 10); + mpz_set_str(table[11], "2944047328882151696646146625857522138088586878532553112277573706430775555923", 10); + mpz_set_str(table[12], "7815175266657454899435707666016439832467810014589047829774355489631055479999", 10); + mpz_set_str(table[13], "11629199560086524860014784100414914941795896042889055009567211943676511945534", 10); + mpz_set_str(table[14], "10519107830389173260209669111202520869112033340766308966162199232932204008760", 10); + mpz_set_str(table[15], "3349072061895510743669030860598071540301046000284489791093666441232995490719", 10); + mpz_set_str(table[16], "948647253672758531039400549045346962380493520135840196438186054536313762207", 10); + mpz_set_str(table[17], "5908157674977132846928879199200097245110988008169599585576289810904461575283", 10); + mpz_set_str(table[18], "6132113203588582802605376911284386888805675076281066403330188057478812664670", 10); + mpz_set_str(table[19], "5791746634565285768667366278586496582595773914053660965247267572566412696438", 10); + mpz_set_str(table[20], "3948773953617608699058534644888624079818068151195158354586293074525410857468", 10); + mpz_set_str(table[21], "19223719972167441778565866926185469055297450189080365071437879239145618219437", 10); + mpz_set_str(table[22], "12132707777982746548697633357326379720282056794417855398812617690240981551293", 10); + mpz_set_str(table[23], "19465949072370867974351436131596063077818116674756009467101720357829304842337", 10); + mpz_set_str(table[24], "5298087154254600484339094370964794453930884675470785449137720155759701701915", 10); + mpz_set_str(table[25], "19600464238075802945841709619847491003915314667447648486383883532650301385905", 10); + mpz_set_str(table[26], "14526748173817800035403447828412143706207316815744540568528424322830936932156", 10); + mpz_set_str(table[27], "16857568697177571714302557842839799449943735879679994945877666330612655709946", 10); + mpz_set_str(table[28], "21734912970121745461521746184343777601371401538618983309688539060671085007786", 10); + mpz_set_str(table[29], "15742219086869357379751660262698195198917852623576290180440862264694005230805", 10); + mpz_set_str(table[30], "16610229120622117630467987686045935340065838046536073783473224818312109568048", 10); + mpz_set_str(table[31], "21535954724639585890498135657808861681506922170820158374602576078046700022327", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=23 +*/ +void EscalarMulWindow_30f98875112d2e87(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16886994305634169491329382843745060260876647438360602332861303996590301095317", 10); + mpz_set_str(table[3], "19250152014385373544010314183948997304888234702318488490522676401039395968569", 10); + mpz_set_str(table[4], "17348733161769620800993755373018881827359741360278490192493625108023310313005", 10); + mpz_set_str(table[5], "566695140367669402799518632199180306904869215200693423271786676840857351418", 10); + mpz_set_str(table[6], "10011121525544874366823344442710893674598724456123612639127203752984561101245", 10); + mpz_set_str(table[7], "12822585595886475793229925464144800427103669072661114110462131694510350506756", 10); + mpz_set_str(table[8], "4810116193624143216372416270879924446821266077828181869947761973544863556447", 10); + mpz_set_str(table[9], "8901164482855600833225393252685999670084599049275103956788506461858717745436", 10); + mpz_set_str(table[10], "17738210631035045198519955933959421153574146216760401345098167567456148219983", 10); + mpz_set_str(table[11], "6355934390837858571738191002333087271151726768713129603750052662255719616301", 10); + mpz_set_str(table[12], "12327093588058526023186553363417411525848176175949896342833033556038504600108", 10); + mpz_set_str(table[13], "10387209597466117079658421782540272896953611723709561546014772942788616514493", 10); + mpz_set_str(table[14], "681189354661002842486325655070556888949946844914894710558126018544873804495", 10); + mpz_set_str(table[15], "3292729181740647935866069504140338838656413434052167584402974052265364076067", 10); + mpz_set_str(table[16], "884407658173462867707739747812316370597774974095310269108423966433523338214", 10); + mpz_set_str(table[17], "6631500605196071713360916843241530345980308116925055602412667675904333328047", 10); + mpz_set_str(table[18], "12895559277116358670393871006584256920318562245049632307173471875036554324380", 10); + mpz_set_str(table[19], "5266555174963538377088254254983126561217442326737171095750495435048658572008", 10); + mpz_set_str(table[20], "16453452136317035072976017859508381181391210628785959531993473624257016920655", 10); + mpz_set_str(table[21], "16233020881582916387489818050708881660773449794558891116253150211883171512627", 10); + mpz_set_str(table[22], "2214298418432911450877366160053598422776005617941477197409719429895490749313", 10); + mpz_set_str(table[23], "10619594699481593658385194554202011558252256471897737016523149811293375017143", 10); + mpz_set_str(table[24], "17111311272140931254336753418244566427726060210805880894176936586680034335847", 10); + mpz_set_str(table[25], "10832490761061448355368226289461614460683336133692788303269139762891913675338", 10); + mpz_set_str(table[26], "14928129153639517483007862678341151531398692576966576849558881263843602003142", 10); + mpz_set_str(table[27], "20804857761515056467665872261996549551629057953876899865669315504410310020540", 10); + mpz_set_str(table[28], "7620128762372510243048687904753925795503011437667518065325007685839124990696", 10); + mpz_set_str(table[29], "3144480052518069195168964581895685908673227030208117340578509893804277989058", 10); + mpz_set_str(table[30], "7153364527791398877534600405380198967008476027992188794322651254312458064820", 10); + mpz_set_str(table[31], "5126598118313026584086237094809207967961753105693665923628898103484617383485", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=24 +*/ +void EscalarMulWindow_30f98575112d296e(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "16694195795086647676823073440701246940590151342078097593569860395387801713056", 10); + mpz_set_str(table[3], "21042732401434488602885524826509480564908913891394226911717810672499997691958", 10); + mpz_set_str(table[4], "19745794372137894058717114809420748629022981940443635955473162754169833423176", 10); + mpz_set_str(table[5], "14338710793499834162343259671863053663870643524143306094522211743283709136960", 10); + mpz_set_str(table[6], "339984129173005990960719816761321689854778678424875871156559477809462465312", 10); + mpz_set_str(table[7], "9124928033278255101446464040294186305463859914450541160651606007781619940387", 10); + mpz_set_str(table[8], "2168266796245250286159186074165543421467500777809443939109000224182889430893", 10); + mpz_set_str(table[9], "3441078344864070848632550732770580026115294752485213716512724906069694488486", 10); + mpz_set_str(table[10], "1493260518513853893229779119542136985955042766621854665561168308934004658851", 10); + mpz_set_str(table[11], "4400345835784246869449841131885449175502280644324923727128668852065671273712", 10); + mpz_set_str(table[12], "15886539512018213846379225042539892406579078803170759416753209026065188419846", 10); + mpz_set_str(table[13], "2685522315309179508150991601560665057484052528357986614755363211324866652473", 10); + mpz_set_str(table[14], "6779363514708510951323630552381214572184033336794324206850950609719007741831", 10); + mpz_set_str(table[15], "3476582231055339891079923575515358265505372330803145828382028844066335144378", 10); + mpz_set_str(table[16], "10656096844085735648374301047353248034850599163371495258913334220183478166651", 10); + mpz_set_str(table[17], "14106589807801597672428866674639821483580192658118511653401933109252642581523", 10); + mpz_set_str(table[18], "5004475779566685906785640118550002890090717216385240183795874024788870946311", 10); + mpz_set_str(table[19], "10419370529046765623365738215440453217584429464100071338939925019678842078822", 10); + mpz_set_str(table[20], "10336501697695314588196663003291160100745276268174331804207284273201428394814", 10); + mpz_set_str(table[21], "5785121510067001864477010442645844382309677096275390507341329000934758573714", 10); + mpz_set_str(table[22], "15053468887365182256447919890301502365510975286187232746304324776846541239645", 10); + mpz_set_str(table[23], "8732911777561606780736610118910609024225648561175056887433316116595810867762", 10); + mpz_set_str(table[24], "465346489098734692854243749707678817146467084966205136195449859225552315630", 10); + mpz_set_str(table[25], "7632494447498524328529815941609473690869659423775247896505032181856203182747", 10); + mpz_set_str(table[26], "7530090173441699779360140039443597652430714325702091148902767068479566086867", 10); + mpz_set_str(table[27], "1295443075220899591122459835116278754819540595920213653782903313209194134801", 10); + mpz_set_str(table[28], "12296846927293714987730519199541309508371464058256920091278949142746723077868", 10); + mpz_set_str(table[29], "9280868073148734438653663128808684732571066657428860076459323623560138390373", 10); + mpz_set_str(table[30], "20936814290823712726931303619416653496113136456166980896723016053455263449841", 10); + mpz_set_str(table[31], "7687573233093777724968213349093466368789568595880736939375028446624143877585", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=25 +*/ +void EscalarMulWindow_30f98675112d2b21(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "20638489285721343548835406715942596990186717728852189596544615969306326199053", 10); + mpz_set_str(table[3], "11980292799209025585575100148014064392077760232810301570603613473161508752625", 10); + mpz_set_str(table[4], "15204524559937459669833130174147881699779560143735896339343742777273008882845", 10); + mpz_set_str(table[5], "6347972627628880648457437280880718837105068783834368659339960556659959037238", 10); + mpz_set_str(table[6], "9454910167271163466457863082739106591593364752835931575465360136478676303109", 10); + mpz_set_str(table[7], "8284070525768906887649040215529116045650091430710060580172323139823433102105", 10); + mpz_set_str(table[8], "21257880961348486870031614468363075992624238095842490153257760752156215146870", 10); + mpz_set_str(table[9], "19081752576048636033140717176630459150723955930477244767892967769990202777209", 10); + mpz_set_str(table[10], "19799882984479127618851957820474864597614017929106633491303381346509094749217", 10); + mpz_set_str(table[11], "18295534979203170290529170909512306929796477401339054788027762611251318828778", 10); + mpz_set_str(table[12], "8489094773386028708188117663829022174118289111227349887308356430178601722256", 10); + mpz_set_str(table[13], "13521649091624792019529980310831332673924030620201197023886404052013769337654", 10); + mpz_set_str(table[14], "19010516319176201473351370765147767482645406385283197234739994237419779438382", 10); + mpz_set_str(table[15], "10681444071729457066598032919326028826229204961551437861644323516076601123286", 10); + mpz_set_str(table[16], "2466896380362479074903392071423591601055117479050723379361102734305113922610", 10); + mpz_set_str(table[17], "17942903488791174525324015393812730961936787908237354767773785327672375573711", 10); + mpz_set_str(table[18], "8313783718047170482383627445554249897053219230092946550865762751302761288359", 10); + mpz_set_str(table[19], "7250418774092933181048334601143091068669292067709306070023667173282232403808", 10); + mpz_set_str(table[20], "11615604215872648010815918033282678390952292003382158719975297945858900155959", 10); + mpz_set_str(table[21], "14108403057609050183154012551849013256246047626755611930392079859169634912188", 10); + mpz_set_str(table[22], "1578836860460898409060182496957239769363827918125416661411143888666243025337", 10); + mpz_set_str(table[23], "15000167670829301804763981714875065187060031143442756922383316390873526860394", 10); + mpz_set_str(table[24], "11482503422833907981771550037048833385907788997983304192490373426062119963256", 10); + mpz_set_str(table[25], "6501562379367658717658491112300898739651450911953892433603844825954683620474", 10); + mpz_set_str(table[26], "261929079713361218410337489092528801259709142980821954721181922016467164680", 10); + mpz_set_str(table[27], "21002021782216039507687100651552341588383791163695173808500741490726033204575", 10); + mpz_set_str(table[28], "15120425408795136073283404278319627873859948943823120385369903930352912567116", 10); + mpz_set_str(table[29], "21480238371424269393281398068940579951009033537187968076488593944760889080945", 10); + mpz_set_str(table[30], "1040436079148496124865240568265769920647967515136801643515213190597054722054", 10); + mpz_set_str(table[31], "18963160064156271117139977258761659314946244364217817561984816810650200872938", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=26 +*/ +void EscalarMulWindow_30f98375112d2608(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1777014253974620429558459032714355400263370941019998279285407112515496689235", 10); + mpz_set_str(table[3], "15644522334423526434436134660844621025694146030175232929604459886769792353379", 10); + mpz_set_str(table[4], "3886331634315699257224697786768363604071022420289603105610543476653443372141", 10); + mpz_set_str(table[5], "11314623594716146207579423020470708648388230389361362735126578715063111390278", 10); + mpz_set_str(table[6], "18335295164107120900298251905170480911224919782217038131574152108306060857690", 10); + mpz_set_str(table[7], "13870107112372425460914690729063408413728273922057831466505049807973228266329", 10); + mpz_set_str(table[8], "609961927036422336466232414334651368961526925588196470605572440362401903104", 10); + mpz_set_str(table[9], "18978562237785208487472664105738761110727184080820755471844339969870706932382", 10); + mpz_set_str(table[10], "8817581160502090343281687771602370729661202819998983990797384764392972772261", 10); + mpz_set_str(table[11], "8681768054391330955879937183317596621669141757043363580614074800765220922638", 10); + mpz_set_str(table[12], "19532832519073722277306963027485426797414278966746032274116708652891247479183", 10); + mpz_set_str(table[13], "20673359596006100817996841961385435641277265900496452772769751875783581455940", 10); + mpz_set_str(table[14], "12215284774589410915026224396508337539765754376113139999543228590868166981551", 10); + mpz_set_str(table[15], "5349672598740934656252787190781796199266073013719486237893890048942308590593", 10); + mpz_set_str(table[16], "3222661655264230573451160235037631538563129448264614884211686648251604339218", 10); + mpz_set_str(table[17], "6644122830260404798475405906907894849596449599442847076109290430261580402804", 10); + mpz_set_str(table[18], "20674670242625891598644463998190733382166022642039066566767672350533210200181", 10); + mpz_set_str(table[19], "17547352803267197949188417346341441959599227579681607949038141791287711630089", 10); + mpz_set_str(table[20], "8501992178040297311784650719781596406145220750586901978520061537215748155846", 10); + mpz_set_str(table[21], "1033934366236880584021829977720882839344175611598951718377606827450418761074", 10); + mpz_set_str(table[22], "6629891778698738554366860564373469150768326636854977945327031020432536027351", 10); + mpz_set_str(table[23], "15991818398563302422071450355550838972682659241520123643935879409630034616684", 10); + mpz_set_str(table[24], "11520058998982033597283580076322921220778977767224586070757457038709854923045", 10); + mpz_set_str(table[25], "21787323966328349873072190136337768755380454447882078877586516663340458345296", 10); + mpz_set_str(table[26], "9218379069503935490797126970013730953602439164801672418344584790476649859707", 10); + mpz_set_str(table[27], "14860625766189910741376616275620794379181669078375321593192439912242667323144", 10); + mpz_set_str(table[28], "5429219372767594600695373756014663252902611042107910196534062669589834547398", 10); + mpz_set_str(table[29], "11388805626760710383589685776945849075154050041321557687035260662259978688506", 10); + mpz_set_str(table[30], "13657023395190403407491147603141806909952435861945773206868053993743013765937", 10); + mpz_set_str(table[31], "17420185578628934498201206341811283612571453380544875542335760816138673576209", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=27 +*/ +void EscalarMulWindow_30f98475112d27bb(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18064680232343661410084520978918241848925411622320795244845148572863303526672", 10); + mpz_set_str(table[3], "3129477399317235225089050822276657733172458813838499693454702048664329637872", 10); + mpz_set_str(table[4], "1915873910603542325344037869436587379196657968439769650876805482903947726062", 10); + mpz_set_str(table[5], "1710089766210076649934415138488175432756239287286100986488334712165077966260", 10); + mpz_set_str(table[6], "11419588095705940172793401648405121838217909031807728022871176470684341944853", 10); + mpz_set_str(table[7], "19772220035770123897190852625954845688624431847731967062053851190052170998927", 10); + mpz_set_str(table[8], "12734818558013668561780768522805283155882116093826225873128522245041721171789", 10); + mpz_set_str(table[9], "1710340367577224186069277555219791941680656114773959974999082059756200926587", 10); + mpz_set_str(table[10], "19014114461447694975008934073621144481369527806987337136388671720496665518991", 10); + mpz_set_str(table[11], "12229458491563389647571272019395654127077520925033144650364877699841042845307", 10); + mpz_set_str(table[12], "7466662369786045837069705032767588282318351353857802530388462887764349615715", 10); + mpz_set_str(table[13], "11492793391701044579497562966917572884883058770494470661332046656891126972569", 10); + mpz_set_str(table[14], "20791164040771894102731291226901830105499772911835736318506038457125027880572", 10); + mpz_set_str(table[15], "6971133768281348446537241889728164688130773753897758867942572023258664100171", 10); + mpz_set_str(table[16], "7459496263286980566528366127976868255821604117050061961735223728840039489556", 10); + mpz_set_str(table[17], "17806588649177458693229845080877081795064171369683173826688595311959567985897", 10); + mpz_set_str(table[18], "11585532545705536953877249594093137001050343946717448352961430190264483925402", 10); + mpz_set_str(table[19], "19982512193652683607242346956334217196827775074613261510923071976996191269762", 10); + mpz_set_str(table[20], "15579702851812127894189575215319081322826804705013506301123970210537584850302", 10); + mpz_set_str(table[21], "3418188991987560811919718785447846911810548711238688481876114269665391980769", 10); + mpz_set_str(table[22], "5703794193468948792031359712163085063600850733809748935932617792165374857903", 10); + mpz_set_str(table[23], "5195030959126764288167771101245597533500758291334991781545411006759702015266", 10); + mpz_set_str(table[24], "16277058597385314227987788233527851157223433550564325183661488644276368816347", 10); + mpz_set_str(table[25], "12543117151526615133293331613640311066954196812050214272232133573347836644662", 10); + mpz_set_str(table[26], "12861690469934293198572395506156222103882364040500023882764787334693068247564", 10); + mpz_set_str(table[27], "9969342024557129536312218347164119919502699260068320956280512845254898172853", 10); + mpz_set_str(table[28], "2596007813520927095981603378539633083423201517237110566575854218755675137335", 10); + mpz_set_str(table[29], "21283498480219426476354808250748679019692674473173909804203735085500521712714", 10); + mpz_set_str(table[30], "15916327454541284794004152263717048144542509881241878926988699269425338262520", 10); + mpz_set_str(table[31], "2925233824526413092913617765675468817898009901490945263220160556285670744600", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=28 +*/ +void EscalarMulWindow_30f98175112d22a2(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15187837374949511937701099621526261653017815610530781612551683012480593026060", 10); + mpz_set_str(table[3], "2145304950527938858075313596992545420094986199499298487018798696755786101860", 10); + mpz_set_str(table[4], "14516041837947643228505370886377097735288217805106565411522074117910854668605", 10); + mpz_set_str(table[5], "18801756891511955972633459737831576667521120192567956257176754597389680269893", 10); + mpz_set_str(table[6], "8619864389822707243827106338304479608555074884689635535180138599565637039146", 10); + mpz_set_str(table[7], "4254878146021253820483247745753798490236286129771746676467235363946168465424", 10); + mpz_set_str(table[8], "19687149588354229712126853048017720022532871397224450431538859357788219120045", 10); + mpz_set_str(table[9], "13364286509683319141069645804954844108686545511143825733680465933752466735833", 10); + mpz_set_str(table[10], "10186461717504246046230268440918821035876440895494266557127416606329083191287", 10); + mpz_set_str(table[11], "18297926602340021478575261446428210531132532051235949738981896308382482354761", 10); + mpz_set_str(table[12], "9662018506088598988541013808430313815739391873838391456964385042078776489955", 10); + mpz_set_str(table[13], "9612634823479186815849213576402334527393278121749786594652461488830006809363", 10); + mpz_set_str(table[14], "2137704031889285044468792179116749138832579303450232811659896613520782167639", 10); + mpz_set_str(table[15], "6749784557917554872006248055872747554534389320001758319101013030696936272628", 10); + mpz_set_str(table[16], "625850685425088233584927386815010073538229935767335330487848474433738918010", 10); + mpz_set_str(table[17], "6995589058260837178074203227798361798565888189644556589736593990439092388492", 10); + mpz_set_str(table[18], "9409159498243173193976978933968355588871599969716311700577155528351183018675", 10); + mpz_set_str(table[19], "9104170183894207978302719302073040066957290086548111568450399757272258078358", 10); + mpz_set_str(table[20], "172137246540613195507454067378303432481243939754662726908383061986079873929", 10); + mpz_set_str(table[21], "15156508289826552331459340900493745787045167225977526564817131051834994840762", 10); + mpz_set_str(table[22], "3866100369793028316149456519221636065086391047338182901297729000837007449069", 10); + mpz_set_str(table[23], "14449915354670721904199065940909559846733006632484706727650720068733055778595", 10); + mpz_set_str(table[24], "21047210568331534632839865098320372283417502512195493040500119038992713574260", 10); + mpz_set_str(table[25], "8908385197981213495509437145553944057864145388036148265876356525650583964504", 10); + mpz_set_str(table[26], "5156429062451548848250052993680497566063269712525114483317807292940922066978", 10); + mpz_set_str(table[27], "7953110297861995272265856227435274549094654925357643018879178379457332790396", 10); + mpz_set_str(table[28], "20237163278369283917100424296717777322056107717562199737610003631756613116098", 10); + mpz_set_str(table[29], "21844186763900341665690480709552325814119192346937469754793446106515094484517", 10); + mpz_set_str(table[30], "1682802359745804099169273003669171107459792021961893987239622400107547501320", 10); + mpz_set_str(table[31], "4077138749124832881195516357880862205186145392494220998949617863381768882938", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=29 +*/ +void EscalarMulWindow_30f98275112d2455(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "8430120875982733852309880311017060881275873150019222186218810957880200495354", 10); + mpz_set_str(table[3], "16989048378233858794788958978146014195305377375456310408467635854297286523644", 10); + mpz_set_str(table[4], "11860819094638342129205093270485645885615224185534099582623386180671893464610", 10); + mpz_set_str(table[5], "5347412438294657846433921264856011658228569726843345585243244038664219922810", 10); + mpz_set_str(table[6], "1131515993461675542524770075003115292938846156878400185919596937689352478900", 10); + mpz_set_str(table[7], "12958861123925681990457733035240880740911469560279212974551687919749970821952", 10); + mpz_set_str(table[8], "16946382245182653723986215424712248308680070566989980508990318627491651639222", 10); + mpz_set_str(table[9], "9684719733028580507529590768659268232327801582933846772922989034860249837758", 10); + mpz_set_str(table[10], "5999679216481167092351894424740052362270910587107818913157978272975329969180", 10); + mpz_set_str(table[11], "15283242363240494263092569207305021472683635734133252738487821244946929305830", 10); + mpz_set_str(table[12], "2390481826645659845462694915335620709401918992651565167621434341041515485426", 10); + mpz_set_str(table[13], "11234903469741399379378467473414477277447866625760458871228875001965786066142", 10); + mpz_set_str(table[14], "2854663530603746825997771192777239949370009008942184991623923936027166701241", 10); + mpz_set_str(table[15], "1716474310485208988848504994688510642262853564024074464797332607903568267762", 10); + mpz_set_str(table[16], "574261315695697187999090960533511996543112623807808585487437694816007242375", 10); + mpz_set_str(table[17], "9488037863754916252285084849697668592037845778602067342312244550925811511773", 10); + mpz_set_str(table[18], "6937751462243507416714652878500637777783427212384019031420511879376004465456", 10); + mpz_set_str(table[19], "19740423948414089679408486526132883520644311662846415828027265309442158866057", 10); + mpz_set_str(table[20], "16588359622627534498549559416903320243908569987541240336832789867333731937345", 10); + mpz_set_str(table[21], "16193264327344065104508058208393259449814798660533346905997978994248078433249", 10); + mpz_set_str(table[22], "10539088761282419816274044126996361653677221705820616724100561671785803212782", 10); + mpz_set_str(table[23], "17460185379704072230905236545870362909423057500606358331847775894270128309405", 10); + mpz_set_str(table[24], "20283302434798174744292886687305053200397791259996769945915067516245713041655", 10); + mpz_set_str(table[25], "11174752591702511626072990941590251321110127731096751339644196981352004005453", 10); + mpz_set_str(table[26], "1486150988509639688554157444015542156414168602625589860304688017818290636244", 10); + mpz_set_str(table[27], "9150671293725493183754477160965749940881636325359911520052587069881210743789", 10); + mpz_set_str(table[28], "19343927285873184674634659792139676180815279040052274972542293363067198799162", 10); + mpz_set_str(table[29], "4627431036776791029192848496923858627831703348348368475756503170707381476969", 10); + mpz_set_str(table[30], "3535219293199686539282520101216213498200046685961782400799847048192421427244", 10); + mpz_set_str(table[31], "376255090104282189240330705495600755561026362666658230687640913451416561867", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=30 +*/ +void EscalarMulWindow_30fcef7511301363(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "14238193718703509061393179391871597776636648384268561716878359134447010275729", 10); + mpz_set_str(table[3], "11128686287190319115796975372771719760247611758490380538178484745830360450517", 10); + mpz_set_str(table[4], "10055072091130411372046195709246821590910406117794812296658347233960874089278", 10); + mpz_set_str(table[5], "20782948663131209756509722449085047044854070281061698220284675443000040047339", 10); + mpz_set_str(table[6], "9730003847744981396118646118393559547263025457734388634241732641755012829392", 10); + mpz_set_str(table[7], "402725134261562981867362187300726075217986407860519909390643272858285544688", 10); + mpz_set_str(table[8], "10405506820603162024685846827563501275545987181778547975771411509743184412454", 10); + mpz_set_str(table[9], "19316554963171785123118679601840384463718803188955967577042706405302281719253", 10); + mpz_set_str(table[10], "7013379614279565755050835765204418127664364205389258515285963366882228010297", 10); + mpz_set_str(table[11], "1160310105440567642234802077667644074776831915565486115840708226970130738026", 10); + mpz_set_str(table[12], "7761956594103836782808025810774239092173311520212252887192766584414952011015", 10); + mpz_set_str(table[13], "16467230324214276607433637193834817187352326754396740602215579254574733894727", 10); + mpz_set_str(table[14], "16044986700084398421397021648426986299236970218740795760037436672615587496338", 10); + mpz_set_str(table[15], "11453370323257816680886225219100250253924918078810835306107633769366314580013", 10); + mpz_set_str(table[16], "11196790363890411219721246187048666205705470699868057156619839765236235201482", 10); + mpz_set_str(table[17], "17913348103306068374810648105142305506226430386925547964019291739390270606444", 10); + mpz_set_str(table[18], "2968466585322596449237619022827719449587880163652097027626817718467322855243", 10); + mpz_set_str(table[19], "16095804063813988453967911872447239838295530386604499438408868735049273550964", 10); + mpz_set_str(table[20], "574153869797392469626420512342892981518387968872853023272811826397331946711", 10); + mpz_set_str(table[21], "13197832228561702847936875508764659326248624314945180356504360288540219974546", 10); + mpz_set_str(table[22], "10019060834683864503797290365830420533439086531546305091131646916696591456830", 10); + mpz_set_str(table[23], "14146032170258045335058907961471533060542204662800165620458815973333538817876", 10); + mpz_set_str(table[24], "18486262348994599926858913122559118183502197130806434028413537510222673555549", 10); + mpz_set_str(table[25], "1028522096216424760459874596015490366781655258798730511901839006815288226832", 10); + mpz_set_str(table[26], "11252122701355701933193375826691419110786070188200202793945282765125646519498", 10); + mpz_set_str(table[27], "9659134540210915291452189962493460650012698122159422507471459638724127172920", 10); + mpz_set_str(table[28], "4237740433982830275324466894716337961581773197376214300393154355826797778626", 10); + mpz_set_str(table[29], "3087522940165379740888719303031664198786744684809877590767094217982380142255", 10); + mpz_set_str(table[30], "11716397164728437678213417729731587985927531163030640256120763340853819008937", 10); + mpz_set_str(table[31], "8467585026010438916429833569621610998220417444161460762175756019525605725701", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=31 +*/ +void EscalarMulWindow_30fcee75113011b0(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12301124670003480104629696209955193240288495529942186880979835361141701252356", 10); + mpz_set_str(table[3], "9307408019588658357187250344796855263122925817326642854835543188718545588235", 10); + mpz_set_str(table[4], "12889310269837866650766227631178608737732446818042182494770160487739767279933", 10); + mpz_set_str(table[5], "14305043734279423947220285740725380475183130745768863219550754411584785876637", 10); + mpz_set_str(table[6], "2391506923719369375409285779558753053068939727022649476425709892272625307893", 10); + mpz_set_str(table[7], "20864182813068571493291027606141058053296680359427218913210461783887562952698", 10); + mpz_set_str(table[8], "13717112134968028062861345603251284378766588993818047018357278346982666267616", 10); + mpz_set_str(table[9], "18515498743044454086246214151041857907262552385439225148419555542085380189044", 10); + mpz_set_str(table[10], "19786335348976756304092292889433409910460897566007278500882917882621771002663", 10); + mpz_set_str(table[11], "3074827769809993989484080415178258371624563037744089528303415196948826583970", 10); + mpz_set_str(table[12], "18162151180829928372755578060911956001928586230958178587289038713471477198352", 10); + mpz_set_str(table[13], "17776431759694085218624709393499209473805046869022372079320360000482906338993", 10); + mpz_set_str(table[14], "80121474887161448502875808121828257891050691690308063907366279897332426674", 10); + mpz_set_str(table[15], "4843419163790123104825922364623794542824882520052906884382919792140459556953", 10); + mpz_set_str(table[16], "16666071898737680227499350945199392444326864033722414091273367827539524589546", 10); + mpz_set_str(table[17], "15790618304108173362977004189329282439810998759305703492319635725453030891276", 10); + mpz_set_str(table[18], "21298786101648253356231140242322524750415990857635583683193964724572782162439", 10); + mpz_set_str(table[19], "9469077346250800622094746156565577116214942734750529481971940153852106023493", 10); + mpz_set_str(table[20], "21456850850249274154135171415820595010046206965735417729217811813688616616077", 10); + mpz_set_str(table[21], "11049201884907448465961123562730151208688552421172331584308926191495283017552", 10); + mpz_set_str(table[22], "17680109269125318633918330735425014560787165382534729605778313493894562814033", 10); + mpz_set_str(table[23], "12105940730388865636910070010326092011431801565406868479968794675414735004435", 10); + mpz_set_str(table[24], "15998448577204780769640959835597175674847056349302254252924910141975750546702", 10); + mpz_set_str(table[25], "20383034396621046865153230386678691904148615554734273752771483670161237587656", 10); + mpz_set_str(table[26], "17632055737278619134935551593899813532116959098796308479843929174416170691352", 10); + mpz_set_str(table[27], "4252024702058108422349273682367261490797904543143377995662728796152704556511", 10); + mpz_set_str(table[28], "15921903558693736739894607602659797433345301139773501452306612307519804566547", 10); + mpz_set_str(table[29], "3186928242653482242058545037677412687364250196599079917827732761333308912407", 10); + mpz_set_str(table[30], "1618212084063181650772275232670476780382766932888791386539214173270639457771", 10); + mpz_set_str(table[31], "14243156709104866279163372078788621001789581177741277344609392836151217049649", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=32 +*/ +void EscalarMulWindow_30fcf175113016c9(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "1987562385945662646693910367847343092839775049384089716572463157188308075703", 10); + mpz_set_str(table[3], "8757891452444022272769074848185376031107493735804983258559692651450471449467", 10); + mpz_set_str(table[4], "19340980305207309851017585089745997262181529251660847136498034370423172358790", 10); + mpz_set_str(table[5], "3171954919321285041707836853210020107918354488495904996405397026691685387275", 10); + mpz_set_str(table[6], "7456782377446086729279024612560429250976274769697246081157467558013495490886", 10); + mpz_set_str(table[7], "19234445645972711561269394192820536484718909007253179676571933319495226994795", 10); + mpz_set_str(table[8], "16929682317265470407359039690863194931815816975546547931080374367647064256560", 10); + mpz_set_str(table[9], "19002666235123629016806051012708674139843451827352100176996919302145892305807", 10); + mpz_set_str(table[10], "6126348015647450097257405657436342275063995153655708457720498813798135765008", 10); + mpz_set_str(table[11], "9019398810484927442106820791015376990909497561299157866082257712844949896674", 10); + mpz_set_str(table[12], "17863415953714175483513279587917319087576563891891572205528055824063187960352", 10); + mpz_set_str(table[13], "8433302553989787214424744341013687704848801106557403477261381733289709586454", 10); + mpz_set_str(table[14], "14623063230015607306024098706334470924537437193017407652107176588600953567592", 10); + mpz_set_str(table[15], "6790366987651073710778512031322468814673592792102234818936982148022075670382", 10); + mpz_set_str(table[16], "20064500133499405898892785154968628645182542935850348227069103134829392852046", 10); + mpz_set_str(table[17], "20334991608678685360887445103532106510564315674897518419719358060729882943577", 10); + mpz_set_str(table[18], "19233849075555813355095538246937058457522062542751213260352576832992794583635", 10); + mpz_set_str(table[19], "11937931511526999239383964164191440616023116878865434135897668172373653937001", 10); + mpz_set_str(table[20], "3731568093789624066895780755446160672883019265449156552179215766149886507985", 10); + mpz_set_str(table[21], "15905538405255467591537960138855533827262481827486454938952689576394962017597", 10); + mpz_set_str(table[22], "2972643783787395632847083734065232167867024701532612424780013471894868770333", 10); + mpz_set_str(table[23], "20316740349131428410943126107596835884295112832905312743893243359220133727084", 10); + mpz_set_str(table[24], "1960178824787487349647288822651699000969888333819782445927381191796723810131", 10); + mpz_set_str(table[25], "12036356908573792537467559899293737511912789293829616811448276054062929883982", 10); + mpz_set_str(table[26], "9115608859141528355028388236342491327552919424434987456051647357715965409255", 10); + mpz_set_str(table[27], "8551717131727089574523063290840548020336854090491082956430810385876964221685", 10); + mpz_set_str(table[28], "21222352143328980324755794773369156504454642044174057872189384824224669257352", 10); + mpz_set_str(table[29], "19343194935775817015099439816586333125932842648021710724281827521375707848849", 10); + mpz_set_str(table[30], "11663391309937873736825812371477290450289652024371047570699375639101355311953", 10); + mpz_set_str(table[31], "2515730073902656808459386919133675526962721062613890750954892324223322974096", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=33 +*/ +void EscalarMulWindow_30fcf07511301516(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "21756303931496901479512413651365731199202229621077509772849222281044626245113", 10); + mpz_set_str(table[3], "8725750782645177585080332051375050645623740711653508634989973817337008664220", 10); + mpz_set_str(table[4], "20634629382518387554674166128653694481727447372522727654033011816022092201626", 10); + mpz_set_str(table[5], "21039321163642083842809215867461484613860959195907164380413721780084042870711", 10); + mpz_set_str(table[6], "225606947902114440810583888145686785809923984244160520131996957352454984482", 10); + mpz_set_str(table[7], "3064605424312709391908104292550310731254091300296409862723660210147559805289", 10); + mpz_set_str(table[8], "7190706601647508333078532495568146288215874434500743046425625070403115923655", 10); + mpz_set_str(table[9], "12430673783156026320130445364595492282638745868546980155799381906377088256004", 10); + mpz_set_str(table[10], "4559640081943605705720084643420503840504693575886754910308365642877297098554", 10); + mpz_set_str(table[11], "2898684694364630498707286048903815763033802006459876164161498942054395505522", 10); + mpz_set_str(table[12], "11389247371329831831884637607778951318378921139390851830184799576855232696501", 10); + mpz_set_str(table[13], "3785893182928926260340675059968265462347408831875971557698622701254747198238", 10); + mpz_set_str(table[14], "2497619489319855994858479753102789311872840425023916344226023465467964699089", 10); + mpz_set_str(table[15], "13043314535128655789781062111777793546048506553985651239534755825610261090906", 10); + mpz_set_str(table[16], "7171760700816251997911831726399649106826637842548063915366276296206458718630", 10); + mpz_set_str(table[17], "18215045618028261624107985681381272839696967888716014580889635383365024149513", 10); + mpz_set_str(table[18], "9621276160928162422393959764258033063795244588767703387186261740413228942973", 10); + mpz_set_str(table[19], "13238365674687039574916488599843525471014018476269771360356170970334927678488", 10); + mpz_set_str(table[20], "19724803198901561035147579900177938153203768755423051188063703168446022875208", 10); + mpz_set_str(table[21], "1924221348606428584577290726141773680109852466353247005405512283961520064076", 10); + mpz_set_str(table[22], "8730989010234778691328223601892526701866121630305702086280895586474481648130", 10); + mpz_set_str(table[23], "13883942699346609000449295248715540261867655631317836922274460204316697781414", 10); + mpz_set_str(table[24], "13973005826216764508350304280317977585567663414266317211391732001362385060951", 10); + mpz_set_str(table[25], "13815279797041280552720186314568403966545737871369705064766559811494734188027", 10); + mpz_set_str(table[26], "19561393465932093077685648643225631952888007098429905631747001246679379637440", 10); + mpz_set_str(table[27], "3495615599624531613075333101682602558027669176102938068556954036832042715415", 10); + mpz_set_str(table[28], "8334162264125275770604558435386557310529163222656981435373456701717868960645", 10); + mpz_set_str(table[29], "20841669381750057885887054103322811187310039039842891654876784667551679820042", 10); + mpz_set_str(table[30], "17667977812730381972837363042084318847453324729342983682484079872345697290859", 10); + mpz_set_str(table[31], "19339149357153080772366193183260489633836757821720736037459126656069926758607", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=34 +*/ +void EscalarMulWindow_30fcf37511301a2f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15875911062199926371498095980511757719974356118017025207452191285271959626514", 10); + mpz_set_str(table[3], "178747139732714499671082378739093809492327996372156726066416590617898897792", 10); + mpz_set_str(table[4], "7826654783429491017258147921041846249791161901149002238150638794321830395466", 10); + mpz_set_str(table[5], "13589397323854251814694731690768876400203004058286434214394593469708911021909", 10); + mpz_set_str(table[6], "20474756699133628477155925021937931128901864955506400481942743049903057470497", 10); + mpz_set_str(table[7], "5070941903020989692858102574665936456775364670539480939096160579330819773136", 10); + mpz_set_str(table[8], "4851169054918724584797688887483268238090417195533115328593173416927962457465", 10); + mpz_set_str(table[9], "10926179252005275564312492417636938548954690361385735439014396653931617545567", 10); + mpz_set_str(table[10], "50870938189711798761339858280641577937686355457268642871182135126856323535", 10); + mpz_set_str(table[11], "7323360937512738591748213083864018559576674213848580955293886926283432709627", 10); + mpz_set_str(table[12], "3361147809642974171867791053917470988562002274484111012130760663512585125061", 10); + mpz_set_str(table[13], "21122287488565582870435892222316447186168098593188725095516933011060293572376", 10); + mpz_set_str(table[14], "6957080009403386084693930686666920767604636483237773825378016660670217450999", 10); + mpz_set_str(table[15], "18933299108429235814487234324948510770039854597122547655549148751156789810097", 10); + mpz_set_str(table[16], "12193850678285567692848004866162198150237347520568427590247067967887960986075", 10); + mpz_set_str(table[17], "14650061018470073268723111844708350180773118348766533830577515284703355500339", 10); + mpz_set_str(table[18], "13474642233583180862540646115339515160589137028802007375276756730675411981509", 10); + mpz_set_str(table[19], "3232529435799214083021210427621210461704243940371525991379809573537419651715", 10); + mpz_set_str(table[20], "7928426861722110822278295237794149074980335794858757948340645606362065105478", 10); + mpz_set_str(table[21], "18482992353328856173249912164808336068691077969903999000703028830266638403092", 10); + mpz_set_str(table[22], "7885410042741481856095142430405412246616464845970522866351417874443041943470", 10); + mpz_set_str(table[23], "13816036465793603113901125066934917631143544428639505419021638855621178558448", 10); + mpz_set_str(table[24], "7907006722882189272851830618277571950124782196948954178758656984060426365930", 10); + mpz_set_str(table[25], "14036232750243678850242371102012650857610918619078088892968157641464511852612", 10); + mpz_set_str(table[26], "548910524703631901211481525286650441451464591735674477188236238312250964107", 10); + mpz_set_str(table[27], "14595793516380258731812663858971909237728845486560758279415060491055277721031", 10); + mpz_set_str(table[28], "18247996309089901700294917733879214735670249909299393623729083621866226148130", 10); + mpz_set_str(table[29], "8561227795221367187366439945366474615644110956125128709866671383597389957859", 10); + mpz_set_str(table[30], "7635325038301394085706955518139576271494920766053291956119121728555795660341", 10); + mpz_set_str(table[31], "3216431125838619160627662521470266821095667137979717515383198656492642642987", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=35 +*/ +void EscalarMulWindow_30fcf2751130187c(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "19105972882465355968133968061599637386179323537954194804073526782715611172996", 10); + mpz_set_str(table[3], "7764177565781562658969507170513918415400512021803616479767672855162379694117", 10); + mpz_set_str(table[4], "1646624596747509919420189126098586291442688782962040881882614036477851707528", 10); + mpz_set_str(table[5], "15082838508095945226762954581603391465662539925585231711520752514774904361605", 10); + mpz_set_str(table[6], "3382267008855000041616537578603950401596264548552538079496800417543291685078", 10); + mpz_set_str(table[7], "32870561403517543384374536882134534212017552792479474943765903319547414975", 10); + mpz_set_str(table[8], "476291833740146946129003667189933144953335610885887740174317848317130452767", 10); + mpz_set_str(table[9], "20484817482473367824156335970221123194761585452808851484408185961973461776087", 10); + mpz_set_str(table[10], "16564192402167974022139753888776796245007144426677586725580707576766649879505", 10); + mpz_set_str(table[11], "8386225926174280867762789968367434548789461340186490095158218478357499017719", 10); + mpz_set_str(table[12], "10073059428280416425828586204716528007198542840481172840670934563779162970926", 10); + mpz_set_str(table[13], "2798224432626616596039794854931760136250426588006449740194523811874646454736", 10); + mpz_set_str(table[14], "18053108463271355983079034628588459779758647994763557450012049690319368905228", 10); + mpz_set_str(table[15], "20993193069144636687107623928234535950528660052627837752874632244972554387297", 10); + mpz_set_str(table[16], "11655462847984269628391286719092071922510652621089935459903649151442391942076", 10); + mpz_set_str(table[17], "4189777862540452062035297177578940825117316771214598390681468741235237790670", 10); + mpz_set_str(table[18], "5543622901036320653695486873095241852154061430518364721226978243718863278928", 10); + mpz_set_str(table[19], "15549895581449726301857615376506567780637387081865274544358777437902226399776", 10); + mpz_set_str(table[20], "17931687619868426608254670027365897440067715468934535360302046861036691577569", 10); + mpz_set_str(table[21], "17482475084894962593835908572222795445468070938818092545357704781484709545223", 10); + mpz_set_str(table[22], "3538625899272821360338129339049061851825270824215536174082543028052243231308", 10); + mpz_set_str(table[23], "12227906941688482886243954521400791627617312020648935335114958440526736553724", 10); + mpz_set_str(table[24], "6635257779031831721200069664183269715686395165729111986270810641356554167099", 10); + mpz_set_str(table[25], "7462699467288352369914718340460407745225128237440659610297282066152490210719", 10); + mpz_set_str(table[26], "10612002187669735643090131466001153037401627348192663306317880994496511260439", 10); + mpz_set_str(table[27], "9575732335316919849712785071501363014533628017161728697144064693135872116928", 10); + mpz_set_str(table[28], "9240053069034767684895599163947942758818855492800226017425147997071268628233", 10); + mpz_set_str(table[29], "9432209020651518224438803512820455661009460501216687835750400777016900928319", 10); + mpz_set_str(table[30], "887344954239839119673219826104134921418825251582873014423002723166210705679", 10); + mpz_set_str(table[31], "17370129818504646684422337943316948923256683377145864511684064533421084098090", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=36 +*/ +void EscalarMulWindow_30fcf57511301d95(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "3134277644149395589798238525001585145804726105235070344560312350098318553102", 10); + mpz_set_str(table[3], "492137894928921384404811315076636299462987253351879552905638427803058414676", 10); + mpz_set_str(table[4], "18618091472863605759355021526677878877211451741600617028363561905200756085911", 10); + mpz_set_str(table[5], "10606051341588708591856167721668627982640129705172986724126605967758014101227", 10); + mpz_set_str(table[6], "9962252130421610724008493273955786344316016161501222291182529879262943795871", 10); + mpz_set_str(table[7], "16331662811616843423781934137472249327900397053960179436801541650865030516908", 10); + mpz_set_str(table[8], "20988771140156397715109240902745734263316566201217551914011102762866999662666", 10); + mpz_set_str(table[9], "8382959281540762215998129653686486986643532432404074449845553310962903384545", 10); + mpz_set_str(table[10], "14230799587544104542954334031284990296839610623088696741986319791720539256983", 10); + mpz_set_str(table[11], "7024963209352607931361358967036486610223827885106218059800428689281300178282", 10); + mpz_set_str(table[12], "143332440284833347173135475791749100543122344865203025317947054996701120256", 10); + mpz_set_str(table[13], "2042590466849023084234319860523612374101893006449921466561156857750142003767", 10); + mpz_set_str(table[14], "21473088632158949864466003722741178667555564739692599687334725690447722476702", 10); + mpz_set_str(table[15], "16650122474727879712307502780978082165058922591199066524102706084342864443823", 10); + mpz_set_str(table[16], "4990310450798232340598523273823745347423381097438895702622441590224125599082", 10); + mpz_set_str(table[17], "18664071485285166972514972705309562799116532010832161194738232757934584835181", 10); + mpz_set_str(table[18], "16820010279164699934670644778900757227383978000107596487283398723986831521561", 10); + mpz_set_str(table[19], "13835982601213904303487259327966023981733156506775649823853120583095076798968", 10); + mpz_set_str(table[20], "15389864463529977131259669654319107748561320836585944018779149041793082845213", 10); + mpz_set_str(table[21], "4811473078694343992282194499937363963492432559104467724916741342570078214451", 10); + mpz_set_str(table[22], "18990364719958310625290086296555771631732599381935412730967361413617098590151", 10); + mpz_set_str(table[23], "2795560767435199033978857207073607926950726617722149039943714185150684856475", 10); + mpz_set_str(table[24], "5372467964500217032851945452364399931206831760982400813920536889636758526890", 10); + mpz_set_str(table[25], "11291553082756704031480826205080301885301783043410656942539002186145275372779", 10); + mpz_set_str(table[26], "21792462695743873130178967900171157227868844462523713519883406160506641807270", 10); + mpz_set_str(table[27], "1110502247519702978707690098064843437978028686586712085416783072543930293413", 10); + mpz_set_str(table[28], "13002723368040994700073555297594529558543232181362521412469563541536486258562", 10); + mpz_set_str(table[29], "13749292037176590362234769166004419323606491235037343710701109765540275127757", 10); + mpz_set_str(table[30], "17971171973018167548753280244521054107922732029025548064108840466202712007191", 10); + mpz_set_str(table[31], "19630976315194062829888798934464004981499784836820504114915256012498295750915", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=37 +*/ +void EscalarMulWindow_30fcf47511301be2(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15033084295415377899075672151067308172745577382932608490904255938034580017189", 10); + mpz_set_str(table[3], "18216429734524717572824506734310306558154695810389547189875150902391959814808", 10); + mpz_set_str(table[4], "19006769156414964283197192658234148565197794094657317924619012676836860745309", 10); + mpz_set_str(table[5], "10140898452815482026842874984926258810031513573833549856364943398111389797107", 10); + mpz_set_str(table[6], "14031685555824062851073204665630622819718062184406549090904664320798076246235", 10); + mpz_set_str(table[7], "16443842820060580616590128410805970736451736956448643517593264245113182685029", 10); + mpz_set_str(table[8], "6431068573893536681227243771736905387656641815816688461535514493399056573125", 10); + mpz_set_str(table[9], "10873982177484819097996972273718769451814707052359429578637864974710726515973", 10); + mpz_set_str(table[10], "13136972641315045313883116158727523534674471574172120293593555162059935597588", 10); + mpz_set_str(table[11], "6528993031293690663390442599632660899449176481350346721205087030291261764711", 10); + mpz_set_str(table[12], "6874575649615588047260515227448774342689963112989853566355996850018547554417", 10); + mpz_set_str(table[13], "10072048383934424725303195345505299070672768280359087159240917808448672076599", 10); + mpz_set_str(table[14], "10006731266850431279012029989413252980507835344030681669302967255466466028191", 10); + mpz_set_str(table[15], "6725934438062502768377133448637447707769992358994904391716968897398254776481", 10); + mpz_set_str(table[16], "5665086430375521811021079668340685674067765252832818380242061759332107516355", 10); + mpz_set_str(table[17], "13079593700406862756309942094128818177154132310127710766400054203190204553223", 10); + mpz_set_str(table[18], "18371471894633819019596390270741904487270133604315411219207029529355473605867", 10); + mpz_set_str(table[19], "970279623878251530170601697875085394591542870416750273540480900892501517239", 10); + mpz_set_str(table[20], "13100939035978337400631123515652328406642787572990259147859441137296651813651", 10); + mpz_set_str(table[21], "13492211672685736030356122135551815466231691938892805298235372694065605825621", 10); + mpz_set_str(table[22], "10122849326492874551111116990054338322366818097827111821588092026888668533463", 10); + mpz_set_str(table[23], "3956914408265548727661516564055951244821552912170745144335485985302543031018", 10); + mpz_set_str(table[24], "12356430445803491164753468866721143365076177499438595124922984167209124264899", 10); + mpz_set_str(table[25], "6135195517452507756027915425053985250963029629802258712315758045928998558601", 10); + mpz_set_str(table[26], "20527980582038388419881158914832304222194911009063924317098044017085773171619", 10); + mpz_set_str(table[27], "11780932279096137561868909609212337619381412261079856215316476699575347566409", 10); + mpz_set_str(table[28], "1453548475925512572534863462892594024098066032582628181531404557186203050203", 10); + mpz_set_str(table[29], "10158581436776447839842057121724993240189958866018234013424995131171362364965", 10); + mpz_set_str(table[30], "16414541315470314627103213743353857715817684493883256629996232386138013667740", 10); + mpz_set_str(table[31], "5223509892848849453996301604693671081120141288501189854323407016278864411204", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=38 +*/ +void EscalarMulWindow_30fcf775113020fb(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11874327887513741187258035887212681462779759981094241684182313669225630438983", 10); + mpz_set_str(table[3], "4970235062395747284407832248453332835009484963076188523341014818372997303205", 10); + mpz_set_str(table[4], "17494953592715517721984200996388779526673020827341434155185482004105163437849", 10); + mpz_set_str(table[5], "16547765288481988729542455365289917021218131320286791852003095330268996692876", 10); + mpz_set_str(table[6], "5899833364008475094579927540530164666673640203356174188766808099140803256427", 10); + mpz_set_str(table[7], "8494650827031776378865624807029340967103184613850792104438643971944997523032", 10); + mpz_set_str(table[8], "16841443408975559401328562449699456210617910172550802774602676509306544483827", 10); + mpz_set_str(table[9], "17032386670898917105796563566491368189432531873173626948415576725093932509784", 10); + mpz_set_str(table[10], "4648108508063740788377643068156844411882865146061374771558465152281754629481", 10); + mpz_set_str(table[11], "2839148012480814949170466377095476137667835432277338954622504273217155080339", 10); + mpz_set_str(table[12], "4256551328942262172848066726195492939194222999818547185158522026036892114684", 10); + mpz_set_str(table[13], "17198288963549854730286824086231132877746107386581720065370179913908975094386", 10); + mpz_set_str(table[14], "21865735427984562307991529474671226931608710073734225296360345046602706633968", 10); + mpz_set_str(table[15], "14916476243974180114595077124226650061075948639814563322019481754135738076333", 10); + mpz_set_str(table[16], "5879939089268925421921681046756130811259733477702135897439505323928364710970", 10); + mpz_set_str(table[17], "20347262593842271671229320419836552109247710173879611698547632471527726494909", 10); + mpz_set_str(table[18], "2640441625161927823792890035470599675151234935487321583454236484659932057069", 10); + mpz_set_str(table[19], "13963169307457239860607226415944051870718399972152987616955557119213414013108", 10); + mpz_set_str(table[20], "20380181724127989271008942748060678368139061741838900631588531050383412286352", 10); + mpz_set_str(table[21], "8342484236577122462720299190847945387862385488327061913375291201980424469065", 10); + mpz_set_str(table[22], "5483041388647837327969193730715072222586519722134732524532808895297572886588", 10); + mpz_set_str(table[23], "20436016770728851564566865060939551896079816738215114482752203196367388889141", 10); + mpz_set_str(table[24], "1019493181818227232907888408216461176176468210350250647565448907483898972254", 10); + mpz_set_str(table[25], "6364560952232383929430683276761542287874119419461320463353756476512657907944", 10); + mpz_set_str(table[26], "4812206481530139718553394040674444505340783035685138858504040063931499404813", 10); + mpz_set_str(table[27], "204452113743561666620364375314510740201117562475070886347238746011154918182", 10); + mpz_set_str(table[28], "18476533153808399685798386939061271260417747857929122416289595284488122477727", 10); + mpz_set_str(table[29], "6711373593388755772156975629686862214280855835326244709606501035446117780391", 10); + mpz_set_str(table[30], "21216491588992448172266750355589972929276308392321473037834130236777788984394", 10); + mpz_set_str(table[31], "8489813618916172043542594776958371857465600082040389986658003865115640193026", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=39 +*/ +void EscalarMulWindow_30fcf67511301f48(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12758000968802636125517404458920772151792919082944194798001426726847425858117", 10); + mpz_set_str(table[3], "11594801851424409558024957917202192337988106426213427874499939959553823821732", 10); + mpz_set_str(table[4], "12035560600731380039763373639833995299793000379132989733130584239231044477693", 10); + mpz_set_str(table[5], "12946420964799654584575455997250813830517562317038225662965198193809456390432", 10); + mpz_set_str(table[6], "3138586264871376800262214484142803825304275303095300155503606735980839786503", 10); + mpz_set_str(table[7], "19430479698416667468741339402187216221020517340798712072888080109400820649858", 10); + mpz_set_str(table[8], "13195428079589703946578289363366533057406713176052423601806370321468805305700", 10); + mpz_set_str(table[9], "20808624548825445938495064916983231218414937777498166314196718589444207682122", 10); + mpz_set_str(table[10], "18589396410849897308831931728632723483846217038649676908746987325778293857028", 10); + mpz_set_str(table[11], "17173242863084370640380968588523839402675365466547040119136319020241485003151", 10); + mpz_set_str(table[12], "6026114531099575223979460888670319934925690821987331473931156018640076076963", 10); + mpz_set_str(table[13], "10944522828858039019132510434937282740521606461351486749570217442036478845874", 10); + mpz_set_str(table[14], "34150059281764650431821436908228815954757841984565927419185000363817641282", 10); + mpz_set_str(table[15], "4478119007167091196834401258278180621830543151764559811059282865138801682023", 10); + mpz_set_str(table[16], "3283788056071665545396685111925954081473640926114876273822794894244113795831", 10); + mpz_set_str(table[17], "1766115830447063643744016651508878884243885328299078624059122133526368219261", 10); + mpz_set_str(table[18], "2451271247015725100549068687208319421198166364456868701671925125981675685112", 10); + mpz_set_str(table[19], "14873404453921610533921074080989065234867509765014738886052042258773943459793", 10); + mpz_set_str(table[20], "14172397620216105504083628687138549871525109427167850510501112208248415712850", 10); + mpz_set_str(table[21], "5192991067265193547443926558117386704414333051212030814224141793648634711411", 10); + mpz_set_str(table[22], "14451519960893134378643444131639362432973374084051839573757703575714664653085", 10); + mpz_set_str(table[23], "19619914535909988164032934839018912342207134355088178795472511828926528454508", 10); + mpz_set_str(table[24], "1996048653261175746716291716850870413553500006476319575131932677472524980479", 10); + mpz_set_str(table[25], "7551492955245066431272820191052776845785782872554634205646809869918788321855", 10); + mpz_set_str(table[26], "9948214574963398273322680866422503861483935571775486104786112990838651071848", 10); + mpz_set_str(table[27], "18452906734585337124549455227510883759059747575010379045925578424223328418119", 10); + mpz_set_str(table[28], "9762064078805639645016504297589367085397017954782976213355221692823382882998", 10); + mpz_set_str(table[29], "20563234881495021119581745331271038081710250934492836574777376255333871636690", 10); + mpz_set_str(table[30], "5000068642251714369669555299697048083562649973594517218636586467895799540489", 10); + mpz_set_str(table[31], "8595196622384633454709610183673330654472199308943912085169927326308549471103", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=40 +*/ +void EscalarMulWindow_3100757511332cec(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12416241616792737509661702710359503722367059164242541992444845969483552004395", 10); + mpz_set_str(table[3], "13559498164610241744503598095521949842776090366949329140964432317484133961232", 10); + mpz_set_str(table[4], "13602037497083884501377762498018530382249266099268581729423006252758784149333", 10); + mpz_set_str(table[5], "16341441975129912256351056417287499894519389468726043809809613413613147289278", 10); + mpz_set_str(table[6], "1363593728785650925576980135823657854638236776562875613511914041272537461042", 10); + mpz_set_str(table[7], "21082936985101748657767517814409045314624794729585842931044949329655082036400", 10); + mpz_set_str(table[8], "9054921689762709790540716778668352250371073098762972776282806439527056273694", 10); + mpz_set_str(table[9], "4554807898339846001515632516328488763903664805996191151739605897820823846452", 10); + mpz_set_str(table[10], "4712431409656243716910572291678394340769967388981856320454016232528062515749", 10); + mpz_set_str(table[11], "4507080617568969332017984410692061656934228651769330596007178531196335064209", 10); + mpz_set_str(table[12], "1111100525166241937592879343881048191451102619880902725042523612142597032511", 10); + mpz_set_str(table[13], "17832951620169455701576137800654410758965265005827783809713607234971300513634", 10); + mpz_set_str(table[14], "6826584469996085018476254532009830477855832699624153285643838159296646008653", 10); + mpz_set_str(table[15], "4272009148619158782753656212068594551784574759338556048800461553575470168155", 10); + mpz_set_str(table[16], "1966182434773021004759363170544682577489246499753938055587165741426931171285", 10); + mpz_set_str(table[17], "1574773852853564326666662024177293437429719653234453470335149461587563846708", 10); + mpz_set_str(table[18], "3641141430839882104144484214566266790870521952218086544644759402963239647270", 10); + mpz_set_str(table[19], "14550981677262773796844315364795574328117252725275857863037073236245940606181", 10); + mpz_set_str(table[20], "8520357843575486535139001093873885270186652438063358503380653301056230899457", 10); + mpz_set_str(table[21], "19116621288700210204594414028863120716295042984740909157500986113678452206567", 10); + mpz_set_str(table[22], "6674612876670126891390045970534378967324714292998335658450716143073994306222", 10); + mpz_set_str(table[23], "721853364068464252120707348651008351258384110986232377002281880792049360941", 10); + mpz_set_str(table[24], "2608955336401820892781854749570538419317313539014235967690520596508846574408", 10); + mpz_set_str(table[25], "15242743804905463959456340409683908034115411985421257125934992762956817176425", 10); + mpz_set_str(table[26], "17443065644622572935481296196982646171338838498244741303833379140760571805077", 10); + mpz_set_str(table[27], "6407580971358881456152654133684121554848206732398504964455418248939062349362", 10); + mpz_set_str(table[28], "1523162805231210281753340210101792086967642688671673058886085066928039581400", 10); + mpz_set_str(table[29], "752832523310484818333298184041250205580747820420383766133420289175435035632", 10); + mpz_set_str(table[30], "4884576585897242673474713654411440662206841240531482194621018476423458323503", 10); + mpz_set_str(table[31], "16029582673014354221316799149860373259359022505191972894672595945608109987625", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=41 +*/ +void EscalarMulWindow_3100767511332e9f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "13507448775409688610473704225149413899988757427237348844684485592340129833964", 10); + mpz_set_str(table[3], "6118207740932454885806113827712155924554153678788155800600460093916101590338", 10); + mpz_set_str(table[4], "1701898783674169906740415414316237098366095355792165851633864280819588372162", 10); + mpz_set_str(table[5], "14425537442241009422770132058332867169394883792129559219515124143806642633304", 10); + mpz_set_str(table[6], "9324515987868048857617401069933950063586944995700400183083907580534524932224", 10); + mpz_set_str(table[7], "9662952566311686763072589113030480169358453591071215328124464730194883520235", 10); + mpz_set_str(table[8], "1189506187705813369442395960227473829641911009702951982743435208704207573868", 10); + mpz_set_str(table[9], "19436347075372374907100828314510499659668044878353375496229033293996081722349", 10); + mpz_set_str(table[10], "20205904123700913671651218823538112107997470076449908795953454939840783364503", 10); + mpz_set_str(table[11], "288718742844439137704045321535953567336649753169422464863321666846748345967", 10); + mpz_set_str(table[12], "4460441508583233426147538295225287248510465330166238424872864971296458127284", 10); + mpz_set_str(table[13], "6478536223777685864876251312455070551443374015433636976190739677044372162998", 10); + mpz_set_str(table[14], "20925400990901621889819562873973538568814566409490572864161346582539148206591", 10); + mpz_set_str(table[15], "4101997535405021140720700009494574849271730623605759663799043760728831602936", 10); + mpz_set_str(table[16], "20662675753403998558683414937410453812713669481364448142786870767718572925901", 10); + mpz_set_str(table[17], "7088564762919676079206774489341460053754796821073011885622534869406716514503", 10); + mpz_set_str(table[18], "14934684914487148200920724983087363407583252844941926979028795416070052428114", 10); + mpz_set_str(table[19], "14958372150879485968381171596136496415998652302678723608467328279471237268019", 10); + mpz_set_str(table[20], "20136538306200729077084402936709392126605176265339765762795540078131168325578", 10); + mpz_set_str(table[21], "1871594192909772081805577268488744157883073569926388046680911092748426224484", 10); + mpz_set_str(table[22], "4131515834290860929705701423376205747465872171321844651998782609675637193211", 10); + mpz_set_str(table[23], "7996044384742222455600456995999790841735962093593402634912201324677304684546", 10); + mpz_set_str(table[24], "21162277078212917664345160709854314426971259537592075201465404332420072210727", 10); + mpz_set_str(table[25], "6748179157560672802686392750429920132668860999027876242728832073333295820770", 10); + mpz_set_str(table[26], "10661425994038126158788969640861461118154815293266871375752043371342723613251", 10); + mpz_set_str(table[27], "2982585129520999781830352123712961692964129858406931354724677038761402294798", 10); + mpz_set_str(table[28], "9504007241560372327381200775770032453104430971136546432677165434175259621393", 10); + mpz_set_str(table[29], "10586472870678352216787100825335108059933635794036120581460845709798847306139", 10); + mpz_set_str(table[30], "6240355571552953538822109870047345727286138997302706715224040239630061955152", 10); + mpz_set_str(table[31], "2652918044312270523261795033407149966429403119867662155572996806126569182319", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=42 +*/ +void EscalarMulWindow_3100777511333052(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18622474418000713621427585433905734564753749154887074022744752206320244565988", 10); + mpz_set_str(table[3], "1694169127962983890158516524134310542570106792347197035731699112926898926002", 10); + mpz_set_str(table[4], "11938027776676130589849031629817961353625925794756643778300260107738378010820", 10); + mpz_set_str(table[5], "11050897949244235833248257229494011847396936066610396327047653390138834919222", 10); + mpz_set_str(table[6], "3159875049229288470022629277880117106258950649226874802693450990126905093317", 10); + mpz_set_str(table[7], "2241757845451216840480925431659171500634864740063913456227940181787260251674", 10); + mpz_set_str(table[8], "17430978066692280973704505096992302251736874070106867047106336932096814073315", 10); + mpz_set_str(table[9], "14631855299055935058545789298932254510553541912356291150320612930091112647754", 10); + mpz_set_str(table[10], "19516696988698721408017104475846450422800415928323414574172851128053666589447", 10); + mpz_set_str(table[11], "14867521286941727030431861808845332559456135182257719802632635394588730790980", 10); + mpz_set_str(table[12], "12220311138793944886062630150399915041818752848128770767703106604660700808495", 10); + mpz_set_str(table[13], "8720381016862821617780729179111522229150832087647171887341436591935170191079", 10); + mpz_set_str(table[14], "7196542366148061767476558401022766517352936022145989665473022411077445751494", 10); + mpz_set_str(table[15], "15394878384635277155635633917034592383273995682649366150099036179089317668851", 10); + mpz_set_str(table[16], "1103842342789030280974482417188564672533419579724060997600685285578290324142", 10); + mpz_set_str(table[17], "10860407578751763297701982269854806389189047221870944944951948201418858290901", 10); + mpz_set_str(table[18], "16747547952349656467023346042637313561034310744051474587396520015007930533606", 10); + mpz_set_str(table[19], "16094439326071621364720414325561115424704020589036440346269925376000688851241", 10); + mpz_set_str(table[20], "15208448011831833709820887425658659952260044949101303649007090091558652897229", 10); + mpz_set_str(table[21], "10536101346112059913885413606344143381638365603933582925260700126473515939903", 10); + mpz_set_str(table[22], "10476288939447759249526548426154695128756974016703870790093891871801777538511", 10); + mpz_set_str(table[23], "16539804698862497219464683421474606356626237728450154498918118985527829865940", 10); + mpz_set_str(table[24], "88706155831643915983643972196732684571843408331379481722180201803563699221", 10); + mpz_set_str(table[25], "5834195269879572550111739813703742996565008017443123553763260268696632530596", 10); + mpz_set_str(table[26], "21027943040153833873820518610534107941527659049024514536114842019543003699445", 10); + mpz_set_str(table[27], "3517647881896881027899596124716528272457060358685945905127151997486216920829", 10); + mpz_set_str(table[28], "20242408733448373641601973667084439091514388994721580062035009374200510222309", 10); + mpz_set_str(table[29], "18709534970056258370447686912655905668215804008186678399131807624235856915323", 10); + mpz_set_str(table[30], "2140382859882670711174208463966823297415144587669537539759088306088089230133", 10); + mpz_set_str(table[31], "4241523365174956868715681552514426497245992384860590100378872402682268052489", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=43 +*/ +void EscalarMulWindow_3100787511333205(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "7966091176304498827052432677819882274538175937105248704625282697353838114426", 10); + mpz_set_str(table[3], "9611026006252145137616324600454865831408839266540000631817838452962090281582", 10); + mpz_set_str(table[4], "15561147416487224635523501176376795227477310470986720606784853942384978181517", 10); + mpz_set_str(table[5], "20077999766994928168500745568046494546082668191298332163397318168472000094222", 10); + mpz_set_str(table[6], "20041651589746938158456339331630803469220993689027536834811365190568586931218", 10); + mpz_set_str(table[7], "7800893302715801200811866216162674032536796426186935773993414011659567799978", 10); + mpz_set_str(table[8], "6590992522636381425482749474800363644014024576362483302101275181245622937194", 10); + mpz_set_str(table[9], "8635620547308313824356575217443564422521664326576285468864253017082836620536", 10); + mpz_set_str(table[10], "19040079330062713559828583511795142209521710618677094400324441892418053305664", 10); + mpz_set_str(table[11], "19614474699071748675302952261662387921568109672528380029905044989831210612595", 10); + mpz_set_str(table[12], "21175957023272148912676938255857228014963126246823898230041066128185995810712", 10); + mpz_set_str(table[13], "15395143804358060528297476684725834284441716491931761775740871367012598293678", 10); + mpz_set_str(table[14], "3933045872818026578468171051671407248485967214972068685269644697708555060400", 10); + mpz_set_str(table[15], "9816803334151315339930488390829798076307170165808853158279946148440821758048", 10); + mpz_set_str(table[16], "9035369531925138804284221908935804256144988620704151839823382829513678219582", 10); + mpz_set_str(table[17], "16947575352543059080036876549254184643495673262217222330645975369833500467430", 10); + mpz_set_str(table[18], "21513814271743059815395879252759987188085206792522148405906651513466446245998", 10); + mpz_set_str(table[19], "19240503005985922621441764128911287104192477300198109867144736062366145972693", 10); + mpz_set_str(table[20], "9034505160641394104695820312698051548236743067226799075616989859032028353917", 10); + mpz_set_str(table[21], "1957743435076165209482433236437363422171588683674981510019917758370477038590", 10); + mpz_set_str(table[22], "18243815258135988113588132370743533194217032529262861351287344685852542990315", 10); + mpz_set_str(table[23], "10016537009628746990883717783322778906503462976089117722673791067342330416852", 10); + mpz_set_str(table[24], "4961086558468591819848728647029287956829849013897925390093983810630579408199", 10); + mpz_set_str(table[25], "17531972773081893067819248432719094385820081262925543533473643846726624647362", 10); + mpz_set_str(table[26], "19135920985361256178464326483888951855122649809638008237404088569456910120325", 10); + mpz_set_str(table[27], "9413731711679563313414982136690879771559493016695950915377851808266188156327", 10); + mpz_set_str(table[28], "307200760057838356477415312340134834246379021167099904688682827296584816888", 10); + mpz_set_str(table[29], "12118443903162824133722731168260722579728351979669215745749034964385159933809", 10); + mpz_set_str(table[30], "12069101818882262634728869954802186682402579206880340206873551830399254013244", 10); + mpz_set_str(table[31], "19778735655000389981492869546903236453487769726679341233625468787365656346672", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=44 +*/ +void EscalarMulWindow_3100717511332620(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "14888133855634568969061731048798176382027259106004783382378030523919860154203", 10); + mpz_set_str(table[3], "13970965849274593310478670080351334089021941719911990543665219379821969007096", 10); + mpz_set_str(table[4], "11143721722430027516116431321209403460927967345298070665259227292966788634758", 10); + mpz_set_str(table[5], "17710806516977177155131714482239811557674966937531990600624487133526384902313", 10); + mpz_set_str(table[6], "8600488251208055544855545811981610043085044454736905042231915530225281617623", 10); + mpz_set_str(table[7], "21215630415439041190958478624099865649899593621773085134337473012438132333100", 10); + mpz_set_str(table[8], "17332672643904141944192072690667161383740441798638000696411048436282443372044", 10); + mpz_set_str(table[9], "11849800907307749268559892895203021432861701445205355943086310449407284140883", 10); + mpz_set_str(table[10], "73464088065988711086908041617643500667352448415533091085897731146601634960", 10); + mpz_set_str(table[11], "496024715327203322177779323599767867740934623290108355846054589938379051617", 10); + mpz_set_str(table[12], "11127873028811329981987447865749525171545568669024744657523616483940632629780", 10); + mpz_set_str(table[13], "7198233336684606986529964414871102328500175958972326417830106303897887721973", 10); + mpz_set_str(table[14], "14913694501174126440758697245404361553377492549455379131180398401073385725313", 10); + mpz_set_str(table[15], "3005314020495265723507905833212263195476090414793396176530552601777761462686", 10); + mpz_set_str(table[16], "6980817897227962418955701279365699080173284836673003097432101710553971348606", 10); + mpz_set_str(table[17], "12769718016522630653136882998125804429576840542031501958967049606169929933864", 10); + mpz_set_str(table[18], "8372801751049913005750654237452494667858774846085126355735239789622958021289", 10); + mpz_set_str(table[19], "16029017521415844253786356649810689741419650863220813264622904633880539582406", 10); + mpz_set_str(table[20], "19476695748721831355371539753333874690218754373979655272961840699448549036942", 10); + mpz_set_str(table[21], "21249148456388228260040635070639180377950169791084292599096800719948478439425", 10); + mpz_set_str(table[22], "19666908137422236458493095910674637931068740198338983087978155870922387055421", 10); + mpz_set_str(table[23], "19962043380410021808655527387218133530776162882340334281843412159524380310139", 10); + mpz_set_str(table[24], "3468010851949114845382113514722053775630429483687304025667149478557953613528", 10); + mpz_set_str(table[25], "952485033363010317308825641797667284047534583490607905985126361447169654616", 10); + mpz_set_str(table[26], "3589298958967160302755346214401634176256662105144829643230139019476004446392", 10); + mpz_set_str(table[27], "16200536231075971314902850406932148717264394545765696629404972605399066149687", 10); + mpz_set_str(table[28], "8283245394328125429498598368340035800499597209031178156217337287155304423767", 10); + mpz_set_str(table[29], "10415654150818721530480417368530989837888699447816149286986248534082752078357", 10); + mpz_set_str(table[30], "19936608869334505564629131538306076659812056876589615338471775971008576555967", 10); + mpz_set_str(table[31], "7893915122914855246036270458773507670378370599202123400411563971872018279019", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=45 +*/ +void EscalarMulWindow_31007275113327d3(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9902616749484961598299692654503365890676603437422923154307898950573675691799", 10); + mpz_set_str(table[3], "3395360360050596061723679428758009141891424375869776300826995156115704624241", 10); + mpz_set_str(table[4], "16759530097436699833937131560380929010979008076550131932581563185297522016702", 10); + mpz_set_str(table[5], "17749228829503576342938283245784412940386305320487349029694202681131696959994", 10); + mpz_set_str(table[6], "16019315348798958924656194966919246354944408189009303079785898928644558904181", 10); + mpz_set_str(table[7], "8216345144012403775088320434705996942695231438776147261995169418331802758777", 10); + mpz_set_str(table[8], "14440595796112049913282722664442349554147163878099887988945359686493740220575", 10); + mpz_set_str(table[9], "12605747996639334238489995417802206381410126039028758487274734187864039465016", 10); + mpz_set_str(table[10], "13009043987168785003250435624694433217128032114632509147083558347036380017783", 10); + mpz_set_str(table[11], "1737719622641036112443264240959326631254886497367006982444346988971566616688", 10); + mpz_set_str(table[12], "5402498441401440683039757039705451191491706125761996448409021185061150125204", 10); + mpz_set_str(table[13], "18484457550496918829849336589967339982985444795640923953688712052561096061096", 10); + mpz_set_str(table[14], "20547719335717833433141075145728552247508140680305051575399619507247198380961", 10); + mpz_set_str(table[15], "19313330201831445440832645744606517854246644448265728482116030945911524247686", 10); + mpz_set_str(table[16], "7100315256853920540746824998676905838916534443458914553801754983465825101478", 10); + mpz_set_str(table[17], "16849157392929048397163558463492215528932487931328319676217271784688952560594", 10); + mpz_set_str(table[18], "15797869741926155893916467541479674294487274611531570541326412033714120646273", 10); + mpz_set_str(table[19], "14313110281809416338600909420723893621732008656398753444598800528317518939160", 10); + mpz_set_str(table[20], "3914943290393121496884237949428970663304012594435377852990275287306505001781", 10); + mpz_set_str(table[21], "1124318058979586797331748310626565685160446142236665368709166234106699356607", 10); + mpz_set_str(table[22], "2893881379644810640276884087536490373483491880458849543288801120206740428263", 10); + mpz_set_str(table[23], "20199722910070788740648772840234850364596102353945926856305972007905172156425", 10); + mpz_set_str(table[24], "11617526521892329284999100127276159769423755817604517644565972687247042936032", 10); + mpz_set_str(table[25], "17731656012378639184521520951134837628534894005642573667335920829630957619634", 10); + mpz_set_str(table[26], "18655161169619551389520669633419272530251074688307521636814070993393159309478", 10); + mpz_set_str(table[27], "9312678361392757562981301736658794572346304340953222831475831747429389627354", 10); + mpz_set_str(table[28], "8026517338903215127519545107057104618936966804994911758606567305781040242188", 10); + mpz_set_str(table[29], "4420792829768540581057154140922823832407188897565071374500706446229403638892", 10); + mpz_set_str(table[30], "21031462206259523430049295081291282715502825322852454132057930907401048955235", 10); + mpz_set_str(table[31], "7291628508573742286859498413350068205235090738827285120391714499222553007177", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=46 +*/ +void EscalarMulWindow_3100737511332986(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "5548387197420373117064229280559759249540214731675063068252772286573360393559", 10); + mpz_set_str(table[3], "21060190259360102308109978814772425159771481899386270152313333608512551921581", 10); + mpz_set_str(table[4], "8924253549021453448130097568672394207499453879633251861635303976268037324590", 10); + mpz_set_str(table[5], "3767520902098004358333157008413713800421756763638248885413049088024612992871", 10); + mpz_set_str(table[6], "16120919439723982428073698067832525849657128737358627524357171024760233301081", 10); + mpz_set_str(table[7], "21302568348030831548793439322084474036858050371941663100579693115772618396002", 10); + mpz_set_str(table[8], "15193750343803243351974302566744625709295001369378965611621856790022690147661", 10); + mpz_set_str(table[9], "11381520182388522999107041957375479209171418071990679048527006696160700684582", 10); + mpz_set_str(table[10], "19281517936163080077904623851907470976812421337832135046256236571396567616737", 10); + mpz_set_str(table[11], "3773264838716250734937566175564697693829549894268021176823435716392863598430", 10); + mpz_set_str(table[12], "19670638646425373167250509029543765062936221072661457050872213035541427149916", 10); + mpz_set_str(table[13], "14306019539208650080269150394453165191621243028300761767776826998920947732736", 10); + mpz_set_str(table[14], "1978020746074357142442530668348659743196194762283495030981019716369100297932", 10); + mpz_set_str(table[15], "11668504484481501606509807830205708358989022945285476233909671588520533245354", 10); + mpz_set_str(table[16], "13969481256680644954313528790995351228381743947002616906271136745361189403122", 10); + mpz_set_str(table[17], "2050810515492934568189284128319746705581725695946746145050036906488237641432", 10); + mpz_set_str(table[18], "13951300416378830085960669458155906650489433141017665561328196110249701790193", 10); + mpz_set_str(table[19], "18157599193368407628956964573822393397637167009622782513784960388137256216302", 10); + mpz_set_str(table[20], "15907227475005387219520297424511610083598605969878011738135488093363711743901", 10); + mpz_set_str(table[21], "13730821743963108417423311899890089348574747966518830744108907565067929402554", 10); + mpz_set_str(table[22], "3372590181917648349010257342038892667844895431408309450669535389012164486455", 10); + mpz_set_str(table[23], "18524978917874144121197803093019534946760011171304068324351809360945718674937", 10); + mpz_set_str(table[24], "16835279148355937739738969774738050152597100987038403110225253774066367358258", 10); + mpz_set_str(table[25], "10637278176836671026764341994008888346622121755858009734098808602278591502477", 10); + mpz_set_str(table[26], "5425897873841091984465754729172322328755777268803490072584949066856480821395", 10); + mpz_set_str(table[27], "11736870819331040275385705196249994148708453792568332019883507957222822774473", 10); + mpz_set_str(table[28], "17858501372350375892336624826813235305479888079504537810758734955102019315052", 10); + mpz_set_str(table[29], "21601825311034536724072639663169197332892148022696715023416460319341048286489", 10); + mpz_set_str(table[30], "17118850945829807733771548332115436318791381764266553317146989012644640834401", 10); + mpz_set_str(table[31], "21448750768493116141871782622904285645335688515468278845181118618543329422802", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=47 +*/ +void EscalarMulWindow_3100747511332b39(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11386571938819058696803600651408482297604186469440253602029065131145074400875", 10); + mpz_set_str(table[3], "3348329584264663431122740425482543130026920779856290339414845130037151449118", 10); + mpz_set_str(table[4], "21047114600430953708706071004607774642804431416815520272692054908406887682881", 10); + mpz_set_str(table[5], "21108297513642398392891079037955154310896447130401205289652726698454700314870", 10); + mpz_set_str(table[6], "13294328839868110370752981845818752117578302956908411091430780745377005857374", 10); + mpz_set_str(table[7], "18078036034494806149219379591645106192975355369001375397939872441709256329438", 10); + mpz_set_str(table[8], "4406040019663638638192232550330149211760093332829020055771061344319190984745", 10); + mpz_set_str(table[9], "9627340720395317715736634095409265207478483281312431070088788783813648661688", 10); + mpz_set_str(table[10], "2669432581523687777213610440790519187316728874641076041550598115629363817810", 10); + mpz_set_str(table[11], "20076487721079403370493786309193429899282983461517657854782489281379038993608", 10); + mpz_set_str(table[12], "1199489797481287465857257757156692713998600774749824340898823904200555031182", 10); + mpz_set_str(table[13], "18992140204723360808052615267597143413166448772645885861757620026587152710689", 10); + mpz_set_str(table[14], "20456146284928237099805446816310741348744758855341590061575528472105874001557", 10); + mpz_set_str(table[15], "15339517201853310471404229665186771707588060279267163907068339177208424528891", 10); + mpz_set_str(table[16], "2004517262136486688934242744041898195916397907544648468949990924775144844339", 10); + mpz_set_str(table[17], "9308569135981146406059465195904737982179841252578068732943612569462673065716", 10); + mpz_set_str(table[18], "9545021092430341852939352199287060580331661147216036890617206613703117932140", 10); + mpz_set_str(table[19], "1047088741471749312205783397711738847354374422073879921247948489039180410249", 10); + mpz_set_str(table[20], "12318251418478888219821787205340678496055439564106803039338061468546568940517", 10); + mpz_set_str(table[21], "10337538546031339781288870013594337337226697954742868349260421776891497664649", 10); + mpz_set_str(table[22], "4468793544093873191477334322379032719515983661750769000788706314088518480286", 10); + mpz_set_str(table[23], "15598537287667421113148191490051745985220520055514665443619722078432971172853", 10); + mpz_set_str(table[24], "7705999799023589912601817113066806668419981645493670373115711840958612019923", 10); + mpz_set_str(table[25], "561977050925919686655468563962476380643304414965639177564903105686927203145", 10); + mpz_set_str(table[26], "18056819733567999656100318096798714403150765707301199516347448815727309083630", 10); + mpz_set_str(table[27], "14320442678166458845052510620996957141348538187679119882925658000189820793333", 10); + mpz_set_str(table[28], "2529879567799889291146044779450592997782983058287035587007276360279146516610", 10); + mpz_set_str(table[29], "15806258750407171289361134420483747124902342900861663140382310272671577805176", 10); + mpz_set_str(table[30], "6639369965194342909759207991583959121857015098201173340876194811476624004342", 10); + mpz_set_str(table[31], "4895372596251639413611472055836862192021256933992055220575837992471288355713", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=48 +*/ +void EscalarMulWindow_31007d7511333a84(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9353407459615507340297958346561680933470740259606277383461922069991640562467", 10); + mpz_set_str(table[3], "19398333101670992384971347162611893877622578264460504029511112889295265024231", 10); + mpz_set_str(table[4], "7403409994724747716050199561996316978039299158677650901366467538509050838238", 10); + mpz_set_str(table[5], "18917954860563263926685927340987151646748002854188679290335681494324790595755", 10); + mpz_set_str(table[6], "16299744020180598759866194156026069538947788914321316977259846372606007627243", 10); + mpz_set_str(table[7], "20428219381972295141020235718361303932599621460399678977132239449922316521704", 10); + mpz_set_str(table[8], "5659214411664535564649203093355510395335232026559720032504558426119407679168", 10); + mpz_set_str(table[9], "15092553302421635111481611629477791702315702493848394389338147857196307007832", 10); + mpz_set_str(table[10], "13166084249042114332994859664438204842615652146304356708282981719465735141568", 10); + mpz_set_str(table[11], "17673083782379108748924817294922193766885348536552290071466462326860960637466", 10); + mpz_set_str(table[12], "14565295027139525973417394160599614128232882061651390408247261798999395929320", 10); + mpz_set_str(table[13], "8062181545277483271535396440679586384642208931201088437111423052237410743314", 10); + mpz_set_str(table[14], "15821592037972182911620794219825075141143608187149937528395667634039551784769", 10); + mpz_set_str(table[15], "8153028369684305129523651746891306318703818600306220057728192980907570036199", 10); + mpz_set_str(table[16], "1063806342650229085135728764529656606200018029149619736067507686581528943331", 10); + mpz_set_str(table[17], "2982981811360879316425860087532220815862242519890918416778490366922666711929", 10); + mpz_set_str(table[18], "12582349535695322143423603561381068075076209315482001462940962994563617040893", 10); + mpz_set_str(table[19], "19935473574848222023384151833990427819616776022112860787182552056319120546566", 10); + mpz_set_str(table[20], "2884448925281478893343813716855900231071667641018762022791880056555064702163", 10); + mpz_set_str(table[21], "14926342773465730750477861272117437298870443718938673687343741085624607736102", 10); + mpz_set_str(table[22], "5758662579463739446662635083575409017048944707234528292141988018657531908195", 10); + mpz_set_str(table[23], "9928124603040159394003729245598556209228022887666592330810606004389358878123", 10); + mpz_set_str(table[24], "1869034730102509554674627969840286765335813097573133758388100032970976398885", 10); + mpz_set_str(table[25], "10592769825539820940700993362703512012911979571781099925945743436518415588180", 10); + mpz_set_str(table[26], "11072503311770318877216813601674108838784353361307385437581289024664123520714", 10); + mpz_set_str(table[27], "19855780958978300853321667033277163882019339727038990975173701184980151622560", 10); + mpz_set_str(table[28], "566354030190725048395017374574731553808470890171924604251953696705285599515", 10); + mpz_set_str(table[29], "9955123523626955280107326070662480078999547830300561534399533357039829708066", 10); + mpz_set_str(table[30], "2697230334831173532868730371519559758056447985048998202505972675466958264327", 10); + mpz_set_str(table[31], "11930267608563562353000039410498646040854863336841825719518987251529790356327", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=49 +*/ +void EscalarMulWindow_31007e7511333c37(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11550029292334287077789485474502318318052299166258130708261218890935604689647", 10); + mpz_set_str(table[3], "4857763993976224954140861996750024065327776640284972342134138976572540524894", 10); + mpz_set_str(table[4], "16256168611509723213692143713369506432802840510456053811803434681859789384553", 10); + mpz_set_str(table[5], "7178839995825100234785533347556183854707431028009014034077419141019604121146", 10); + mpz_set_str(table[6], "10609829441372430717718913870660830683277815475695106585212441832714641430637", 10); + mpz_set_str(table[7], "9998918340968803462363370889322930126196179286006529740600235981287217329810", 10); + mpz_set_str(table[8], "1125104159749394439234543238014295578402128933255324392813219835559333359738", 10); + mpz_set_str(table[9], "8594159416651349591242730002424921274706708542158958317433398196352608677970", 10); + mpz_set_str(table[10], "7017692829444357600879842552699430298698374463327267749352000225988620732346", 10); + mpz_set_str(table[11], "17466164696456902630848471712698527167752927017009923072082415339832929140933", 10); + mpz_set_str(table[12], "9744425590027050988461564385935267533440993325193972937017986833619336298832", 10); + mpz_set_str(table[13], "14227739722050651388711087791556573924822687250356505382702535397594361936037", 10); + mpz_set_str(table[14], "3230131584585774248926385942821716282169874391854911678005767733675205044655", 10); + mpz_set_str(table[15], "19697160053079650655989059630740288322378393421580484729762230320215903199637", 10); + mpz_set_str(table[16], "20648701228093485830384292946112204035069489837960035313951700675103022162650", 10); + mpz_set_str(table[17], "12691267430920798044281118146673999830474786071481174759382623191313158539347", 10); + mpz_set_str(table[18], "166597440278122047371904134111956838594470349283289680958130635740424174180", 10); + mpz_set_str(table[19], "18171744037005326491347974410890291932933434218272871609584745022502570873827", 10); + mpz_set_str(table[20], "9340805231089631910361409046402045019597432215502588699487782222045042725565", 10); + mpz_set_str(table[21], "9895206783152355385887954378305203508286240911475663698452856689415367566578", 10); + mpz_set_str(table[22], "2051146987385986535645508089819755263283799313709319335415412013582930504171", 10); + mpz_set_str(table[23], "34557603005374266948930734256584603241220006500329198902896249171416724286", 10); + mpz_set_str(table[24], "6223661159580897273000792631776630537772036907913573842513714125555053320686", 10); + mpz_set_str(table[25], "2843656225914017592425178160430427271572144770630196541968366495658765691135", 10); + mpz_set_str(table[26], "15523223472860409216644948521422754359577325245323266205984623994856959048187", 10); + mpz_set_str(table[27], "8715820835995449705971255676531530286169212897961162568620102865431554514681", 10); + mpz_set_str(table[28], "950649793827276410801187686601733569459627376307932906739968078137372101942", 10); + mpz_set_str(table[29], "12099663126097958814333595809924370708549248803640222184571438444685936088429", 10); + mpz_set_str(table[30], "5108584720818090203512265121217613228424375410391397432109226473501152101096", 10); + mpz_set_str(table[31], "8632396216563722878192157965295037095555654129937687581965778657007027599419", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=50 +*/ +void EscalarMulWindow_3103fb7511364675(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "4302627033731539583590881421851582924665874587782832780278195201834216656227", 10); + mpz_set_str(table[3], "8269095588811032923214868664153512814877236110622329904766222490721228392383", 10); + mpz_set_str(table[4], "9547865063052360557770267876030406053388864656881550889207839544078046838444", 10); + mpz_set_str(table[5], "1771776812723859563124571047939775061660634894072771584772618556779200307456", 10); + mpz_set_str(table[6], "15435831373611488460840624945769402668038669175623385013558990884517063860647", 10); + mpz_set_str(table[7], "18667806379364163846574250454211001115475166537670228706977821036688470462878", 10); + mpz_set_str(table[8], "8782796459238222677529178985573056657672177392231773065921077461095340482078", 10); + mpz_set_str(table[9], "12311607834350777154333415926905788585427269740212726626142184702313820817223", 10); + mpz_set_str(table[10], "21697300200635238974864434785387906311551899594743079094700670936659536107841", 10); + mpz_set_str(table[11], "6813749232360402523776121131742703327539853366563439709701491235079391044070", 10); + mpz_set_str(table[12], "3186056671027403872325989864619410550284386117976877816245426932966706316283", 10); + mpz_set_str(table[13], "12829341780144579953714269710817954657899398333641530263390006961642073756686", 10); + mpz_set_str(table[14], "21370131215705685202668400547006851375616294060930093086310849174147518568254", 10); + mpz_set_str(table[15], "20261619886486820068565723052297241484458048899407370085251095582630773272894", 10); + mpz_set_str(table[16], "9317048267655864688341982626198820196421333150410827172631470410889510852439", 10); + mpz_set_str(table[17], "9917602791005245993426714527202188560442056191475073563573123233037450652827", 10); + mpz_set_str(table[18], "14346754277312303614149768761851643644944554479384532337719415567551284038467", 10); + mpz_set_str(table[19], "10345677819890522033658050708648032589136796411826826774250278630521342648252", 10); + mpz_set_str(table[20], "14978032825564742253485505811767197586912363794279745938645522944983821448201", 10); + mpz_set_str(table[21], "13475672903085998471704584819239278707564771706748226420340905290201451789224", 10); + mpz_set_str(table[22], "15365969981229369022128218512291786151935134831446420580106074440416460860492", 10); + mpz_set_str(table[23], "18740095528205175515739334837589593672168774840238681373270392701142211875316", 10); + mpz_set_str(table[24], "17073179608478242285211198500164563622801117572465953692467543166452745495145", 10); + mpz_set_str(table[25], "12484870275472035119960588036972343963837716564206634913738330085493602746840", 10); + mpz_set_str(table[26], "10363300328784732537796982275973151043471291918048777738181854823776957152031", 10); + mpz_set_str(table[27], "9862821770146023477874420548784580218906131694026979191648811963104597377678", 10); + mpz_set_str(table[28], "6433295991257769676659720013968263124476483031976983876730612687368513922694", 10); + mpz_set_str(table[29], "16355317280952078348008850759067897199775566380456453169430581760207051011638", 10); + mpz_set_str(table[30], "20063186459670578688140120057975347439079427526755237642082975083948095421382", 10); + mpz_set_str(table[31], "12651861313704360324738923878134575419263289405761427873957388292705700250324", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=51 +*/ +void EscalarMulWindow_3103fa75113644c2(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "11307898516253336212268605429717173530738912260240386777365385927635463396194", 10); + mpz_set_str(table[3], "14585930090616724857217942464438222268515684374672025246683998117421973727222", 10); + mpz_set_str(table[4], "20002701486348847660031182403391273085309594887814819258782577182288741796033", 10); + mpz_set_str(table[5], "1138553834537418730601815368380837313734850829412788077728096831582237562436", 10); + mpz_set_str(table[6], "10799306485190924107472867400451039347836509079112223774600222810480826332895", 10); + mpz_set_str(table[7], "10440707470739845847004931807388647573302452424248720742659067184033652950824", 10); + mpz_set_str(table[8], "2991180772308783189817013624196032444556763359465547611815427476205794879673", 10); + mpz_set_str(table[9], "2321665860034437385765778337913220461589370913074094052210850160808588693097", 10); + mpz_set_str(table[10], "10831117806827692206397622504973399506712818096936029932948670983396056749894", 10); + mpz_set_str(table[11], "20545059033944562652991880271128717714267570020129776310839251703000874031596", 10); + mpz_set_str(table[12], "12908606319411516405998805053931626605613784662757416773882991662667184297341", 10); + mpz_set_str(table[13], "19864888953423826852193063787250419364104119074341080569048504680002551234540", 10); + mpz_set_str(table[14], "18954047832363355499210097566706049973734540505910763823717872286425730585380", 10); + mpz_set_str(table[15], "1944845572735297294690425553673062024800855869150128326226150159810598016434", 10); + mpz_set_str(table[16], "5768529159880607231328893587813709446121884045676765088640340127563317590360", 10); + mpz_set_str(table[17], "19044180265184387743937377906918398481891294230054763490628596155311502286465", 10); + mpz_set_str(table[18], "10812144239490811837635295413876760787111795049744097056034718513104625916484", 10); + mpz_set_str(table[19], "16044310899670211189700468511258961288431400153246653250829734178610962583115", 10); + mpz_set_str(table[20], "19966332057621316604700416789900482936004843110630947974114164863016646389570", 10); + mpz_set_str(table[21], "6139614060014821996464818518666366260915600554588183024787039754097443421579", 10); + mpz_set_str(table[22], "21104771601646363121963524092941110387909002138660434984463552375800538927341", 10); + mpz_set_str(table[23], "2364598572346589596386077727848864548233031002279959919983429526736958058427", 10); + mpz_set_str(table[24], "6216933245648834638151901495571274671301884186238468571397147737925351724640", 10); + mpz_set_str(table[25], "85542955628974166314460367927582582445435063237719123163488080178409445395", 10); + mpz_set_str(table[26], "12207706844065404924463615679270817526842389458826399978435329991067891176164", 10); + mpz_set_str(table[27], "15388258710018413174636306638602608815090297524380042291561732260635937845254", 10); + mpz_set_str(table[28], "1429205012601060506644251652127697429939351293241864389552272544810604985075", 10); + mpz_set_str(table[29], "20807435512156829143768923725821924044719842545185106935444588021304141229557", 10); + mpz_set_str(table[30], "12486941398418307599529142462759685956226207008029312453757279533186555936701", 10); + mpz_set_str(table[31], "826868849095923044056779655388050356039302520812073981406082000050535458975", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=52 +*/ +void EscalarMulWindow_3103f9751136430f(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "20134073852284737960310994584056735539881108166780724913938227345482568357678", 10); + mpz_set_str(table[3], "16030886940290038379543182760717989024652004788979542994419064321569444941472", 10); + mpz_set_str(table[4], "19963394596326356819489855091012492177878419585279015486690723777053625700028", 10); + mpz_set_str(table[5], "14806472965253527465350659536526387197197158195041846435525623602094864884513", 10); + mpz_set_str(table[6], "1601683261880694426727685740805423203144142490009167610422567554314343919427", 10); + mpz_set_str(table[7], "20048135285255252842297222554842409236350984804516770750161835397714727989768", 10); + mpz_set_str(table[8], "11126092185518000644439916621476530130429022951635267445636405501734528825744", 10); + mpz_set_str(table[9], "10185117531779232571984817037810257722737980674056387331731973052420569478194", 10); + mpz_set_str(table[10], "12260097859080770031877002245996252301383748327184947266914992565126137101128", 10); + mpz_set_str(table[11], "6185220650612271141574466040495892991365203107354999925385448850969286167525", 10); + mpz_set_str(table[12], "14024443372680095135459728170192268969732671730470439751055825892743903011072", 10); + mpz_set_str(table[13], "17360531765426754267510502797214244178297579224456204241183094237739180451979", 10); + mpz_set_str(table[14], "8001754044879467164759654217301892825125962923331839594741896809586872864446", 10); + mpz_set_str(table[15], "19812876202832835501156443324149408210656219154595846013737657931736309080658", 10); + mpz_set_str(table[16], "16992605048069398488263350046819815833653837203333841369101540063958010910898", 10); + mpz_set_str(table[17], "10018817941802018759504576734598323079102235555984605351023845730328661694831", 10); + mpz_set_str(table[18], "14513545980688945383609321849051656814619430650059319537119328453928485651743", 10); + mpz_set_str(table[19], "9677493710718270961112401432015852640441827833427827422805258106766257607116", 10); + mpz_set_str(table[20], "19413312831183411518735800776955202546349448265158393030887090984457887642749", 10); + mpz_set_str(table[21], "8270375109967761463012171158194402258974113189745544322310378137826884262282", 10); + mpz_set_str(table[22], "11238664807357541606979556409967248472793455263121264864180422472598013569822", 10); + mpz_set_str(table[23], "7480023340849837721542369688744600286681747385355056617689846205078336601092", 10); + mpz_set_str(table[24], "19494412197906000955466199714427286178271665370964578957385297691900165341040", 10); + mpz_set_str(table[25], "18356178552154501290065998611779765688630660489507018649754866528177925533999", 10); + mpz_set_str(table[26], "20852456327855312184386131519721657883454891229290048535600580641443750438399", 10); + mpz_set_str(table[27], "14070060041442728889354665545848729721004902185937546707540438746762167004179", 10); + mpz_set_str(table[28], "15610642031144123140227314872733718358480438342132296569695507559452512795177", 10); + mpz_set_str(table[29], "19198004331353587227125706709717854339256375754129238724488437096054650493591", 10); + mpz_set_str(table[30], "2607916736602818314976170537964383406424487659100368117753144023131485777044", 10); + mpz_set_str(table[31], "20642684776575155851515682517648367682104723757265938626555038684433479310053", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=53 +*/ +void EscalarMulWindow_3103f8751136415c(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "9471790144309963354711579154240669565979958109019328445445514067079188706453", 10); + mpz_set_str(table[3], "7661061988940607334081239786163678068816320017689904291698311134541363459586", 10); + mpz_set_str(table[4], "15736778466688472206596554404132351380313196409320081031550581716046780586370", 10); + mpz_set_str(table[5], "5659720705768783217756971407396698692193007773752044999422064084082785406711", 10); + mpz_set_str(table[6], "1515625718994475057823965943385288898760642866237227724772988626136288432276", 10); + mpz_set_str(table[7], "19403252802969044169857808569817589291211939121093032588716990730705610205785", 10); + mpz_set_str(table[8], "6399219874394405733502963437521984944386900739700928032687886072090943579570", 10); + mpz_set_str(table[9], "10105984212021262688142627006204284084654134662004022029788761090604882619727", 10); + mpz_set_str(table[10], "5121039973129521501257780737594762117462633720253418660769677913426336242789", 10); + mpz_set_str(table[11], "17849769427089247765601918836616632733784223891279546998075563998794031622566", 10); + mpz_set_str(table[12], "20061822913515989540944515625390754307296663157462879500640242306067578634703", 10); + mpz_set_str(table[13], "16219181115037946603601779137655924002173683209576896437912830704618720521790", 10); + mpz_set_str(table[14], "2953631873393509987210963854683339405169139679715768157109520355266627192250", 10); + mpz_set_str(table[15], "16537866103438580748037463534413780593674469743758750479960868891771017447112", 10); + mpz_set_str(table[16], "12103174523200155445763293484911234993862340877058571057958190442902429313841", 10); + mpz_set_str(table[17], "17727566573166472920088564265296436697319157577004859416697208120516352841756", 10); + mpz_set_str(table[18], "5795244933710418736837752855584275514019607857618924484059822970932201037812", 10); + mpz_set_str(table[19], "20405480735238523728716859674068268632766401583115738916447291755191267714609", 10); + mpz_set_str(table[20], "3451678764966498344401373177103850902731173001437256472229629082256786373092", 10); + mpz_set_str(table[21], "15510252044949559866768040241839210520106478163849323635940118615288678181860", 10); + mpz_set_str(table[22], "8707549680064937904405220940888913393223664588137940659927262586690686668453", 10); + mpz_set_str(table[23], "15425738389646623966719449880585598089293786297739643007660615068116109677552", 10); + mpz_set_str(table[24], "16117547446044078140769490704030375963043138274345344027393219255920501572722", 10); + mpz_set_str(table[25], "14566484784700618711926552401468556956013853027877219370182883988207291065731", 10); + mpz_set_str(table[26], "9578687415154201600565379801245504306433043126897617162360766246492302430865", 10); + mpz_set_str(table[27], "11465559028391775359079892490002993400941223205318554500216740638489526435416", 10); + mpz_set_str(table[28], "21013328395390738262471095892350636698759972778863803858807351662793133844476", 10); + mpz_set_str(table[29], "3239151816420009502090254136578539267839500559376437647515835324944173145994", 10); + mpz_set_str(table[30], "4102054991066510564551038741050571146818079803865813992829797852620151443656", 10); + mpz_set_str(table[31], "3883851110745434106034813102667802216301778998133943725871264634605746938161", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=54 +*/ +void EscalarMulWindow_3103f77511363fa9(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12710241444393840241444373488608092735401345802013735473564715530172661261837", 10); + mpz_set_str(table[3], "21062513588594879763719218018603879900636499451991670319090734153387396586485", 10); + mpz_set_str(table[4], "3337962021630885202291452691099985258279897263661989150426674758109620606753", 10); + mpz_set_str(table[5], "21273690313665956433738524506785916979724850285772736605524090483721088185957", 10); + mpz_set_str(table[6], "7062568709351439894641236926721880129845962446856932352057094218795833351091", 10); + mpz_set_str(table[7], "19176758032035576084469281080189172056409371326298316687019280412424122358845", 10); + mpz_set_str(table[8], "18700803408735962456440156638088484045969462426841014321271417380506163576015", 10); + mpz_set_str(table[9], "4201009895193523679790412294093016914215278601359665850510452386466917321363", 10); + mpz_set_str(table[10], "6350113705557994061493527793424762366333443648860085163591602606133413224628", 10); + mpz_set_str(table[11], "13284100591949209635480456431253949138344593497043891366966237083990553036004", 10); + mpz_set_str(table[12], "10962840714891950227107826817162839674101878329501005125583766825424155667226", 10); + mpz_set_str(table[13], "173037207271443519282278263693729175285248727312756577837749366522679976501", 10); + mpz_set_str(table[14], "20465479571365048741569355022848980464757365476269177496001919323358075205469", 10); + mpz_set_str(table[15], "9276534302427970263414657657126707602717504457575276220277033035611007199359", 10); + mpz_set_str(table[16], "10030304900673959755851711903728678409666173173200272445827526680123105354001", 10); + mpz_set_str(table[17], "5843180947702850417469818047024829534541077201655256795556483963966577966415", 10); + mpz_set_str(table[18], "10255991850806226830144066190612105963844187253134418293982395044094412745053", 10); + mpz_set_str(table[19], "20680276893186481679246193213439773233074101300926416589184757027349787781507", 10); + mpz_set_str(table[20], "9154983088509023137566054874877009962303017087413715413701151571084589810220", 10); + mpz_set_str(table[21], "18994223852476769907893781362060658565335866764954390610322822816430334360932", 10); + mpz_set_str(table[22], "6437001655346824546551239148111737453611017039913469320538158189766929699323", 10); + mpz_set_str(table[23], "8707050947285572977748204187552485981486895381454376317941206612017691178544", 10); + mpz_set_str(table[24], "1841393170079948874015326567390285244163419887661696585996876329883366211661", 10); + mpz_set_str(table[25], "33750025319208354057534804766967356410254673729654634229546062382263110785", 10); + mpz_set_str(table[26], "13773384542089651797797611750093315983903156669451740498644408004207728025176", 10); + mpz_set_str(table[27], "6028133113480809859246434148092275091908599182169621306834822691819183179386", 10); + mpz_set_str(table[28], "9312699939180151527031347304668400708507081677597515705826389865267116417632", 10); + mpz_set_str(table[29], "12310039720550826754272912756514107997493294827897666578554058125719758023477", 10); + mpz_set_str(table[30], "15280602162987523566491034769639584898613756110991745557870555964441568960845", 10); + mpz_set_str(table[31], "21409557010127077534551523935329301560894331453254282266279206377280843254446", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=55 +*/ +void EscalarMulWindow_3103f67511363df6(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "15569509731463808354799947527085997010232400539214722032102095166586456507156", 10); + mpz_set_str(table[3], "847655824552965664665983803913306950502172234773950904080216045962718046079", 10); + mpz_set_str(table[4], "17343250303322136140712734191181058972130149344181144729973662612850749140033", 10); + mpz_set_str(table[5], "4135619949902765536673362860169749978469854339731244217296869419459239108182", 10); + mpz_set_str(table[6], "289229275183227001965228900096871817349664294468177722878017585462331066498", 10); + mpz_set_str(table[7], "5844288640455872867858913999954395773097311439445253407286197744069916443321", 10); + mpz_set_str(table[8], "8346230471634125647995579684874874353803350902974097176637414671779362512784", 10); + mpz_set_str(table[9], "14708728294170877160017249008960517392081465863541980164835044794161528000137", 10); + mpz_set_str(table[10], "5502905629776813500445131361790771159624916583770996489402087204904046621382", 10); + mpz_set_str(table[11], "9887520866573723571080767054094544071171065108417105094251065139610276762976", 10); + mpz_set_str(table[12], "16480974059501878141752883699359590903810057067203827828327268039305250201346", 10); + mpz_set_str(table[13], "14497044394856016756491096345365947163281516004534327152943119450552715080521", 10); + mpz_set_str(table[14], "12727040357200777210201436324067150333516841615474041867148309899018585657190", 10); + mpz_set_str(table[15], "21661197524161179811996622091199955183208337895023284118086242581966365614994", 10); + mpz_set_str(table[16], "18483318172896860230824109090185501644500825468321523965081782129698195331708", 10); + mpz_set_str(table[17], "1940383939506965902563629163298650925170023430255171291101920893147300846347", 10); + mpz_set_str(table[18], "9203239731084772491527714023262413806113553590443600757100249425530157373578", 10); + mpz_set_str(table[19], "18526372368265502175995678857081165617912344077280559372896636599965633075181", 10); + mpz_set_str(table[20], "19250485013055316169868428892681083272656577498989134895410573328032709192087", 10); + mpz_set_str(table[21], "19653736545396208933081349209814454706446333915598431178777365832215366501241", 10); + mpz_set_str(table[22], "11108064741923172918925873393575747159897270458049278929698555620359881739180", 10); + mpz_set_str(table[23], "6739079307038753282397868165545757372653656871046420244564514615855794260323", 10); + mpz_set_str(table[24], "16101172123060664912221547062758291102079492404020125142807222277993998584789", 10); + mpz_set_str(table[25], "14926095400796387217564523917697025100042889231728227670200888649380934389192", 10); + mpz_set_str(table[26], "3495721938567074564321726667409710693862608887724226550438435209341715149288", 10); + mpz_set_str(table[27], "19916786701428167683149817905614326625821387210949530372471233336874037365855", 10); + mpz_set_str(table[28], "21150555535304912321837298768378924163080318859924010354720448866344342840867", 10); + mpz_set_str(table[29], "2427122773211488702727200651311082908932816102239375843974048801736014103589", 10); + mpz_set_str(table[30], "162238947847889377980962591283729271071297629239464525398913686524030097133", 10); + mpz_set_str(table[31], "12085709889475146773112012595093050404965195234674333728078225631215554685609", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=56 +*/ +void EscalarMulWindow_3103f57511363c43(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "10337386278232558623910671969352401184684442870550504253214357719883615910641", 10); + mpz_set_str(table[3], "1612420639928585840644839171092190452010380536028455235539103495382595838270", 10); + mpz_set_str(table[4], "15174363165307969422318822464827015798757380964895294719744964937883209378873", 10); + mpz_set_str(table[5], "3103632537654959745635213984989040784149480270767304536009304917682296630703", 10); + mpz_set_str(table[6], "6330366766736357305261886601303184731617190785995262968961461474764083429826", 10); + mpz_set_str(table[7], "9998221204358926006776741584354492060541438320013993836652450142067350062034", 10); + mpz_set_str(table[8], "9480231520447889470096148245406542141345886516666843799810728214062139533685", 10); + mpz_set_str(table[9], "1567978059549882203194695500210825100521695921557966081361410403092508691983", 10); + mpz_set_str(table[10], "19760936466286491729624349700607920516431497611331019743354286930187475760236", 10); + mpz_set_str(table[11], "14677553660089969717962453966782521818670535991726643564440470019237498888545", 10); + mpz_set_str(table[12], "6980866081290044942101162036572808624897291566263495578471488628987559925106", 10); + mpz_set_str(table[13], "8156401784498649236937075454985749480997963371551340514217985746643785887151", 10); + mpz_set_str(table[14], "19879620290539104863895435770573810715651225330988885962324530317610264303709", 10); + mpz_set_str(table[15], "16360585570621609069137389277541577032449820129557431749057364337207268075355", 10); + mpz_set_str(table[16], "14141432428886969912197748880826293871323937806070927824281896531250659189419", 10); + mpz_set_str(table[17], "11079237197536160342397234464198834315431750459355355647374316460115127341982", 10); + mpz_set_str(table[18], "14666904754881895608265563821653554554693177520673022372014955519250367718160", 10); + mpz_set_str(table[19], "9381982065706129432287624987893380372460590674274135849093079664203674490518", 10); + mpz_set_str(table[20], "6289613545683086313609229465729106636631615082470351446181017048638373497558", 10); + mpz_set_str(table[21], "21244069980869175187915949211779095149759290931082897259194547514272875803022", 10); + mpz_set_str(table[22], "4159097115517485716734601154846450853116695661507648676889228728045958814608", 10); + mpz_set_str(table[23], "17642321593369764880399347342177994534136672309900094985992478609745240517763", 10); + mpz_set_str(table[24], "18393010734825134826911578692690391920211288242459015594205360292156830861705", 10); + mpz_set_str(table[25], "12093756100710773236778849889834681718188399355529104140684006431662912359397", 10); + mpz_set_str(table[26], "5877932045332725532926365227022143908891619540132121689854338430769657157262", 10); + mpz_set_str(table[27], "14625496793293222534270883546532950650835746337890550312886317792533843841934", 10); + mpz_set_str(table[28], "8469715332755649897825593509009689490868120895133565325296814800138233919439", 10); + mpz_set_str(table[29], "16914633452502096472303758599887851743021511976496498515486978052757893922019", 10); + mpz_set_str(table[30], "10917453721829066251250332574445862364638112841780214636392792070106571900932", 10); + mpz_set_str(table[31], "9060359750672058272342903482306165293235121395604406567619459600244304717794", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=57 +*/ +void EscalarMulWindow_3103f47511363a90(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "825826398613128988017232851661370900698491777008099065971660493023187864445", 10); + mpz_set_str(table[3], "10554589176317453577509116902103327990560872939997483317636552279547306653150", 10); + mpz_set_str(table[4], "7741922719806587766598420240393344063682407983199748724656654309250014470593", 10); + mpz_set_str(table[5], "20545796873410277625177939613361930559491817226024659752255540340154460619062", 10); + mpz_set_str(table[6], "12404507002934727264624698793324985452770099659201976609994223345571819557328", 10); + mpz_set_str(table[7], "10505575881586869480849090637555279486168656527556936315594830018392495009783", 10); + mpz_set_str(table[8], "14052658127363582162025964487521860507188610187851688089099418541413755553368", 10); + mpz_set_str(table[9], "9850954037525120563184696381061004964680110828174235670063629741637776626555", 10); + mpz_set_str(table[10], "8110202815012375236349886342429735622430199988476084868893339145526947301613", 10); + mpz_set_str(table[11], "10921406965680794741382855154482318058436571026412504949179183509783435455075", 10); + mpz_set_str(table[12], "20726324874087899988612500493385411950678010973105566875254021548556133975", 10); + mpz_set_str(table[13], "21575966413151975806748514996979724198956410726461211291795264736644214997092", 10); + mpz_set_str(table[14], "2438721688319181495143988292625315062119629542950247473307949090025565909212", 10); + mpz_set_str(table[15], "19688483698802742345387092067539336774912216020683037865068314276433134131534", 10); + mpz_set_str(table[16], "4212168126422394646575473365250714731914991083489514159634871877328752685311", 10); + mpz_set_str(table[17], "20686141691064959751428962930863775529968930385908862180101065458427521352091", 10); + mpz_set_str(table[18], "14499587505707204466587579551736659464614416608495611080986088370161862440923", 10); + mpz_set_str(table[19], "15401444974721048166199595914333660232711457710190306875945606656281865244479", 10); + mpz_set_str(table[20], "4057798905336790888200216032459428972126173266097972116647074359002996038586", 10); + mpz_set_str(table[21], "10567476768718487219881667513811438614178156073942269577104798381952557776779", 10); + mpz_set_str(table[22], "6428761324722381204556594796867100348392573470136547833708017341360052769053", 10); + mpz_set_str(table[23], "16313223805791963248538284903801513057220938939817347734206684784116795164595", 10); + mpz_set_str(table[24], "14802286557699357192615496032342292746653938513884666632894634867957994669857", 10); + mpz_set_str(table[25], "10039398335426206737520495178360938343270799248168396293128854885442357392706", 10); + mpz_set_str(table[26], "8717845621784296369051053507638609578567636687159595904869687801311292252290", 10); + mpz_set_str(table[27], "10512611554295596380748449225658641217960695369935150078337337954401088551104", 10); + mpz_set_str(table[28], "11798561098106765582114192314571118251035172258430904505231309071634181159352", 10); + mpz_set_str(table[29], "16371561162154216181088638295852733091501680013063133738779393762963953295463", 10); + mpz_set_str(table[30], "16570592823478876905170491584688783392612376969533732786062150186774178166848", 10); + mpz_set_str(table[31], "16483049098299217007960359198983764130425795812890413143530977367858955686199", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=58 +*/ +void EscalarMulWindow_310403751136540d(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "18148013772681295323313729926974144081761473650209963955905858599379365062867", 10); + mpz_set_str(table[3], "1934180223901113416258239993398380627420471822875616354289531717172636142737", 10); + mpz_set_str(table[4], "17486031304851396604181097365398558531561317823624895460094740530426071194783", 10); + mpz_set_str(table[5], "4904786464797837987030683608367392045696177375888822091092638797461299071938", 10); + mpz_set_str(table[6], "15093148461803611108888718259103660278027423393233532995695713493465614542889", 10); + mpz_set_str(table[7], "16435431947786590534273773258832636761259513429785919918417192556926468572977", 10); + mpz_set_str(table[8], "18469877554390492424033931955266424735401266331402111500423257934787363507611", 10); + mpz_set_str(table[9], "20253084736650341182131650836265785065757433481691531636494288844742648132519", 10); + mpz_set_str(table[10], "860709475750823310885820244116047886916099329387045649710070904927712506661", 10); + mpz_set_str(table[11], "18033072851734554795579901105706892536342543298742394779755885912347292046193", 10); + mpz_set_str(table[12], "12217466147017628574212766325198705664565522629830079368551092529749883105961", 10); + mpz_set_str(table[13], "11719313560784042607887596063019493778425854696531836459986743363106580886610", 10); + mpz_set_str(table[14], "10725506545576627867157913615352272792336853955067307830628069270520982113428", 10); + mpz_set_str(table[15], "1683718870099799879046479549743497757451627208515512263694816604259507974302", 10); + mpz_set_str(table[16], "20784352424807529623595959278191003000422365915582565004218054585170396451804", 10); + mpz_set_str(table[17], "2125249384284160991492461510467146733977564048389797904927133918284010711181", 10); + mpz_set_str(table[18], "6565931438230232985041064369658220145445025575106392786028402058083378257391", 10); + mpz_set_str(table[19], "6353261624734749073722531324002575785284280457639897916658242231384875594487", 10); + mpz_set_str(table[20], "1191894879914081900025856099513091626968608413261606524230263480862174473790", 10); + mpz_set_str(table[21], "19011136325078281878459948418423384806550806409516655953024338028790133160832", 10); + mpz_set_str(table[22], "16952894269675486228166020538548661670026842114446906133245893204396378466088", 10); + mpz_set_str(table[23], "20275335494660589151048567716238431136328232781683801247021943155934354830573", 10); + mpz_set_str(table[24], "19223345718360980548860790251632926297913586546924424790407231952305638289259", 10); + mpz_set_str(table[25], "19259194146386639151009155789773486353833880915974880675576831447366534501092", 10); + mpz_set_str(table[26], "4817471030982599753932980113754955418614019159781584542495277203922397838608", 10); + mpz_set_str(table[27], "9874459493437021908303245421801813281823130766080508802360698309777134808730", 10); + mpz_set_str(table[28], "16852530365158061624378137341458788937547698728119556493193873898424076923257", 10); + mpz_set_str(table[29], "5038712665731941557484734852448475752754664097767671098388288211612423770113", 10); + mpz_set_str(table[30], "17712494484024029516420745373637793356409574771706910104239899748279885360484", 10); + mpz_set_str(table[31], "21682789105728053044840284556958683477931469744426812598195554806708578103626", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=59 +*/ +void EscalarMulWindow_310402751136525a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "13201213420513133631946710890249929024043453210523691767325983875458841395163", 10); + mpz_set_str(table[3], "19189193772717264607978461736798607540009183941607988719093695862287599768316", 10); + mpz_set_str(table[4], "265099668210425069426032934484741808861476649385577362440472659869570754556", 10); + mpz_set_str(table[5], "4772306342397303489364969494987328875238096127612466100550612671599186363070", 10); + mpz_set_str(table[6], "9635954623993416737758947263833406269272701524300732265268466767525441956543", 10); + mpz_set_str(table[7], "12235855927072075206066613991683886718920716765231876264279453058605925342751", 10); + mpz_set_str(table[8], "9285818088987365337131858971826109471512371893231806398140766760393160233473", 10); + mpz_set_str(table[9], "19934374536979131247685743678277580239582587138332787130640292319304606646315", 10); + mpz_set_str(table[10], "18060805946488613544873802136469647299331392912108766231393560438177878823201", 10); + mpz_set_str(table[11], "11379814885634430159698976533488030011070700474099622971158567916966433789937", 10); + mpz_set_str(table[12], "6864073189081075653601759887496530903767248296715650078166738679311064038992", 10); + mpz_set_str(table[13], "954930391635216420052125687462335675583165538625113420448792828533314949589", 10); + mpz_set_str(table[14], "9001449387857646792593881815364980208437527895191549223473477672363754796203", 10); + mpz_set_str(table[15], "9951500986680191663490372358760514061921296650803060926447254021036302044051", 10); + mpz_set_str(table[16], "19718976903851058008475055401653131705192756003499102971032195561882012679425", 10); + mpz_set_str(table[17], "15174550403514799958881548585631420568532058082297338970739157805972042301170", 10); + mpz_set_str(table[18], "4101718753859799407893687617658454693685923494837053440673987374535604249868", 10); + mpz_set_str(table[19], "20549646018435516318815788832040114807249035973708996435350455903662876830195", 10); + mpz_set_str(table[20], "3646348971155663167078300436004800703182518455384428098628582343293936312713", 10); + mpz_set_str(table[21], "16784309560178865998174512628497525090839470210059578374058850372069570107298", 10); + mpz_set_str(table[22], "17382745693654589811727490647516647478546800200109160448507447202279758295983", 10); + mpz_set_str(table[23], "16110449051230697536150454624054860354141156002210297797931736588795557856902", 10); + mpz_set_str(table[24], "2174121364834107791894364998715059735995539457974331890171266849994509979443", 10); + mpz_set_str(table[25], "13823257600462786612074247247321984582055270395839968294354358506599604031904", 10); + mpz_set_str(table[26], "12926954318331197864838833724345310621060273970863187658164166929600245531862", 10); + mpz_set_str(table[27], "7063397132223206848794851884577990059648019130883044337773488769940230781007", 10); + mpz_set_str(table[28], "19042204117135364186557198033309072641040161562969924728486693938220831603554", 10); + mpz_set_str(table[29], "5760010797365010887796625952901667899803957687203303391641263298943162569429", 10); + mpz_set_str(table[30], "16243651326792731304554982075999921755291212921867127807733603100596864437220", 10); + mpz_set_str(table[31], "5739255654707932952650019252527735981103907587068196326732082725534084524445", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=60 +*/ +void EscalarMulWindow_310701751138867e(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "12286294471024767972418304223091891467424718643344831746327316255105013265308", 10); + mpz_set_str(table[3], "4001255280591196308426960767325018473344475545975814090810688460192215073155", 10); + mpz_set_str(table[4], "7338615797537906521462561536524900046882101619681098455063245632223235107260", 10); + mpz_set_str(table[5], "3301215797153104089410993402785874986310793079533186632945245028294273822714", 10); + mpz_set_str(table[6], "9863559329668340142151685261678331687652635640674281144358302225770891563384", 10); + mpz_set_str(table[7], "3532670162435061062512414308937148543002384328988503750405308979593281309967", 10); + mpz_set_str(table[8], "12807007651407926849531070107972704761861486253097576959076058809001011642914", 10); + mpz_set_str(table[9], "2407681705366546342190097491952454585978673125857369048705800533199245470234", 10); + mpz_set_str(table[10], "20411540599541401106955518440752444498819379048475236763152566532547237598919", 10); + mpz_set_str(table[11], "13750271450979663548210190433453800219183100415984763158692574214412010037438", 10); + mpz_set_str(table[12], "19147474762997683443174629980910746918881861820641258726823806154524971895798", 10); + mpz_set_str(table[13], "18095652603013053345262683641635395791317681750975154970027082779523857869627", 10); + mpz_set_str(table[14], "21299146461700361028406839478653590865798115450959114213692721082822750754732", 10); + mpz_set_str(table[15], "6637055795339397543222585259358384041596552115201577863134694052094491638605", 10); + mpz_set_str(table[16], "1941726336802434062909924897880447861847591067225483797974285098969930688013", 10); + mpz_set_str(table[17], "3791037693551707665887625624205652110752319962824302138222196362189984832890", 10); + mpz_set_str(table[18], "6552661231901866178501414461737078728551509930908515965504473735545644303199", 10); + mpz_set_str(table[19], "18074050693809441777471881507172383966494938949796625993397949068797538919411", 10); + mpz_set_str(table[20], "10670375986147547836746850006291913978074489861375211865501070753884676834603", 10); + mpz_set_str(table[21], "19423278176664305454881898734202762769407838107765892779863409604164460315876", 10); + mpz_set_str(table[22], "20308093751945518538976082464921508808055875499621983141965748693209298339016", 10); + mpz_set_str(table[23], "1516653181144633937135448621504167322572489130659402081879739722033859501682", 10); + mpz_set_str(table[24], "13037768788360809473165904880957545062214028539891277259165798238391540534603", 10); + mpz_set_str(table[25], "9556759030671051686046709436565179488687661496508826818264063193198794024510", 10); + mpz_set_str(table[26], "2406707624228397990759459995363681383705229679604585677866603093924221234543", 10); + mpz_set_str(table[27], "19099971485738052081256185932837043334898663325166117430829537795963951846517", 10); + mpz_set_str(table[28], "2117928231944965902118545119881471991642868691073361847875283846090795669060", 10); + mpz_set_str(table[29], "5135559544631262351286622723473301642962284807688249036413426569125828748163", 10); + mpz_set_str(table[30], "7379641312200595368782619998618047167897375049825170305984079801800346819147", 10); + mpz_set_str(table[31], "8480658133846085031375740896696096373006436359406492894156427480156865226412", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=61 +*/ +void EscalarMulWindow_3107027511388831(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6446496076490518960659682938305999336925534151245963517541567007447087975521", 10); + mpz_set_str(table[3], "2019648216255836384797932721821490491897267682589786839312300147860587669821", 10); + mpz_set_str(table[4], "20150046980542677940373916206783938419864065182332530203515586787026057426873", 10); + mpz_set_str(table[5], "8733497576866329749708230570378809239935415731302206757338927512435838669097", 10); + mpz_set_str(table[6], "9853435745364794967839773370134593975308688489645892220203708763208814470825", 10); + mpz_set_str(table[7], "13960741987783249427299525680006182886088700645717377202947333678694287312595", 10); + mpz_set_str(table[8], "5944803001529712599490509949317545723797627357952459058181823237999748765905", 10); + mpz_set_str(table[9], "16026374841299431450806234976468703584808497693229370259839241226338369387763", 10); + mpz_set_str(table[10], "8843829247382871456521924277750112236994730426881068520333015773383139172617", 10); + mpz_set_str(table[11], "16369125777486302415003732200850490635632739602196575546589645811686749093193", 10); + mpz_set_str(table[12], "14173405151893571766162218843345994200834683286147521513959028749158748079528", 10); + mpz_set_str(table[13], "3117050602382662130126580577498655757277006650180383614413984534523162336949", 10); + mpz_set_str(table[14], "21305513345954555636084623816208563984973267896169765298739719654691200409117", 10); + mpz_set_str(table[15], "6764023343324142166928111854512448386891528073362612545186998524282393010947", 10); + mpz_set_str(table[16], "17697942416743474789602659896752899553232686006571679601627096957631910451919", 10); + mpz_set_str(table[17], "16100771358981608102145579490242672554694513690355413142737038499055185258203", 10); + mpz_set_str(table[18], "9424873268866230860947713004343829865160624434386955757426040049365918196000", 10); + mpz_set_str(table[19], "14244359717894321046234094776956282951093590375772103209395367550524403470666", 10); + mpz_set_str(table[20], "6096465518088079793078226441796311106032781985851722201486103507417758959008", 10); + mpz_set_str(table[21], "19963266803276623826710490736822267678484896174357158691334533691588698656550", 10); + mpz_set_str(table[22], "13464231294097937476492585830608262782189537666296746662634131087232498136956", 10); + mpz_set_str(table[23], "17147580724826769366471074936495546519182950017179197236809304308615847540681", 10); + mpz_set_str(table[24], "10002529640883611031216439987268033543478846999298954290943295416757038303003", 10); + mpz_set_str(table[25], "13604649250761515301540260682988436278759439438054416933154369079725596688437", 10); + mpz_set_str(table[26], "7803705618321573191621093459415272262733199922548621714534543475611568675945", 10); + mpz_set_str(table[27], "16988497400125190531242979021306175394959283781563114688356565360814068232447", 10); + mpz_set_str(table[28], "15004279328443652981359762002440989030008542063375036030564391273438614538322", 10); + mpz_set_str(table[29], "21745407852202215283005389363150027727405608988532589597871543914927993108207", 10); + mpz_set_str(table[30], "20294146956031974829624449729800275000538652739624482122211889106131125941403", 10); + mpz_set_str(table[31], "16185910233486748383614554206992923087462183035937848213966773554338833167972", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +EscalarMulWindow +base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] +k=62 +sel[2]=0 +sel[3]=0 +*/ +void EscalarMulWindow_d9853d1d04a8f6cb(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + PBigInt _v_7; + int _offset_13; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + PBigInt _v_8; + int _offset_15; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_10; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "4", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "16", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_12; + int _offset_22; + PBigInt _v_13; + int _offset_24; + PBigInt table = ctx->allocBigInts(32); + PBigInt _v_14; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_15; + int _offset_26; + PBigInt _v_16; + int _offset_28; + PBigInt _v_17; + PBigInt _v_18; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "16", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_32; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_33; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_10; + int _compIdx_7; + int _sigIdx_11; + Circom_Sizes _sigSizes_8; + int _offset_34; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_8; + int _sigIdx_12; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_35; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_10; + int _sigIdx_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_10; + int _offset_36; + int _compIdx_11; + int _sigIdx_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_11; + int _offset_37; + + + /* signal input in[2] */ + + /* signal input sel[4] */ + + /* signal output out[2] */ + + /* var table */ + + /* component mux */ + + /* component adder */ + + /* var i */ + + /* table = EscalarMulW4Table(base, k) */ + + /* mux = MultiMux4(2) */ + + /* adder = BabyAdd() */ + + /* for (i=0,i<4,i++) */ + + /* sel[i] ==> mux.s[i] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_6 = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); + ctx->setSignal(_compIdx, _offset_6, _sigValue); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* sel[i] ==> mux.s[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _v_7 = i + 0; + _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); + _v_8 = i + 0; + _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); + _v_9 = i + 0; + ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_10 = i + 0; + ctx->field->lt(_tmp_4,_v_10,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=0,i<16,i++) */ + mpz_set_str(_num_4[0], "0", 10); + ctx->field->copyn(i, _num_4, 1); + _v_11 = i + 0; + ctx->field->lt(_tmp_5,_v_11,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* mux.c[0][i] <== table[i][0] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); + _v_12 = i + 0; + _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; + _v_13 = i + 0; + _offset_24 = ctx->field->toInt(_v_13)*2; + mpz_set_str(table[0], "0", 10); + mpz_set_str(table[1], "1", 10); + mpz_set_str(table[2], "6600834736095245391512368390411939590435383499809669289380392845967064057444", 10); + mpz_set_str(table[3], "1633434512792176902074648870945712028805008561742690591809872912129322248868", 10); + mpz_set_str(table[4], "16996318184956492942334646502712398459263974492360527679252913249520280570008", 10); + mpz_set_str(table[5], "19606106315039262061760392521792128729767050629444225388723754740612433373386", 10); + mpz_set_str(table[6], "19586249309441326420684158143227957922016964341400617150716942139045539181111", 10); + mpz_set_str(table[7], "1208971139685368024795229629123810712875363508652069176395900886322510155758", 10); + mpz_set_str(table[8], "7869430521407597508798694428486217896494164647651577096591908839179071816740", 10); + mpz_set_str(table[9], "2652002923612297664473349871307018470220720037371726066312417414363660735086", 10); + mpz_set_str(table[10], "19806604190927879117707398304164556469195833479644524852012470482356718380880", 10); + mpz_set_str(table[11], "10370086847876734926453946709787936557202271162431876667347439751886220791666", 10); + mpz_set_str(table[12], "2663629767540826004599981448534395517152473372480358812000815224554928456003", 10); + mpz_set_str(table[13], "9207732235973302533798065671040586053961210222960930811174724149896608057124", 10); + mpz_set_str(table[14], "15917834070138736481164712347131848355117927532235269522922208460805083710705", 10); + mpz_set_str(table[15], "13857571900858294657632494210200724431892241857560695406558696003046825117484", 10); + mpz_set_str(table[16], "70699033622291437248962604873968124418887292826447617994920193024392713075", 10); + mpz_set_str(table[17], "19838570974144894989479244511589773211125982144332318455369737113713811404408", 10); + mpz_set_str(table[18], "19916976267145920230607748108885506802631509537457663942653049639113153858817", 10); + mpz_set_str(table[19], "11591387735997900425994172721934925589958176079025009803405218201210114710024", 10); + mpz_set_str(table[20], "5138476365150979254117712435041963869004737393241390301149424700428140688804", 10); + mpz_set_str(table[21], "6715445107578362767060517282302740222189549195128518916519837730534436011988", 10); + mpz_set_str(table[22], "13808264826417046217275063640364739087608330819572913807331215420630258967632", 10); + mpz_set_str(table[23], "9747575873342827607333156657556591675053380437399410151299831040828092472235", 10); + mpz_set_str(table[24], "2636099407502932083457822735627413352598609469535775234991465804303069025190", 10); + mpz_set_str(table[25], "13308756045457775495570327854914600747139220312592957456749212221476182719874", 10); + mpz_set_str(table[26], "19323047059641902004766987260279125592640378720679649563286822052474610814780", 10); + mpz_set_str(table[27], "20353430351869962234584612643290197573449327507636178189220891078775877443701", 10); + mpz_set_str(table[28], "15542459110336791601835818219714853234659346918957562242740672684181966602331", 10); + mpz_set_str(table[29], "9165065992188962046717881241800694352779992196524897483850794077193256916683", 10); + mpz_set_str(table[30], "21135819146441038971961464709565881455773756910784526860750156523681008320853", 10); + mpz_set_str(table[31], "8479806898753630888209219305141397336190454856444754658577405239025189300917", 10); + _v_14 = table + _offset_24; + ctx->setSignal(_compIdx_2, _offset_22, _v_14); + + /* mux.c[1][i] <== table[i][1] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _v_15 = i + 0; + _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; + _v_16 = i + 0; + _offset_28 = ctx->field->toInt(_v_16)*2 + 1; + _v_17 = table + _offset_28; + ctx->setSignal(_compIdx_3, _offset_26, _v_17); + _v_18 = i + 0; + ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_19 = i + 0; + ctx->field->lt(_tmp_7,_v_19,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* in[0] ==> adder.x1 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); + ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); + + /* in[1] ==> adder.y1 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); + ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); + + /* mux.out[0] ==> adder.x2 */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; + ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); + ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); + + /* mux.out[1] ==> adder.y2 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; + ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); + ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); + + /* adder.xout ==> out[0] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); + + /* adder.yout ==> out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(table, 32); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); +} + +/* +Num2Bits +n=250 +*/ +void Num2Bits_615abe7f710c8f9d(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_1 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "1", 10); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_2; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _sigIdx_3; + Circom_Sizes _sigSizes_2; + int _offset_10; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_3; + int _offset_13; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "0", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + PBigInt lc1 = ctx->allocBigInts(1); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _sigIdx_5; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _v_12; + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + PBigInt _v_13; + int _offset_22; + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + PBigInt _v_14; + int _offset_24; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_6; + PBigInt _v_15; + int _offset_26; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "1", 10); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt _num_8 = ctx->allocBigInts(1); + PBigInt _v_16; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + PBigInt _v_17; + int _offset_29; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _v_18; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "2", 10); + PBigInt _tmp_14 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _tmp_17 = ctx->allocBigInts(1); + PBigInt _v_20; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "250", 10); + PBigInt _tmp_18 = ctx->allocBigInts(1); + PBigInt _v_22; + int _sigIdx_10; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + + + /* signal input in */ + + /* signal output out[n] */ + + /* var lc1=0 */ + + /* for (var i = 0,i> i) & 1 */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); + ctx->field->shr(_tmp_1,_sigValue,_const); + ctx->field->band(_tmp_2,_tmp_1,_const_1); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_6 = _sigIdx_1 + 0*_sigSizes[1]; + ctx->setSignal(ctx->cIdx, _offset_6, _tmp_2); + + /* out[i] * (out[i] -1 ) === 0 */ + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_8 = _sigIdx_2 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_1); + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_10 = _sigIdx_3 + 0*_sigSizes_2[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_2); + ctx->field->sub(_tmp_3,_sigValue_2,_const_2); + ctx->field->mul(_tmp_4,_sigValue_1,_tmp_3); + ctx->checkConstraint(_tmp_4, _num_4, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); + /* lc1 += out[i] * 2**i */ + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_13 = _sigIdx_4 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); + ctx->field->mul(_tmp_6,_sigValue_3,_const_3); + ctx->field->add(_tmp_7,_const_4,_tmp_6); + ctx->field->copyn(lc1, _tmp_7, 1); + mpz_set_str(_tmp_9[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_9); + while (_cond) { + + /* out[i] <-- (in >> i) & 1 */ + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); + _v_12 = i + 0; + ctx->field->shr(_tmp_10,_sigValue_4,_v_12); + ctx->field->band(_tmp_11,_tmp_10,_const_5); + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_13 = i + 0; + _offset_22 = _sigIdx_6 + ctx->field->toInt(_v_13)*_sigSizes_4[1]; + ctx->setSignal(ctx->cIdx, _offset_22, _tmp_11); + + /* out[i] * (out[i] -1 ) === 0 */ + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_14 = i + 0; + _offset_24 = _sigIdx_7 + ctx->field->toInt(_v_14)*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_15 = i + 0; + _offset_26 = _sigIdx_8 + ctx->field->toInt(_v_15)*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_6); + ctx->field->sub(_tmp_12,_sigValue_6,_const_6); + ctx->field->mul(_tmp_13,_sigValue_5,_tmp_12); + ctx->checkConstraint(_tmp_13, _num_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); + /* lc1 += out[i] * 2**i */ + _v_16 = lc1 + 0; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_17 = i + 0; + _offset_29 = _sigIdx_9 + ctx->field->toInt(_v_17)*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_7); + _v_18 = i + 0; + ctx->field->pow(_tmp_14,_const_7,_v_18); + ctx->field->mul(_tmp_15,_sigValue_7,_tmp_14); + ctx->field->add(_tmp_16,_v_16,_tmp_15); + ctx->field->copyn(lc1, _tmp_16, 1); + _v_19 = i + 0; + ctx->field->add(_tmp_17, _v_19, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_17, 1); + _v_20 = i + 0; + ctx->field->lt(_tmp_18,_v_20,_const_8); + _cond = ctx->field->isTrue(_tmp_18); + } + + /* lc1 === in */ + _v_22 = lc1 + 0; + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_8); + ctx->checkConstraint(_v_22, _sigValue_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:35:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(lc1, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_num_8, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_8, 1); +} + +// Components +Circom_Component _components[384] = { + {_htMain,_entryTableMain,Main_49e763aed00877a8, 2} + ,{_htPedersen,_entryTablePedersen,Pedersen_e89189a40b66818b, 500} + ,{_htEscalarMul,_entryTableEscalarMul,EscalarMul_f29b0428f5d364a5, 252} + ,{_htEscalarMul,_entryTableEscalarMul_1,EscalarMul_013c1dd4c0cce6a8, 252} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow,EscalarMulWindow_8a817f91638c8624, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_1,EscalarMulWindow_8a818091638c87d7, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_2,EscalarMulWindow_8a818191638c898a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_3,EscalarMulWindow_8a818291638c8b3d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_4,EscalarMulWindow_8a817b91638c7f58, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_5,EscalarMulWindow_8a817c91638c810b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_6,EscalarMulWindow_8a817d91638c82be, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_7,EscalarMulWindow_8a817e91638c8471, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_8,EscalarMulWindow_8a817791638c788c, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_9,EscalarMulWindow_8a817891638c7a3f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_10,EscalarMulWindow_e6955e0c27caed85, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_11,EscalarMulWindow_e6955d0c27caebd2, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_12,EscalarMulWindow_e6955c0c27caea1f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_13,EscalarMulWindow_e6955b0c27cae86c, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_14,EscalarMulWindow_e6955a0c27cae6b9, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_15,EscalarMulWindow_e695590c27cae506, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_16,EscalarMulWindow_e695580c27cae353, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_17,EscalarMulWindow_e695570c27cae1a0, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_18,EscalarMulWindow_e695660c27cafb1d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_19,EscalarMulWindow_e695650c27caf96a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_20,EscalarMulWindow_e698e40c27ce070e, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_21,EscalarMulWindow_e698e50c27ce08c1, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_22,EscalarMulWindow_e698e20c27ce03a8, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_23,EscalarMulWindow_e698e30c27ce055b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_24,EscalarMulWindow_e698e80c27ce0dda, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_25,EscalarMulWindow_e698e90c27ce0f8d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_26,EscalarMulWindow_e698e60c27ce0a74, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_27,EscalarMulWindow_e698e70c27ce0c27, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_28,EscalarMulWindow_e698dc0c27cdf976, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_29,EscalarMulWindow_e698dd0c27cdfb29, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_30,EscalarMulWindow_e69bea0c27d04717, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_31,EscalarMulWindow_e69be90c27d04564, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_32,EscalarMulWindow_e69bec0c27d04a7d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_33,EscalarMulWindow_e69beb0c27d048ca, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_34,EscalarMulWindow_e69be60c27d0404b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_35,EscalarMulWindow_e69be50c27d03e98, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_36,EscalarMulWindow_e69be80c27d043b1, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_37,EscalarMulWindow_e69be70c27d041fe, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_38,EscalarMulWindow_e69be20c27d0397f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_39,EscalarMulWindow_e69be10c27d037cc, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_40,EscalarMulWindow_e684600c27bc7db8, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_41,EscalarMulWindow_e684610c27bc7f6b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_42,EscalarMulWindow_e684620c27bc811e, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_43,EscalarMulWindow_e684630c27bc82d1, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_44,EscalarMulWindow_e684640c27bc8484, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_45,EscalarMulWindow_e684650c27bc8637, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_46,EscalarMulWindow_e684660c27bc87ea, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_47,EscalarMulWindow_e684670c27bc899d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_48,EscalarMulWindow_e684580c27bc7020, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_49,EscalarMulWindow_e684590c27bc71d3, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_50,EscalarMulWindow_e687e60c27bf9741, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_51,EscalarMulWindow_e687e50c27bf958e, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_52,EscalarMulWindow_e687e40c27bf93db, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_53,EscalarMulWindow_e687e30c27bf9228, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_54,EscalarMulWindow_e687ea0c27bf9e0d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_55,EscalarMulWindow_e687e90c27bf9c5a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_56,EscalarMulWindow_e687e80c27bf9aa7, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_57,EscalarMulWindow_e687e70c27bf98f4, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_58,EscalarMulWindow_e687de0c27bf89a9, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_59,EscalarMulWindow_e687dd0c27bf87f6, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_60,EscalarMulWindow_e68aec0c27c1d74a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_61,EscalarMulWindow_e68aed0c27c1d8fd, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_62,EscalarMulWindow_04331b56a98f2867, 6} + ,{_htMultiMux4,_entryTableMultiMux4,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_1,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_1,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_2,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_2,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_3,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_3,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_4,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_4,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_5,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_5,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_6,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_6,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_7,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_7,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_8,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_8,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_9,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_9,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_10,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_10,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_11,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_11,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_12,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_12,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_13,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_13,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_14,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_14,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_15,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_15,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_16,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_16,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_17,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_17,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_18,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_18,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_19,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_19,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_20,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_20,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_21,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_21,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_22,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_22,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_23,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_23,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_24,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_24,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_25,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_25,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_26,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_26,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_27,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_27,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_28,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_28,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_29,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_29,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_30,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_30,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_31,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_31,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_32,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_32,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_33,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_33,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_34,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_34,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_35,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_35,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_36,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_36,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_37,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_37,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_38,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_38,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_39,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_39,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_40,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_40,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_41,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_41,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_42,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_42,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_43,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_43,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_44,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_44,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_45,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_45,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_46,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_46,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_47,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_47,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_48,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_48,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_49,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_49,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_50,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_50,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_51,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_51,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_52,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_52,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_53,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_53,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_54,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_54,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_55,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_55,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_56,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_56,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_57,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_57,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_58,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_58,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_59,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_59,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_60,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_60,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_61,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_61,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_62,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_62,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_63,EscalarMulWindow_c58c15588b83ea88, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_64,EscalarMulWindow_c58c16588b83ec3b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_65,EscalarMulWindow_c58c17588b83edee, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_66,EscalarMulWindow_c58c18588b83efa1, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_67,EscalarMulWindow_c58c19588b83f154, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_68,EscalarMulWindow_c58c1a588b83f307, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_69,EscalarMulWindow_c58c1b588b83f4ba, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_70,EscalarMulWindow_c58c1c588b83f66d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_71,EscalarMulWindow_c58c0d588b83dcf0, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_72,EscalarMulWindow_c58c0e588b83dea3, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_73,EscalarMulWindow_30f60375112a16b1, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_74,EscalarMulWindow_30f60275112a14fe, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_75,EscalarMulWindow_30f60175112a134b, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_76,EscalarMulWindow_30f60075112a1198, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_77,EscalarMulWindow_30f60775112a1d7d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_78,EscalarMulWindow_30f60675112a1bca, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_79,EscalarMulWindow_30f60575112a1a17, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_80,EscalarMulWindow_30f60475112a1864, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_81,EscalarMulWindow_30f5fb75112a0919, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_82,EscalarMulWindow_30f5fa75112a0766, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_83,EscalarMulWindow_30f98975112d303a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_84,EscalarMulWindow_30f98a75112d31ed, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_85,EscalarMulWindow_30f98775112d2cd4, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_86,EscalarMulWindow_30f98875112d2e87, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_87,EscalarMulWindow_30f98575112d296e, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_88,EscalarMulWindow_30f98675112d2b21, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_89,EscalarMulWindow_30f98375112d2608, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_90,EscalarMulWindow_30f98475112d27bb, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_91,EscalarMulWindow_30f98175112d22a2, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_92,EscalarMulWindow_30f98275112d2455, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_93,EscalarMulWindow_30fcef7511301363, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_94,EscalarMulWindow_30fcee75113011b0, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_95,EscalarMulWindow_30fcf175113016c9, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_96,EscalarMulWindow_30fcf07511301516, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_97,EscalarMulWindow_30fcf37511301a2f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_98,EscalarMulWindow_30fcf2751130187c, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_99,EscalarMulWindow_30fcf57511301d95, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_100,EscalarMulWindow_30fcf47511301be2, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_101,EscalarMulWindow_30fcf775113020fb, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_102,EscalarMulWindow_30fcf67511301f48, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_103,EscalarMulWindow_3100757511332cec, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_104,EscalarMulWindow_3100767511332e9f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_105,EscalarMulWindow_3100777511333052, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_106,EscalarMulWindow_3100787511333205, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_107,EscalarMulWindow_3100717511332620, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_108,EscalarMulWindow_31007275113327d3, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_109,EscalarMulWindow_3100737511332986, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_110,EscalarMulWindow_3100747511332b39, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_111,EscalarMulWindow_31007d7511333a84, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_112,EscalarMulWindow_31007e7511333c37, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_113,EscalarMulWindow_3103fb7511364675, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_114,EscalarMulWindow_3103fa75113644c2, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_115,EscalarMulWindow_3103f9751136430f, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_116,EscalarMulWindow_3103f8751136415c, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_117,EscalarMulWindow_3103f77511363fa9, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_118,EscalarMulWindow_3103f67511363df6, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_119,EscalarMulWindow_3103f57511363c43, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_120,EscalarMulWindow_3103f47511363a90, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_121,EscalarMulWindow_310403751136540d, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_122,EscalarMulWindow_310402751136525a, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_123,EscalarMulWindow_310701751138867e, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_124,EscalarMulWindow_3107027511388831, 6} + ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_125,EscalarMulWindow_d9853d1d04a8f6cb, 6} + ,{_htMultiMux4,_entryTableMultiMux4_63,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_63,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_64,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_64,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_65,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_65,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_66,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_66,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_67,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_67,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_68,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_68,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_69,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_69,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_70,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_70,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_71,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_71,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_72,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_72,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_73,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_73,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_74,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_74,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_75,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_75,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_76,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_76,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_77,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_77,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_78,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_78,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_79,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_79,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_80,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_80,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_81,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_81,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_82,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_82,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_83,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_83,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_84,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_84,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_85,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_85,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_86,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_86,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_87,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_87,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_88,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_88,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_89,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_89,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_90,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_90,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_91,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_91,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_92,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_92,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_93,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_93,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_94,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_94,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_95,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_95,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_96,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_96,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_97,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_97,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_98,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_98,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_99,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_99,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_100,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_100,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_101,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_101,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_102,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_102,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_103,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_103,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_104,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_104,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_105,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_105,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_106,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_106,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_107,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_107,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_108,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_108,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_109,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_109,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_110,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_110,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_111,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_111,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_112,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_112,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_113,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_113,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_114,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_114,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_115,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_115,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_116,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_116,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_117,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_117,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_118,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_118,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_119,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_119,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_120,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_120,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_121,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_121,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_122,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_122,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_123,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_123,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_124,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_124,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htMultiMux4,_entryTableMultiMux4_125,MultiMux4_e43006c194d99269, 36} + ,{_htBabyAdd,_entryTableBabyAdd_125,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htNum2Bits,_entryTableNum2Bits,Num2Bits_615abe7f710c8f9d, 1} + ,{_htNum2Bits,_entryTableNum2Bits_1,Num2Bits_615abe7f710c8f9d, 1} +}; + + +// mapIsArray +u32 _mapIsInput[410] = { + 0xFFFFFFE6,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x7E7FFFFF,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000 +,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07 +,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF +,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000 +,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81 +,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF +,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 +}; + +// Signal Table +int _wit2sig[5541] = { + 0,12601,12602,1,2,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668 +,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12731,12732 +,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775,12776,12777,12778,12779,12780,12781,12782,12783,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796 +,12797,12798,12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,12828,12829,12830,12831,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12860,12861,12862 +,12863,12864,12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892,12893,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926 +,12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990 +,12991,12992,12993,12994,12995,12996,12997,12998,12999,13000,13001,13002,13003,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054 +,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,6551,6552,847,848,805,806,807,808,809,810 +,811,812,813,814,815,816,817,818,819,820,823,824,825,826,827,828,829,830,831,832,833,834,835,836,839,840,841,842,849,850,851,852,939,940,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,915,916,917,918,919,920,921,922,923,924,925,926,927,928 +,931,932,933,934,941,942,943,944,1031,1032,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1023,1024,1025,1026,1033,1034,1035,1036,1123,1124,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094 +,1095,1096,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1115,1116,1117,1118,1125,1126,1127,1128,1215,1216,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1207,1208,1209,1210,1217,1218,1219,1220 +,1307,1308,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1299,1300,1301,1302,1309,1310,1311,1312,1399,1400,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1375,1376,1377,1378,1379,1380 +,1381,1382,1383,1384,1385,1386,1387,1388,1391,1392,1393,1394,1401,1402,1403,1404,1491,1492,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1483,1484,1485,1486,1493,1494,1495,1496,1583,1584,1541,1542,1543,1544,1545,1546 +,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1575,1576,1577,1578,1585,1586,1587,1588,1675,1676,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664 +,1667,1668,1669,1670,1677,1678,1679,1680,1767,1768,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1769,1770,1771,1772,1859,1860,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830 +,1831,1832,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1851,1852,1853,1854,1861,1862,1863,1864,1951,1952,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1943,1944,1945,1946,1953,1954,1955,1956 +,2043,2044,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2035,2036,2037,2038,2045,2046,2047,2048,2135,2136,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2111,2112,2113,2114,2115,2116 +,2117,2118,2119,2120,2121,2122,2123,2124,2127,2128,2129,2130,2137,2138,2139,2140,2227,2228,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2219,2220,2221,2222,2229,2230,2231,2232,2319,2320,2277,2278,2279,2280,2281,2282 +,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2311,2312,2313,2314,2321,2322,2323,2324,2411,2412,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400 +,2403,2404,2405,2406,2413,2414,2415,2416,2503,2504,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2495,2496,2497,2498,2505,2506,2507,2508,2595,2596,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566 +,2567,2568,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2587,2588,2589,2590,2597,2598,2599,2600,2687,2688,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2679,2680,2681,2682,2689,2690,2691,2692 +,2779,2780,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2771,2772,2773,2774,2781,2782,2783,2784,2871,2872,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2847,2848,2849,2850,2851,2852 +,2853,2854,2855,2856,2857,2858,2859,2860,2863,2864,2865,2866,2873,2874,2875,2876,2963,2964,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2955,2956,2957,2958,2965,2966,2967,2968,3055,3056,3013,3014,3015,3016,3017,3018 +,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3047,3048,3049,3050,3057,3058,3059,3060,3147,3148,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136 +,3139,3140,3141,3142,3149,3150,3151,3152,3239,3240,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3231,3232,3233,3234,3241,3242,3243,3244,3331,3332,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302 +,3303,3304,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3323,3324,3325,3326,3333,3334,3335,3336,3423,3424,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3415,3416,3417,3418,3425,3426,3427,3428 +,3515,3516,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3507,3508,3509,3510,3517,3518,3519,3520,3607,3608,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3583,3584,3585,3586,3587,3588 +,3589,3590,3591,3592,3593,3594,3595,3596,3599,3600,3601,3602,3609,3610,3611,3612,3699,3700,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3691,3692,3693,3694,3701,3702,3703,3704,3791,3792,3749,3750,3751,3752,3753,3754 +,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3783,3784,3785,3786,3793,3794,3795,3796,3883,3884,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872 +,3875,3876,3877,3878,3885,3886,3887,3888,3975,3976,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3967,3968,3969,3970,3977,3978,3979,3980,4067,4068,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038 +,4039,4040,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4059,4060,4061,4062,4069,4070,4071,4072,4159,4160,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4151,4152,4153,4154,4161,4162,4163,4164 +,4251,4252,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4243,4244,4245,4246,4253,4254,4255,4256,4343,4344,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4319,4320,4321,4322,4323,4324 +,4325,4326,4327,4328,4329,4330,4331,4332,4335,4336,4337,4338,4345,4346,4347,4348,4435,4436,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4427,4428,4429,4430,4437,4438,4439,4440,4527,4528,4485,4486,4487,4488,4489,4490 +,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4519,4520,4521,4522,4529,4530,4531,4532,4619,4620,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608 +,4611,4612,4613,4614,4621,4622,4623,4624,4711,4712,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4687,4688,4689,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,4700,4703,4704,4705,4706,4713,4714,4715,4716,4803,4804,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774 +,4775,4776,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4795,4796,4797,4798,4805,4806,4807,4808,4895,4896,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,4884,4887,4888,4889,4890,4897,4898,4899,4900 +,4987,4988,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,4960,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4979,4980,4981,4982,4989,4990,4991,4992,5079,5080,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5055,5056,5057,5058,5059,5060 +,5061,5062,5063,5064,5065,5066,5067,5068,5071,5072,5073,5074,5081,5082,5083,5084,5171,5172,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5163,5164,5165,5166,5173,5174,5175,5176,5263,5264,5221,5222,5223,5224,5225,5226 +,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5255,5256,5257,5258,5265,5266,5267,5268,5355,5356,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344 +,5347,5348,5349,5350,5357,5358,5359,5360,5447,5448,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5439,5440,5441,5442,5449,5450,5451,5452,5539,5540,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510 +,5511,5512,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5531,5532,5533,5534,5541,5542,5543,5544,5631,5632,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5623,5624,5625,5626,5633,5634,5635,5636 +,5723,5724,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5715,5716,5717,5718,5725,5726,5727,5728,5815,5816,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5791,5792,5793,5794,5795,5796 +,5797,5798,5799,5800,5801,5802,5803,5804,5807,5808,5809,5810,5817,5818,5819,5820,5907,5908,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5899,5900,5901,5902,5909,5910,5911,5912,5999,6000,5957,5958,5959,5960,5961,5962 +,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5991,5992,5993,5994,6001,6002,6003,6004,6091,6092,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080 +,6083,6084,6085,6086,6093,6094,6095,6096,6183,6184,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6175,6176,6177,6178,6185,6186,6187,6188,6275,6276,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246 +,6247,6248,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6267,6268,6269,6270,6277,6278,6279,6280,6367,6368,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6359,6360,6361,6362,6369,6370,6371,6372 +,6459,6460,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6451,6452,6453,6454,6461,6462,6463,6464,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6527,6528,6529,6530,6531,6532,6533,6534 +,6535,6536,6537,6538,6539,6540,6543,6544,6545,6546,6553,6554,6555,6556,6897,6898,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6889,6890,6891,6892,6899,6900,6901,6902,6989,6990,6947,6948,6949,6950,6951,6952,6953,6954 +,6955,6956,6957,6958,6959,6960,6961,6962,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6981,6982,6983,6984,6991,6992,6993,6994,7081,7082,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7073,7074 +,7075,7076,7083,7084,7085,7086,7173,7174,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7165,7166,7167,7168,7175,7176,7177,7178,7265,7266,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238 +,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7257,7258,7259,7260,7267,7268,7269,7270,7357,7358,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7349,7350,7351,7352,7359,7360,7361,7362,7449,7450 +,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7441,7442,7443,7444,7451,7452,7453,7454,7541,7542,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7517,7518,7519,7520,7521,7522,7523,7524 +,7525,7526,7527,7528,7529,7530,7533,7534,7535,7536,7543,7544,7545,7546,7633,7634,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7625,7626,7627,7628,7635,7636,7637,7638,7725,7726,7683,7684,7685,7686,7687,7688,7689,7690 +,7691,7692,7693,7694,7695,7696,7697,7698,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7717,7718,7719,7720,7727,7728,7729,7730,7817,7818,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7809,7810 +,7811,7812,7819,7820,7821,7822,7909,7910,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7901,7902,7903,7904,7911,7912,7913,7914,8001,8002,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974 +,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7993,7994,7995,7996,8003,8004,8005,8006,8093,8094,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8085,8086,8087,8088,8095,8096,8097,8098,8185,8186 +,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8177,8178,8179,8180,8187,8188,8189,8190,8277,8278,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8253,8254,8255,8256,8257,8258,8259,8260 +,8261,8262,8263,8264,8265,8266,8269,8270,8271,8272,8279,8280,8281,8282,8369,8370,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8361,8362,8363,8364,8371,8372,8373,8374,8461,8462,8419,8420,8421,8422,8423,8424,8425,8426 +,8427,8428,8429,8430,8431,8432,8433,8434,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8453,8454,8455,8456,8463,8464,8465,8466,8553,8554,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8545,8546 +,8547,8548,8555,8556,8557,8558,8645,8646,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8637,8638,8639,8640,8647,8648,8649,8650,8737,8738,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710 +,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8729,8730,8731,8732,8739,8740,8741,8742,8829,8830,8787,8788,8789,8790,8791,8792,8793,8794,8795,8796,8797,8798,8799,8800,8801,8802,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8816,8817,8818,8821,8822,8823,8824,8831,8832,8833,8834,8921,8922 +,8879,8880,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8913,8914,8915,8916,8923,8924,8925,8926,9013,9014,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8989,8990,8991,8992,8993,8994,8995,8996 +,8997,8998,8999,9000,9001,9002,9005,9006,9007,9008,9015,9016,9017,9018,9105,9106,9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9097,9098,9099,9100,9107,9108,9109,9110,9197,9198,9155,9156,9157,9158,9159,9160,9161,9162 +,9163,9164,9165,9166,9167,9168,9169,9170,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9189,9190,9191,9192,9199,9200,9201,9202,9289,9290,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259,9260,9261,9262,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9275,9276,9277,9278,9281,9282 +,9283,9284,9291,9292,9293,9294,9381,9382,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9352,9353,9354,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9373,9374,9375,9376,9383,9384,9385,9386,9473,9474,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446 +,9449,9450,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9465,9466,9467,9468,9475,9476,9477,9478,9565,9566,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9557,9558,9559,9560,9567,9568,9569,9570,9657,9658 +,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9649,9650,9651,9652,9659,9660,9661,9662,9749,9750,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9725,9726,9727,9728,9729,9730,9731,9732 +,9733,9734,9735,9736,9737,9738,9741,9742,9743,9744,9751,9752,9753,9754,9841,9842,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9833,9834,9835,9836,9843,9844,9845,9846,9933,9934,9891,9892,9893,9894,9895,9896,9897,9898 +,9899,9900,9901,9902,9903,9904,9905,9906,9909,9910,9911,9912,9913,9914,9915,9916,9917,9918,9919,9920,9921,9922,9925,9926,9927,9928,9935,9936,9937,9938,10025,10026,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10017,10018 +,10019,10020,10027,10028,10029,10030,10117,10118,10075,10076,10077,10078,10079,10080,10081,10082,10083,10084,10085,10086,10087,10088,10089,10090,10093,10094,10095,10096,10097,10098,10099,10100,10101,10102,10103,10104,10105,10106,10109,10110,10111,10112,10119,10120,10121,10122,10209,10210,10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182 +,10185,10186,10187,10188,10189,10190,10191,10192,10193,10194,10195,10196,10197,10198,10201,10202,10203,10204,10211,10212,10213,10214,10301,10302,10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,10274,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287,10288,10289,10290,10293,10294,10295,10296,10303,10304,10305,10306,10393,10394 +,10351,10352,10353,10354,10355,10356,10357,10358,10359,10360,10361,10362,10363,10364,10365,10366,10369,10370,10371,10372,10373,10374,10375,10376,10377,10378,10379,10380,10381,10382,10385,10386,10387,10388,10395,10396,10397,10398,10485,10486,10443,10444,10445,10446,10447,10448,10449,10450,10451,10452,10453,10454,10455,10456,10457,10458,10461,10462,10463,10464,10465,10466,10467,10468 +,10469,10470,10471,10472,10473,10474,10477,10478,10479,10480,10487,10488,10489,10490,10577,10578,10535,10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,10546,10547,10548,10549,10550,10553,10554,10555,10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10569,10570,10571,10572,10579,10580,10581,10582,10669,10670,10627,10628,10629,10630,10631,10632,10633,10634 +,10635,10636,10637,10638,10639,10640,10641,10642,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655,10656,10657,10658,10661,10662,10663,10664,10671,10672,10673,10674,10761,10762,10719,10720,10721,10722,10723,10724,10725,10726,10727,10728,10729,10730,10731,10732,10733,10734,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10753,10754 +,10755,10756,10763,10764,10765,10766,10853,10854,10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10845,10846,10847,10848,10855,10856,10857,10858,10945,10946,10903,10904,10905,10906,10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918 +,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,10933,10934,10937,10938,10939,10940,10947,10948,10949,10950,11037,11038,10995,10996,10997,10998,10999,11000,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11013,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11029,11030,11031,11032,11039,11040,11041,11042,11129,11130 +,11087,11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,11116,11117,11118,11121,11122,11123,11124,11131,11132,11133,11134,11221,11222,11179,11180,11181,11182,11183,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11197,11198,11199,11200,11201,11202,11203,11204 +,11205,11206,11207,11208,11209,11210,11213,11214,11215,11216,11223,11224,11225,11226,11313,11314,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11305,11306,11307,11308,11315,11316,11317,11318,11405,11406,11363,11364,11365,11366,11367,11368,11369,11370 +,11371,11372,11373,11374,11375,11376,11377,11378,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11397,11398,11399,11400,11407,11408,11409,11410,11497,11498,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11489,11490 +,11491,11492,11499,11500,11501,11502,11589,11590,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11581,11582,11583,11584,11591,11592,11593,11594,11681,11682,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654 +,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11673,11674,11675,11676,11683,11684,11685,11686,11773,11774,11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,11741,11742,11743,11744,11745,11746,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11765,11766,11767,11768,11775,11776,11777,11778,11865,11866 +,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,11835,11836,11837,11838,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850,11851,11852,11853,11854,11857,11858,11859,11860,11867,11868,11869,11870,11957,11958,11915,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928,11929,11930,11933,11934,11935,11936,11937,11938,11939,11940 +,11941,11942,11943,11944,11945,11946,11949,11950,11951,11952,11959,11960,11961,11962,12049,12050,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021,12022,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037,12038,12041,12042,12043,12044,12051,12052,12053,12054,12141,12142,12099,12100,12101,12102,12103,12104,12105,12106 +,12107,12108,12109,12110,12111,12112,12113,12114,12117,12118,12119,12120,12121,12122,12123,12124,12125,12126,12127,12128,12129,12130,12133,12134,12135,12136,12143,12144,12145,12146,12233,12234,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204,12205,12206,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,12222,12225,12226 +,12227,12228,12235,12236,12237,12238,12325,12326,12283,12284,12285,12286,12287,12288,12289,12290,12291,12292,12293,12294,12295,12296,12297,12298,12301,12302,12303,12304,12305,12306,12307,12308,12309,12310,12311,12312,12313,12314,12317,12318,12319,12320,12327,12328,12329,12330,12417,12418,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390 +,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12409,12410,12411,12412,12419,12420,12421,12422,12509,12510,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12501,12502,12503,12504,12511,12512,12513,12514,12559,12560 +,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12590,12593,12594,12595,12596,12603,12604,12605,12606 +}; + +Circom_Circuit _circuit = { + NSignals, + NComponents, + NInputs, + NOutputs, + NVars, + _wit2sig, + _components, + _mapIsInput, + __P__ +}; diff --git a/test/circuits/pedersen_test.dSYM/Contents/Info.plist b/test/circuits/pedersen_test.dSYM/Contents/Info.plist new file mode 100644 index 0000000..83c7fe7 --- /dev/null +++ b/test/circuits/pedersen_test.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.pedersen_test + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1 + + diff --git a/test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test b/test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test new file mode 100644 index 0000000000000000000000000000000000000000..39783f19c1994a58e60e48eb81d307d96a5718fe GIT binary patch literal 2615866 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�&8Akox^L{PvCL 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

I?7Y!u+4)ajW#^xLm(1Bux9^krR_O0Y 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

?n}ftzfh5$#})b_ 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℟UoH#Vz_O4UW^n@&hTd+@ zEQD3mvXEzLu<*v3u}4YVk83EY(JW|NBkMAnGDc;zrsA_k?C>vwov?Mj#gs7y(NCB% zM&(Kc-?O>FO?zOQHb4@@5FznUuo)ud^{^yM`I!x{%M} zDW0kCsLCEqGxhwF>3b889+xkpist1r8ne=GkpVtv#&#C5V_Na@;Unr=5R?9NFoeA@ zFLj5EGjs7|Dumr@z!yG&{V=RFuyb+mCM*>j_G-+3J$rF|ki-SxY|Mbs2~VYKc(-e^653L(E7_`)YHT1x|~b?1Or>;6{j z9SK^?Ff?LGNP78NOLNk?H}G#F=^8^SkuLZhw3haX@DX*PD_lffVK0otWxtW>5mWM(j8Eqa^ZwwAB8G$*Y)1AhQX7t3c4 z7wMeup|!M6gs0R1S2#)yuop(_U99z&R0#P)z<&;9NaJg*rGeGDQNCB}ruJ@Q9#T}6 zHf2c#F-Ax{bx4-PkyBLkBbzxoyy}9i_HGi+Ci*G`)%30~am8d3Ey}9m-ee3}sQ!jf z*FwDleFA*dWm(yoVSZ&yJL(*yUS^bqq|BC2ce*6CMGAI)OmssL<@GWeqaUwAugsb^LS zCF{$V-v!v)gfMCe{3luh&0)p~e7Ow-`%yYS2?zU_R4ERX@C&uU-Ynk0`?gl8`;Z!AW%bd6|4)I{jSY_3^ss z9CAH<`uST_$^sApurP{i2Kq(R6}V|h5$jKxCT|Nu=YViXdNKWEA12rg0wD}p0+0V{ zhd&Dm0qa5V6v~(-NJ<7dj9iK_Xefk%gCdfLV2BAFYcMLUsia`AKi-cU*}EICUZVjP zCJ>&~A^U^h8Um%M*UAE@lr-MylD|kS7PeMc;_CtZ2p2-y&>F-=~~> z6R)W5_bG*h*1Q7+JZej?pr@Al>{Fs^Nb9Kg7*q126Y$!|h^KX_mAwc>R4;p>2XEi& zxcfE%|5KDP!Y}jC!i!YBP3esvuy6eJ`ub1#7LZ4`qp*NHx{(Ebg{fbff``fWWHD6kh~f!_AQd_ZFxfzz|$7gQX^FC)N1c!o7EeS;^t^|-+sl`9o` zq3xD=Q88PSo;YV;Wp0)qq(UC)1_4#j~>amLaqKaJ4uP^2M^*GCkb6I zn+Zo@XxU64LyrK%ze(I2h$-R*Da*C2p@kp4EO3RT%_4h2hF)VYjG-4?ZA|hw6=Jr3 z>akmAgJ)FpN@3{!JuhkRHHpX27hYpf@1x?(x@`U*fhy?EA)xlE#SN^XpGiQy1;M`b z5s6W3@;HzLF{F`nG>=RZ^OXEW9^k#ucYrJK{if|e5wsYgm^GwIJ6|0+E>(LFZB9tw1k0fj>!#BV-y;evOcun{XY0p%ZM}%JPzYXi`|j+J9A-dq?<(i7!tI zk0<8FoVJ_^x`03k<7ElVQg;>!Q{}w$mZQK(uO%jOg(~~FmGpUAovmACNP1o;w4}(} zg15*tRfeTkSumct>S>s={$Xq%WDr?`e~HlhJ)hHJ^Vjm#cg?SRZ2by`>{*93R{)Dz z5N}oxgH+3C+{`BVaNc5-Y8f5ndo=p-%q-hgYG!z{flRE?ySlS)^krmU=XUmj+RR!+ zaQ>#wK0>a~jXqCW8GRtjboPzDmSsEpMqgLAl0NH8Gu1$1PTyXcK!s#l6+;G*C8TB0 z!%||Z?6+4wzyhYdw^%Ko%jW9=dclbiJv+{GrQCuZd32|ph&-*zAn1-V@Q;MKQy{-L znaku-P$2(OH<`=yLVyDK-2^YaEdN>p@8B8H<`~gzSJIj1l3Aqk-?iA>B0-oqN7Mqe zV6`gY_I@YY{)IB`m9osu1W7r370)+xM{lKczh0@Od>xOt*r>O8OC)8dE-d8(B;^a> zC=vt@Ybkr91xuM;ote!>TcL?k+tx*s{7!D|CIQ)@Ad=Soxz2j3mU1B1_3pc!_g=W0 zX5}*U-!<4+!ovAi`t{|S+(P$j>vJ?nv|-OrBuT0?xLggV%86ZBC6$%-_3z3&lP^>+ z)nw3HAa}uNO@2?q8t|^%trUdCaOmWGtAbn@wt1uK|qbD?NR=nn{(1 zgb(%Cay6G~Y5|FQFtl9Vl~^+gYGCu?ieQ5;b#j185yTWGZeE?;=tlrvL)@l(C z1@c_&&L-nM17{uv;-^psDN&hc5^Fq8&rCxSS!*;LiZW^myh&tcw?*H`&U{&XOi%xh z-pyB4K`da7Pq-$fuKfiuyXCUsg)n3ZJYtfe^&l9~!*=nR=;9RKo#ABmLc?Np_+vI{ zORy1kG0SGdCwBa4-}`xMT9VH32Y`55zJHZ z-QtV-0ieejcm(1nElFZ?cHVeC=~B0Zn_qLF@Hos>YB;q>7U? zNh~5N_ZYS(`9VZA!9`kWuo8nWQOBT;W=#3hL`Ke0XCa9xr>d_CW?-9RSN2uuM&Pu% zp0>D9RkpI|IXzj86@>m(Rqh1^^r%5^fEK#P zN>uJ5?r|V*#w8Nf>PGTCpL@Fuls^!54A{cM$tfS89(xg@4iVy(lPRbQ!~znk zn7CNo55JlULJL5IJdVA7MQWV^0;pwwEo-p8z1UzQNUk8@Z$KHSq?I}yEwsVtMrR*2 zEEt)wZi?Ue23dY-XfO0(qBAG?xF4A_X@4UFlJ=)J=Sozb*-37VRj}y~vnrRZ7Tu*R9 z_z{#&CW)X=g^@%$WZRWAk_uV`kZo7e-K{gPZ8s8d>%|${sE~)5_NT zgX3mm-Sh)rMvt&-tOGghaMghrCq#1}FPVXzZlV0R_7honvnUcoyV{tzNY=!ezF3WV zpI6AuKo$-`KOt9;b7=S6I(#4tuA3MwNryDHu;(TzhVGu5)R4F6vHTZlNe7PAzR~Z< zFZV+v5iP1k(hn`tz&`aqavUqH=Y?*WZJ=$js)>%62P8psvZW&uaxqKP$^`N|P+yw7$xe=u?Nh<_E}e25Hd_JWElAh$npo$x2!jRdxEX*sD}M{N>zjD|>-% z7RuGOk+v93S>upX=^LPPBBjsqGR#Vj?6p0$#JiBawx>f5%tUf81^djKXv-{{T}4DI% z*c}M>0!fg=glK$2(k9J7_~DAAfzY>s9b(A?;qvXg{LTcjaENPUJrD%hBxG9mZ@B}j zHa<XIa{EmIy;~|21aInM`p!bh-@i!X{WnOp%ZvTB5E*G9;!eYp4obQR48lD^3ow z>g{f$FGYaor6{AslWq#of^M^->TX=DQfu%RxuR572i=7zSKCH##f8YjWLFfc!xgRM z))l3Htt%dbZXvl_^kuoTX8E1>{OpP%zf%>iXgNewAG9~FIKWg~d>J-FNyayJ-Do{y^#!xenCt zq6`x?`!MatlsV;=b~@(x#jo9+jxTK85dC??-$-Bx&)ohzwzzCdEU3_UVUZ==?)$-Ytg?BLH zcPd1pPb#y^2uO&C6HIo*EXjjj?T{sT@L1VRp;ws5l04X7{EUWrkKBHgB>8vVKlXWV zqSHz}9HIS!r+pdUQ+W#n69Hpo1oPURKNk74&(pEUS$x{(>DWQ7-@JoZZ1L6b$f76r zJ-WKC$~a7=m}U|r5J>`gWEyXFra731s2U0dR*JcE2#gM1ic={+RRNfQh6ya;jISdm zWYWP)0!H(lJ$K2iLqaAUyX4jtY2|L8%cm|qM5X-nZzb+`kt?23IXbH;S-F0tWUu-5@5purkssd7K3nJ{4NH{@i9kqwP*#G{{E_aD9?M~Y6JM??12^o;dX3hf5S zCNf5~Yze(+2I;HmUhC56auE1yd&1E!4!KT7SfM*#i}DP z`vX(3L&=!D86iH3N#QfqunY@Y<~=NMm+R8WQTkG&7s_H)_XeIgdO{2lCq`oM^nFbx z-=LU@gN}O{hgq2KNA1V?l5PTM-JD*;>*km{DW@`nUF;aJ3DnZ-{VcT5W2HoWS5A6n zS>!#SJ50#01Nj@2VT1g+2bod;aTT6V50PlM6J@+i`x5nDV$SLBm$J(GS^J_>St;KF zzf%H;hfoGJJ@GDl|qW)a45LQkd>FBi|Kut_tMnFm!S$3D-*$Dv)K`kgDqCOe{%OskL zK`6#y4;;(92u{c|l5|dXxdLe7Nf?pVZo-I=P?zn7?6a2pogdQK4@Hj{$zMLdi256} zG*}`k`!w`@DJ6_FvKJ;{WcUj6u;^PwtJRyVNF2O`XP_?e(hHR|un&uIi=`hHPlmG; ztJSYD(rZ8x#4sW8;JkmQr_YMjuu42u?+1Y;v;?urp3z*a?nd_G9U!<5Ww4%bxXYWz zNl(Qel75(NVclp*^fyrhJW*_VXe47$6CvQ(web zk|_6$ko$BH2w}()B;=o#sCrO?&sC9}Np>jP)SjzyCE)Qmu&}KVkUMoBz*>(Z3*>

*nl!l1ZJ802?uxZl4O%V*%jxwuIQd5APJZh z2+2o1St8EVpwoe*#_X3Dt7^!uYz*eTQ3e}|9kPB;ka`%@Oh-c@j9P+^4kZx$fV{|W zeQaqVbQ%eVgbYtQBpxEM??_f6`;KjDedlAqTi+1^@|`QsVBhJ!+V9*8_TQik5qsl1 z(w^2wG&jDp*j|wDY_J#FccS01f+c_w=$O^0(hmtHc>ZO+YzTr`C@CIrPcxX?KSKJ#C3>PfLyI=@NDCu`C3(6KuF|uCybAy)uXmR%H!sv?%T`5jsr5 z()JEo(4dH@&+LW1#oG4`GuQ*dUs1-1kbU;EZ#`zA$?XYZLzCMb_xPQ)XENvQAQF&Z z6EcyW#bs;5PHs}clbich$>HdoO+XUFC?T;JpM38TgI+X4?u8%_LMI>u3AvpmY9!QP z2VE0qG)BfVU1R1Z3~LvsmkqYbhoj>=&R65qsmH(mtZvpt*6-UiN|p`_F#!_hrvBlsq4Y+ z7BM{75?K$H8hG&ZD_AXfunh$-d&gQbnC&`vo!=P(kwx?{iA>=jXraBQME%t<0okT` zmPP&obRQ9NV<4Z0GH#H6^dQes=eK0!s;hiiklTL9w=8;}vsvzy>*;+YP#d8P=4-hJ zpoNy3z8vu)qrdl06?zr#(0}fpD7EeMcSeTI;9|#r>?Lllv_V_nxEhsB_vj=*mm)RE$Sc8-&og@zO|4oU9)izRs%5;@Hvi3IvrB#E@CSQ6UG1GDLe znArv}4GA;J(5i@;v^f&9O<;D`@62o(n8t*e#7$PjOae2H#Oxa|YxyfPI}=O;&0$8# z!m5awv^f&9e7M7(zc8~FU>X)?vJqJkGih@qX4@ZO-+Kkj4xx+_GsgGCg1ceKv!7xz zeu_UI60i7)C4Lzo!4@!&#NAdTu>|iPN#ce(`4(|5mOJN$&wqozRkO3x_xK-abL)(s?mJ3Pzsq<_KUAAlNh5npB}_N~<7OB?#e;s3DsS3vxl zAG7#rP$SqH)|dINBJrio|GfAQL;U7@So|7LBP!x2&a&lLAJN|b^Wq)Bk@^cd#}jz z^npG+*7J6-zF8m)v=IXPcw~}b^(VI)eXH^%9a6{N7wFCFMn9@-NgTvo>U9a}&oUvH z{A9UF#(U8e3I5WYX8TSfc(&h1v(*dRSx%8ROmdp+YH6PcA5rIm*enF2?S)-5%B>8IT4r?ikZ>7}<#uT*gLy)>cLJEgW;yLfsf z`n=yO%waRif+@OPn^W4KxtrItw9*HsJ0#K-bD87#7n$Hjh!$)s-Jy_OPIs=0ag+MO zNPCm|c=)9p{=^`{-g)(LdJR<2g252@m3trcKRsPlsl!&j4&wigGHz{933)?wn^k1K@SDBSSI><{ zKGCGL>pICFq8&5y*+yL_sZ3@-)7LLHF}Jh8^5746Vi zh@(W5kZy#-gJ(4HWF6V};%=QDxeIYeRtcDb?Q|4DJV`v-S8hP=OZrpX%|aL|OF;QL z(@j2g{tamjB{e6l^p9yKgp4ZNOSoQI>A`6WRh`WY`R~(QavJNcX*J!i;|wurJ^8n# zRlf+iMf66xpv!%JCx2F26_>}R>1Ha;FY#7JrxzTnTh8`Y&NZ{e03@7jf09{?b}_3} z+B}|L%uP0Z*#%ib!$9yV%0MTvn;(ZRM)Qbr18g!EH z+3?nn%||KwTwniUo~!ziN&|s96lIvCh^Q85p`lCEamc#CV}VVvp=IG3G`xhMY6D^b z%D91=kpQ)OHroPFS0l?tzg&9`4VMwrpHHwcYXK_QSxdFu168cXZ{UIOBHA888Kt(o zSR{P#PQQq)cfM-0`yM8vM>vx*Lv;mij+RcD$y$LHY)G3jQ`V59MzbN;lgLkk{Z^Dt z7cKJTXu*aYD7+c@&$Y}*YyS)y_Pd{6EdoLyLk8-V1gIs*$A=-iBN0eLWsYH~ek7>N z0W}L{%s|yZ3oTW#+KgPp5oj|3WuPl22MKhYr{pgp^j_%cU^p@rZheTmPSC=H!rfsr z74%GYkGkpsT7LTlR1G?kME|=--K=X00%|!O^1?OqbP7YxntRw zwE6VaLEd~SsHz zAn=#_S2D$D$Q|rf#$RZIxpkq&nI9;StVf!>TNge=w}0~kr@9kiQR`E6y9I&PZr_|( z<{AB3tEvO0A(RDI_aex}0Z-QESS{=x2pe0$!rlj=qp5_|d)`;n;NCbJ1ka&#x~I@i z&#}diButE5DTG%4)8l#1rQFBokZLV~Be)^Li>S}hg2!|46Xu7m7#qb0F5M+dSp@1QosGm8%jp=pLwN-k!+EtxP6_ zr0Vcqz0K6&De^7Q(d&Laf#*bhbso5k&4FZ}sIS*p9P~r^IIDcs-DIB?s@;0BS$=O(`w&TCZRZ2uZ<|GE)>k>d!pj_thL0=xqi*25oGTfnr^XJ@Qd0;-=oS1SRgd)w7Y zu=UwDGz|Lv!?!3)fcOZ?I2nb*r4Ffw+)SrN$PCNw zHvrM5`qp}u8vdZ)sq;oanvfK;)J3MQtJLYqYo5Bq{m@d6vAV(ToF5#xs0oc~fcHMV%pbDH0@Fsjt9YAX!sJ!aCrpZ;fcOv z35&E01aTthq`&qp`woS_(c}Gbl04zusdBRm8|B(-p0+PX$ULpT6TigzYaZOI6xNpq zcVFqqf{E0Lxw(Z^CGUXNhc1(-E|V(j_ET@upL^-QQi0PD+^urYkuY!m{pL+czmLT4 znF8u?!*&lPHl*sesA_LgbwHLz7b~r8zr-6+FZbH6I#rjdOie>lAxwjC1&7k-KlF#S01?or{lz1 zZwE>&z3#w{B&nwZ1CJZKUsnxLOu1qFg?{-q`FHuiQKo>R;bTuE0-*z^KABjZsssDI z%7*aS4(#_7QFVb`#6C`M>A>f%^mO2S2y8ph4V*v+3Vw12c9HZ8npo-P>2IDgD}!xk zVNYyr;CP`sukzslPpghwL8zyjR;tQo@`RPyl{!)R=_2k~fs7GULdpPV39QU+;l_}T zRWR2&7Cf)fm_Fc=gqsSMs6K{ufBOVRo4|!yKog)doH9B>6|{|841?bn;!Mf zR-PO45P_UGndRFypH-U!u#g4uWIni`f&b)kG1d`21OJn4Xsmk2Gi25ADkJ?_*QyJ^ zT11Eu>qJAA`*o>KZxfDmHJf<6>gbw|?-Gb%A2*32WOl%sPf#`8VK~Iw{ex(X>?Yh= zU->esK1bQ2kWb_c9G@&-+4PC8e4b84hQU|9?yh7=pZLmG@`w%3Z>2gUdVbr>*!z}3Dv>T2Oy&7{ zG{5*fr89h#mT}Ar6qtn@#$liqlqgXrq%)Y48YO76bzpp!hB*GB>t&+GNsS+;^>pj> zNsSlcHnmv&HiZQZf|amz`ih`Q=>czp0Gm?w*Rnfj%OOVQR=<-6_~TKA2tK0LTS4{X z@n~c!`1mPNybcFISVjxf8Un0$Z>2^OdwQp$tG2n8fS%TV2lBnt^znJ@o7KTPM!b_) zL{#<3)@BhEuor_Edx`3aDw10Mq^A*@o^Je*4Y&|ogj?VQG2qu9aSJ>|Wbfq5vp}!_ zWta#Of^a=w;q-*w(%N7a(7Dw`eOiy@E1bh+F5@R_`wo&Ua_kgV@VpoOP7km=6J?xO z(}z6JLO*qssQci-=w~}o6Vxqe_$fiv2Sj(2!G0QQt_Nzd3SY_^*PB)qXg1-Ztk=8= z(#bDTUT`V*Ts?qC4fw|%@M87q`wSjO+ka3xCyM>Ie&De`#eg>1W@13ErQ+Tj*eGv< zNI*hFY!+$BJFqdJQlX9Hez>Vv9S1jf5=ep=vtq;&-C#ZBUI79j44fo#C!}kXs36qf z7*I(u;EuLUZ4BsQz}py5A)x-NJ(aa?^RnL=0rtyLhKaq20hRU<)d9_El8&h3>;=Vu z4zw3~By@j`?VJaw3sAW>8(xp88;Yq6S&tbq^bVgv&*c(T~YlQrPx za&O4shX>t9G_(FgYU*6>XSch#+|L40kfVfXI$R!HO)j^5F3TQj@DY*}2stsAo80QA z9pqO1GajKrqDVJ^i*R#J0T*cix9ZuCt-R9&3L!_s*ZfW=@LYg0Mm!_x6f0>_RE@^PDs>6|q7-haJPvdbl&ftc zz3V_zOc$}H$@LdwBUHgk4wv3jOS%;{cGkE4+6-5Ih8U~&OtNMX1eFaj4R816<- z3WMv&-y;zMj=W?iJMyJ(yN-M_5LclLo(dO}y8`3L)$e0i^4wwo##PqIYlUE|r1 z(>qRvEn@~4Oj*$Wy^SK13bo?iHl zMH~Xm2+A;Fvi&`&67E3waldsbJ)?h1Qt27}w2$0@&@Ri8DH-&TZ$P93TpZ;OQ6$g3JTKCbjUqKnc7@IHv;x!KIUdAT<~Wy*@Srq3$Ps zM}GMw!mcEuMYTvzt#@n#I}nD=^bUk$plz{gijLR=B#SseIwB#Xs6-8xF5rP+yQzYK zAo((SAS{3!-;owqf#+_NA>tWPQ7b78glBQFO2zOO4Fsv20lGI(uC|RZ5U&3oooWVx z^f?BCmD~;l@h&?M>cLDTci&ssey_*rI`L7d(H1XO3duUpLJScnPGaz|_9W!U6U?OgZM?aSZla?`+zZ4NKzs&e z@QftI%7tH4&7%k1ZM?P%+w$zdRv_x+bBno?pZV19%mbt4D5J!XK52s%dL=Ga*W;G; za)!Tib&tnG;XoiwKp7&$ghiLtO##2CnrDqAb*Bq6 zR@YJ_jaSnCq}y2gnxFZd6To)>${6vFs6l95ei?ZCTUAv@sa+GGv>XM+P^COdB#2uN!{3od-m9AjS#N7*Zzfa^V+M z^K96Yx-a!cudyL*m~L4^-Z6^}8Ty>g5d#08Q3lV_+Al#1HsmRy1|wTl%OdXsU8OJl z&UPTai!y4E4MiqO zHsj|XT4QLj8f;~Y&I8h8D5EJ6iQp$-b(zI_l!Ab=K$H8?yg(`WlHMC_sh%%!b9jNW z8Zh78#xR`$7b**5-QmINbrXB?b%4AAko_oQDM3j1>p?KKn7O_Tg1~td2!D6=W=X>L zuf|3jek;RV0=O{2w7x?tT)$zj)BmomX0GudLtgCL%Y zKyPJTwS);ag5YH#(bD-C4hW(GaE<1Vikb&&1=&+LG;rh`kMf; zU>B4l`cs=(hC4tYgkekI5nXr5UJwifK?G$y6#*>VJI^x@>l4AJLufyU2cQg&5HUSm z0Wu)3<-@M7^OVn8PmA>^6hC+qTThUq7BQ*M?%TqO*T0bo4uH@ZSw;jMw7~%ugXZy~ zO%XCf_aQ>Y24VErMj^c4iu zdeVRb=!}JG+f+ta4%P)(TI|_*btFS6t@KTkOOOecZ(h#?pMZ5d6-()Zp?RLAO!{DW zg8JMCBa`}o0uypb5DH8vqGBz03h&^BH0OK2L}T_4_2- z=kt;4_-Zk@3D+ob<2y!g&^{5Iwv1=n?rhID1>j+ZAL>`XiQoV%o(&pJ?c<*ws|Xi4?bjnJ^C%Q#0{M!nNJJ zth0pG(n5F3TpMC%p?Mzh5hnsk5aWczGfe3n+*aRWavUywX;H!|_`c`KrQDeanpXk^UD?N7u6tW@G`R;SiX9Q z7tZGHh@GTg6BgLYza?-0ewb7Cm2*d(9&H7=ul&wU{Lu$FSo8}o_gv7nFbxQ_a{gd z=mD0(Ixt@Bz0^CRXu(?dJ$?9MW5x+TkjH^Yh{HtGX+ps7?6{qKu~Qq`Nx#^BokAZ3 z&~RhRrI_W+>ZM;0G~C!-8ks$#1#Sw2ex=&>N59i-XU5A^4E&gZD}l2}5Z9bLPffR+ z=P9@2OsesgpGfQ#8Qp)TaXpd!P(Xqch`91Ee&>o=<%_+dRkfA2C;6DehAVm`h&|mS zcDGCcBLx~0HYu=}iaJnWDP#~?qFM&6fRN2oBV2yuCB0!%^1<){@_70>@Rv!mRNLw}_i>2mf2!3`50 zz1v0$&70mxz$pM_vs?&jHyT#{joxtrN+9C~>azr>oGjKGP;Z~emy|(fcJaXh$^&K^jJ|f^MaW?CuiP)`eOCw&0O`{ct#V{ zD4`|9rkk`0If9=%WHC_8-C}eVr6S&+(?&uU_1&U*mcBoylN@fsn`Cv7W%UYJ3Tx*| zd0$9}>U*;R%*#AFRR3}}8-Oze=p%=2hJe0#s0{^I09sgt2)e8`@s{9A!+i*YC8YfxS8Cu$nuRZwsf{+roLcEgS>{K@40a&RzDl@ciW4 z!kcg_)dnDEpbT3O8&%0YbH(-SX+@W?GZcUzUY3APH^7kxhgG91!AS3wn4ZZ$th!3n zdRi$x`s?Rhs_cLE4Catl8lS#UtpJ}TmxA9hy{K8Huind3q*-`IL7hM7D1$6t&1pE? z+vM{GbY-@$u7tdst&|z}6M2p=_mT-hzJ3NJEUy6kx#Pg54Mi8{cW{a6F1ld0rtRdd zD=Ju~>pHu5l%Q9zPSZ$O~4&UARY9)j>^B5F#k;GC-w|pjS2Xns@x#OEe8cX zpLdTqg&Xwj*6E<<7PvbvRyDA0{yBzq6P8h8#eVH^6g_oi;$|v&7Ibg@<#XON-^_y~ zlMm5k1`dZ%I@jp=X1SG>qGj&47y8zJ^@ptFS`h3-86rX!%@arJ2FSd*m&x>yAiK8x zlLKTL{o^h*w*g6zV}xkNm&9|K02w)N+&G{9j#E0;Swfzd@WsAj^&KL`E&{S}2wY3Z z-bk^;&(|CwK5UJAzQzYr6aik?gbAKakq}v3qPmF@_-5J~D(Pn08~f;u)#|y9J?L99 z+GnHLGfn~TIPr|AerQ4W?oo9iE>@{g_=`eRr1D459}oJ~wvnDR$fJfL8kj#{BUVR< zij~}ks7U|X5S2ecPyY4=*xz@UGLykqs-@_ zs-fg^x~Yb_KBDRmTZzp=WGi<0HurLW>D!0Qt01sVHS|QhRGcgNx}28o$rTk#n_SUi zbtn3*=P2&CQz27K`c38y&heEHOzAg!edK<748bqn6j6yS)cy7ZnZ%PKx-{L`_1qt% z-$M8c-7z2|>32DAJ5xZ>P*qB7h<Wf;_F$=WWXHq0ifRCKp=3 zF2RX<4eV+=e;VP>VAaHjXBje{RYsJ0VynkQ(;pHv9mTU!-s6@89Jo-Avq<0 zHSYu=QrPqW)V!`rwle|}h$K;xAfgU?3{j%ymxD|;9qiddJ!^>6{=>&z_^JF8GXJ)94s%WwT5NilD^_g$8U_+=(ZVjHC1lDq*zVOp=!C@pHk^VUgO23yFX#O?f1jf^4(7KgxmRRX#(FgBY_3wd*WoYn zjn0p;Ve95*J0G0LGK#Drk};x!XhHoGQD@kT5PgZg*|}iSz%to`DwVq*e-V>~pz2FZ z?gkTK7BfulvAD$KQG218^gIttzN{>oe2*%X>kQ!^iOFA}x|En)1}4HRaHH15|G3A? z>)8vnKz3z~In3c9q?`=_?9 z$CYQwtWKd#Qwy5v%0KN`PNG*$?V8q;bAWuM=Pg$=sj~OWJb%zQ9*w;gvVw54P%*lxXv3_WOG8#@o8M6dd zd){Hl$NE*j6`M;412eJQMW5n%sZ4Kqmbw~3wr|DPU={qTjqI|=(n|Bw8}g7C(vNgZk^ZOvuLjZ{JYfnU~^XODF_n0 zMXPqd6@cEbKW#5434JFn(n^aeMbszurxVEpn{ii?Y+SNt|EF2!NAt3sJz#kNWz?`d z2Q66VrR7AI5!3=S+(}Sd0I?gTbE}p<>VcZ0CL+qK3Vm`4lG(tovYitL?e~Np1?tl% zLk9gv4|<9E^1jsFPJ;H?!a6ssk?qU`#7dMg19d7|u+E<#9t%R+kTQarg@)@0YAhgb zMj0s9I?wk&Emn^r(#t&q!UlVlRe2XkgEh0A(*b%3%CG_d%mYrZ(!ZvL6yx|075Qi< zba85*5c_5Jyl2{1>1WZIE{%6Iao_AqAlMGi+kT31yz_gxOV!UnixGTP6WoMr@HUyD zy-{K0i6*inJrL#h-L0c4LiJv6bS0)knDa0C5A#K#3Ny z30i3V7pw0PN9Vet4W%pF8zVv5o4`*5=tz`d13tk6UN!TJn^?}wEvR0sPQlya+@YB; z`8NEfH%s2Y-qA@ zC6Hl)IzkLwYZC%jS>?N{;-JX)%qW4ioiO3xCmJlZ=XR^*xCQfd9BR5Wt!uw2| z-1c_T$X9xH57m@H+IIFG;lAqD-_#gc-|&5liqYUF{GEB=D?w%^K2IPmUpLULLcXm$ zeCgq@lnwM*eYU9Zrh5?hwZ{c0X~t|Lechtv_jfX#ej?=kI!~g?p)ajpDh0~Hg;p$`P(8$Wlxi>>}0M-!(vq#Y^Ky>HH2N@PEn&Q8;>JDENn{D zF>_ck%tn@MfifrGZfYJFh8F9T7S^KB_^b9Z3x0EhY^S6yOEMV}g-Mc#s*e^l^F>sF zy$G&X8`M%zTn7q@23vCn3zK;ln$A(*qAK^4<^?ii;zzx}KZw8UHKbi;0M0@gHzGW1 zxsIjD>#AKmo8-RROtyeFp-RIYM&ri_t|eglq72U08dZ6Pb>_)w#z_g*vpbLrl=&Lx z(Bm3c8^J9Id;my4C-AT8u(^au)PN6h!6WJtd!dt@-zsLDyFn-b&H@@NjmIb($kl1i z;xtF1;`qqf&#JbSFfTn>n;5vys`heY;PgVi0aM3pFc3x|Vvuq}b~Fe=AP~Y>c?8#l zS%n557>P2lFqH}t3Rj^DZs40%;q-Hv!A-T1ze)*wPnzqHh|Ce?WY)aZMzIzWvo zJppQzns;TRY^Pq2jJ(IEFjIEJ50>J}#O6x$INuZ5yF-Libx3O>p|j+ZySB4CPa)i; zP+%*{C@GKt7*XG$IkAnXzwCwH$lDElt^oBCl=Msh<9p1YpYjG=%|f4!h7(bSEP?0F zQQtb$#ZVellMQ_u2x3HF-n~oA#8Dlgohm*;;(1cUM_k|7ya&G$uRc}o4fqSM&s#Q0 z`dyCt%M?&Fd^f2f-m`}TiS()7vrGJf`<}gRQ=-a;UBo_tC1QEsPOLE0Z<%u-uzk<& zc>!B-e8jIGh|>kBJN`X|uX4av*oQ6KgnNw=^-U(o*)ctF#b&Y`RMrC9i9zNapDkBx1fdb#rgIkM32VXD&{n>u;u#7EDLe^0;Ct_XFI#VNjU0ncSO{W z7M#5Pu)WZnR#(jF^uiX4TuuXD=Wh6hIBfR;G+s2i32 zBuKApM%!B8BpjV(TBofRoOF8IUR+F^I+h#%Z9d6*XJPZbctRuV<-fr?9U@Lsz)3iU z45#*JVRS0A7h0#ME9P`xVY4(Wu*7LLNN;JL?VJrx!ZBtzEwbRG(^`9>IbB;Zrr1Uaxg7qISY%Ib0bT7V8^#E-cC4a+lOJRFA+-Rb+ zP~C!`-$-coVqrUXw!EC0y@j6}KoUlKtyzI}-qxFT)PET`O$Ilc_6>R2{tLX#PSB1xZh~fSpp24c5!Dtg z$V~`&!RCbd&u;9OMV?SwoKh!2YGR%ql~5|D#i5}uLmR$y7=U7)+NRkq^?qHqWq z=7Tj;c7cFUA2N*%eT4KW>+v4VoGJFz5~WPG^fQsXHvnehC z(zPf9cf%B4V-MAuLMqr4pDyBoMf=R#2(J3mzKqK{(8KaWtY%xl34B;!|I5d_Oh_9c zHrom&^ngX%sZaYly8E`~>#w>>zH>&?gjVr$5`t3UD|O6vEKYKo>33 zzC`_wU1H3`Rub})#{s;Cptb|*OO*5>A!7Z!hjoeCDf_Xhop5n_vl<)N00geyXUps% z@T&m&D$0-n&p`|0cMa@?@w>uK#_y(4@dSPu1>!4F#t6hrWmWHErq=JIg8i;0KJQno zMqvo<%V4t!V&I;XLy&x9pBAHk#&1+i#v7y$KrA3(A~s@3rmFRgJ|B2}N&OBT?d^bmxIdfci`i{MNDkG$`WkD}_{ z-@BV+Hn}7$n~*@F5Fj83nou^<)KFAVQA9;llqjH}*cDL`q9`2!5fl`R2ntHEf)#n~ zSh07-4pw~CSM1+&=ALurCNrC|pWlDK{E?Zx^E{{BJ9o;?J|iFCNc@g`7&K4qk`H)U zIGXNn_9px6ryA^=8B*@BV)7tUNrZTs=}#tx?(`AxC#2?py88puD{w#^m;8Vl2}M67 z;0*OR-7}pOF@Bnnze@2VH$NdT-%Z|A*bTfihi)PdB};5^t5~vAH209h9poOexox!j zXfu%(k`XpmyoS@3yNN(B?__T>I6jbQ?(4~BtA~@`zIE?h?=Crp?_5Lozw)6e+P~2K zABIg8T9W%Ja63=EM+hjuJhf9k;QgI5$?+XTWCJ_ui1(R6HRFYY#*%JudVbq6g}1@- zvUNPsnpoI$#aeib+I^AeZO3$HP-Nk|SDJf)w;j{py9U^PC7k@NOmZ7Gw&NZ1TmdBi z=0_&^lJ4-_yfO|!(LaP|W7XggzWFDFoBR**0h1pWcU z&`=48F_DEM@F}^b^nC7IGR%&O?@kg?^C2dM9{)6PYs$nbA;@@ke}B6g3lTY_;o2Xb9m?NkhC;3^1|2nJh4ij0Y9x&R-{3W!k2J`T$2SVTgn60+gowlmj z`}k3&zL543qK*gS-~DOQW+$QbX#6(MIQ$+&KH&X{R&?90c7gplgg!Mn>;yLtksEeb z>AKN`z#QhQlM79RvG3aOcPnze=(m0namOT}@5uUQT5ff%kGHJPR{O?`b&6XatnpiZ zhptm1*U0T|rilre&3Dy$vBu z&wfk_rWChanA&sG`NX&jZ03=z?zG(D+PuQEIZw@&57?pU^i@4MkT1yTqT-`)m!Iid zc^Epc5q0zd@L=8_X6UfTij7#C55+hf0=|_G=xOR*X1)&Bxb!e5CqL0Px|V6?sMa6R zl?1r$^SLQnHMm_xZrOb`xUFGuo;sG`?k#}R<%28qke!!5-cHNV zJ#;q5R~<&6ozMG2a8dC>xJB)Y3TR>kd?^F@Zl?2Ks;s1VqkFm5?4QCkp^!|t}aZf+IJ?!!RG z0ML1+AbkNWd5WJ!L^e=-FO=(t``~?Y^x$4ubWbRB;z#D#={^SY&Ufa6D^&~j4!D6{ z8w}?r9jBZEXPVCzB=|S3cu59_de`-?g7l9q*Zs*ghfvj6*Si8-e^Zdpy1JI@g6V1L zU3z<2uh?UHg+tiUNY`L*Z_iDIn{~mAG|3u&Y1rioa9A)qEy1PkG7B5#q;=<)BS+8w z$_$iFDEUw@H?8GW)BvG(T8!vZ*=_gv!u>$Dvl zI&T)lub^EON6kCf_EtfhZ?nQL58zwZnISVn#Ljz#E*^5C4#jwvQvZO9+`H1*K>r_2(wzJb zNP3ov9EhMC2H}rXW~r##SlI6c4y1bW5_J~w`|UP%%Cix*PJV3yDl(JHW7xLdYTG^; zzS1~?DDVAD)L}hCq1^jg=FFforG+EPTOsoSiwV{`VcQc{8(70GO?b8nOm3NIYFL>)z-5(YIzQ_HMERZm1OacCa9x@~WI+A@QW zn)2fBe=+qUBu~uP2Nw5!YrJy_LYuIPZt4@;dZ|AIBi&7XVs|g~d#=nVpNyt1)pu_* z0|ySdCi5#Kb9hjpd^)10MEia(1-f#H`kP!oK-D*iPqh-CutXKm#=9Bx);mz0s%Dqa zHx=;9)hi+KjDMz^fmJin>(KA0j2mHb^iGo~CtT?zI;ypo=$?xx(NSeyqPs83DBp>u zDsyN2z$t9Kw7mK@h~>1bAILZC50@@co5;~8yNttf6ok$l)6%;;QgtzWH%MDwWYkY+ z{|p_X@d5+4{AX-BQ}dpR4=jEUS>~RXcaoq6Em8Y?V;r4L^(_Atd1tk2Mvt??bAb@n zFhUJu)NhD7d#@WMq3VlqpoSu82g4Xz*>>nmQ_)B^eqP!ki^dd=A85%vG@~sn4*$wH z=kjj#%6jPDURj^NVwQ5#IkW?(6Iu8)G~xqaxrgr0C4?WsU6El%&>$H>_y&q{e6M%z z5zV+$j3m}i4oij=iOQF(nB}y@a^l z8SlVi{TId@Cs({#c8cC@yrkAlrKEcA>m{`c8r@#%-J5#}W)5haT!Hov^)g*BHDi_< z1kWwz_CB@^&5QU34&Uv)ywA;GU!pGm(gfCw@-Dv$jUJrI?qSp{ftNni0=W}Pg|%Oe zgl>k6ry)5%V-76#d}cVDd6k!Oek&{EDYSRwmvTp>Ev%lBQT_p%DzM_HEML_MI;=%A zb-FpQ!vr{`{9}Z*%N+lc=?fg>?mXGq>g#&|2H(Zy?q|WqEm1#zZX&#k`o_!_`&(I! zS)#IO<82H=A^Y6YY_C4YLFzeCo-Jmmd3)iQ4~5oH0k{x5paACXRtxGHe2jUP!dpY} zggp5KZ+S6eIG)(AOm@lXrg2*aFez?!h-(NR1pf)i3_4gBc*?{-B?`+0}ZqltYsEkh5(&COQ;0Kh&c zzHVFqzvJts?Rc*Z?>y#G5Iu>`<|@IA31T@vzluSCyfK+qetArr8Pw-YZJou30Iy&|T-86vf=Zk(e!}V>b!eeBZ9qa(Z z@C#@{K$`Q^Jo$hQPEPWbR_tH;h7}yVNsPVv>rfRrU`G{?qJvMwCOG&(KA?kB=|Z0d zndG-vxwom$iM8R|)Zi)ci%I1w@YI7mO{HbE>#2ee?qktM%ZCa)Yp0tg&CcWzEkA1U zkLX*8dKY+VK_0r(GV~bcv|fzkUBsjntD~*mAeTZ+tjW2M>VnA;|b|wA|_%A7dGxt=1;#Uccr0i8lu~o&=UZB+I|kGV}ySattAG z{+h2=4l`X6t7yu<=o9M@Xf=V?fVnMX<^x(*y5=@o=4PusH3JppipA<(un@Z<+MJJD zi`9pwr2}69g1aBd*q5-WirhR-%dM`vKRkD!ezJ#miZSz4k$k|%onN6q27hF#JC&>y zZ-wK58_Pw}b{tD&;TKany5U?D?Zekp@D13MPT7Y*)R#o9ixPMl%xpD+ge9myL~(-B zJU*JwrYX(iqx)ECzD=Pv1?x>HKn}DD0-UElm1JOY+$|p<&G7G>Gp4ye1@hJhCQVJ& zc1W5-q9q)Qm*$XYUw@iM`_epzlt3s=kqDtQJ4Ex?G^N=g+TKd@aSF93q7x$G-j@(S5Vr_DIS;czdPgAVx0el7p!T}XOg~fV-5N@&F zlMhg=Z{-6_)ql$ed`j>finG;QCO0-+1tv}9Zg%Y5{YsPY&33}@g||Bg-0TeV%DMeY zGY2fMQO+x2=G;W$EJ1oL{v*Wuf0?`=g}nE?X@cZncer`)A_UIMa~0!10{kO{|BaRv zPh*{e@&5vTGT|PkWwj4KLrtXU`@dmgxq`5vXP{th4uzgP(J8aaFvV2yM5m88{$9eV za4;F75h9W`G(t{ra+yHm;RL6|8V{fTZR)ZQxP0k#6AQ;w39-PBUR?Nvoljpg5yXCvT1oZ zay%^gp50ht-Av0WV7osi0${Dj4i--_=Y#tal&L$!;lqS*9nMxg=_A!vw!-*0@L!Yr z7zibe>~*4L#dBDVwfl7)FFewA?C$lRN^R31t(3N+RaWgU8tisr?Tn z0u*UzDATKJyh~ZWRMLPzZ8@PMDPv~dK2MNT2={R zxmP^gCC=tfHJ6!El^fmNI{S;(JWg*kZ z%P=nv#>9LR zVVG0#hQe=w-vcw5Pes0h#j4W`axNj6Q4L7*O?~E5a>0#n^oBFiKY$l)kroLJ(xH<_ z82%XIvz^eJa7J1H008DP2=mN|9(IDEL|0^*0?kkz$V!;3u(e9CV$L?!5Ego2M8{TW zcSSh2Inx#%*Rg|XYwxuU?X(}ZRfl6<+XPI%J2tP490-d{isi=_O!q4aU@JH_kHJLO z7BUFZH;=(Y*LLyR++)XZG`TubX_@?pOtNXv)@GBd15B>2ZSpcSd1mAqSQKbesC&pH zo38Rqp1F4$0zr`}$}`K(7;Z|9(@&3Rh?4CQ<#y=ITfx4wvSnl~Ecv^r3FK!zEq8#Q zj!zk2(Z%vqN+k{kmw$cB$To|=AMw~u#oNrkzGXA-V#JMNlYWj8e84!S?kx?vj&H9H`jjUp0(r3PXo2R zi~(`Z5BJD*Y5+Ru5gAB^*+KEUl5CHC%CpTFa)*a&xJRub?juDUiuTGR;C;z1+pqHM zmhI=aTUMip8`Nm9mfl6lS!-)D$7XkcxtrC}Ps}M-9&Ke*#d`{->0H{HMq3$G4O=@- z1P5uCsS;-gKRkh_D;+*IpWc1m3@xUH-UkXkSd=zcwf>px;>-l!GMbvfum)o7Nj{FJWfl0C zrjZumz9E4#EF3hU5QvBk}+6QTRW5Ec_461cCCf zdvzRD_+5P3!ZUT~YFJUj@62(}76v_LmLK064uw^8D{Kpgop*7O=KP3@sB;2PVUdRm zmGOWJNq@zKq<;&G=pP(>G`+KnP0zqZEG-kJ!*De1BB*XSE$u2?sPN-4{FGi10cMXF z?IqxIEjBx!!Xo-4y{WQ%{av9@pQ97Q2$mTcvC5p~Kp^A6NAwcfqN5qS>U>P$z-iC5 zfWf~g{0!Rt%ZYBItxXPw%G{JYC6;{{tmIB@ww_~Y7s@^yo2oJ-v3AkyA=q@4)zl<= zC^lUk{h8Bm7t1~Yo2FS!@$6Hu>6+MPiXhysMfPdfbggBpWA<6tG&6dw1W}fKAvVp* z9Tuk=wd1MGNX*W}4KY(qw zWO8Rj+AUC_rd;G0=MLvA2UF<&jj^j}Q;c~4=dRC*j$|VH5UVk1v51Qq&TSriSAd_% z)H^xRr)g`m#~>w@6aAY$XYlZnQ5X*S+u%W-XRs8@Bb&uyg31|vi=Ih~&N7n{hdJKl1hrc1w2uId8&RpDt-ZctvG;w|UvdE_Nmbwk|g7VZ$*6pFW8pdS=m zFT{<`(s^c>s2Hz_;g~RUWQUHoT&O=18-vis7|R#$_Z~Ig@_OBdeB`R5kuWx$dqu@A zrA;0oC)$T<7jL;p4-@Keq@H0>IXa0K61+jr6T(O&oEb!5r+L6wthWebEHcK`$5^6w z3*#JQjJFEFL4oBPb=&5qw$0T=h&#)}#arH_52vlUYBFv;JIc=xsu+)p7&pb15EurH zH$0Z=abjZ{+L&P3knXI*SiI#jy-rNbK@;a%>FazGKRCTv`s8N)qc9dBOI1E92u8bLGfJ>l^~+s&SU8VPKx%-8kOz2|ZV+ zmm_tf)1eM(yybuNb3&MbgoSn1NSwx7KBe~v^EzZMau!7Tez6#tiz9rF zACRBTd`3?Y=5l0SXO)txAf=Rkfto(6?-1r{WX`un5zpFydrt2V+}((~(ZcyU%l7cR zj_%D_-H*(h>Z~O1U*L0_?k~(ok-4;?%op@zVd9T>3YP^j<xBys9q}0^V#X zoE1c{JZ#ta^tTD=zet!DM6f)(rr#36??_k@L|_kg@4v1yTC*$s4O!v6@atLA5HO}8 znLl-f5Sk<5fpD|r1aBuOXql$;1w!2$shh%I(lu*Uil3s-mw=pBHjamdv zC5J>;&qskRcDBiJLcO`OjH3$ zfrWSN$ZMf^=L$Vrus0(1eRXRxY(Kq8uy-T&D|LS|Y=8ZkV4pzj_v*Q1*a14Hohekl zdIPaPs}GW42kPE}{Ti{qs~?kL57B1`_D{tAt0E62sl%cAdcyWpO#!rTx>5znz=!EA z0&a(34KHj@1|Fop74QKFZl=`1$-skkixN|cp6Un$w@~W1WZ=W~Ap$-P!6izKPX<0h zUnt;95WKHaS0)1=sc$84zM6&L9cp1R>b-xW-Kw-opF-=o>fJ4&(Ei@- zJr(QH-ed`qo^S zh>C{xUl8TWS^K`XpO!Av`;p;X^*;=8k;7-vHB!DopDMV&5w|##yFtbH>{3=Bk|lb& z5W-IY;g*0}N~SCHjR{DY6Jc15d_LF11a~3g)&<}K>-~kk zT$q<5^S+389$06+ztj&96OOUSydydr7T%?zj|~ZZt$z@A*CT0d#5=_eBJ9-d_B9oV zm+sEzYUL}OGD_cyECUtO%kJ943T*;xH6`Oj6QxP87gU@Y7jx_M{r z>T<*_2*#bM4-{M<#ChM%)bKk_j}=^h#9be3Z@iu-xWR~96pTAdKPb4P5qCoXE*9=$ za)84CmnB|yw*E+{`20iH#n#L%dmHblcJU_Y7GyAAor27z&S+S0*}Q$gI!P=$M-L-X zuEK9)yRNWyZa%7cGo{R(Y!y1~0zE_g;)9`GZ*?Zs?bnX_Lj8gSa22wx30H7(1hVF^ zvWsGhkbbK0DcpXawOuB1h;W8pC!SwG;Qf|o zuB#BFGi7{%iJAH>GSOVUjwUuaOjPl*Il4tDm*9Qe`dDx&=jn36eTulptw4fyp85Jz zB2?V-AH1sT-Yx6Rzv$!?)~8zQE&le}2he(G|ISYXt^YajKN?<=6FGpd;oyxJs*S?- z@GarX5mdam%;cbAcab1YtcXq<;WgbZ^w#k6$)L9qJCxo088CW#78?Oip~$F*p>1T@ z_B?AydjqrphA&-9)X4t-DVLD_LeAx)8FUKS2)BzxTC3*} zai8-lEF!9S`_Z*)6>6H9#y!BU_xiYa+y7 zD6$$$c}n6kstGZkcm4|u9Zq-aTf=5+)%!W1yzU$di{QXot2qdH+gX|vGFa_E$Vbk1 zu-K1!tcIV#s@wB`_{`}G3oAQ`J@y6V8Iy{%R#nLP(wPGbJ2oiitGMMm=lxn+Jo4eH z)i!{HmD3fLHd`<;euf})xSE3CBIV4f9~?>F3fL3c&5D?MM$e~}BVI=%Lt8va)sGyh zKF5|;%J~JBKTv{pEFprlRn9>#ghG2fh}Z2$s#&lpT&|q!Vae42D+2K{lBxG_^$wCM zl=C$#gTZXdn^%uii5G!27@~nCZ?BsTDO`o5W0W%wmO;JmIXGOsh1ipn^ARi~%9~g@ za>)fcrR__A9j%;wVObycJj6~=&SkZ*oP^!kTM#={IWN`1?&^{0?jbQ=2}KTi8K9>Q z3=cJ14p%OBnsN?<4R%cJ6U60}P~>6cRz{;WxigjXd@Zh=Bk>C4?)sUloP2od%Jw65 z;uWa>7{G)VD(5^{@{s~Kk~*(|*#{81LOEMpv({9VLs0@I?Nz|srkosD+Jn_^P&!sN z0sVNSuU5{f_0mJ#RW*V)DrY?`t(lXzJOtyn<`(a;L*%W>X}`S&IVQOfdd3COz8H3%PXd)A3|aj!?1bM8 z4uBJ5t3?s#;3QD4EkNf3B-}gVEQTe|T2@+&=pS+300hrX*0BQ+@wdRn;Snbvmcce$ z#IT4n3=ly!BJ1Exhusu~ZHk=%B?u2Emx0xF4xFTO6;Iu@~nv5|K=Wp21Ul?+X zgE$X-8z|>Qoc^#3vPp=E5oanOf^9sGHl{|Lr(qeCNl%sb4j^VkoJ?2-BMw8vf{1f8 zEQ7r)K*Z9Bvm_}3wc)}mBhLG<EwGGa zn-evQ;kk|6jMS65Ev-r2C(U^Ws0RtvJ5lBQAnj%!0Jm?NlLyN>y%6-6G-oJ4>#;fq zt)7LN93bIm(wtREpnQmdv|Q-hY0lU6KxK@` z3X?xebGm#S96cxMCREG zwDvID+Om59a$LHz03h{rx(gkX?!1u%Y8}yB=oRTs^Br|tm9ohSBT;hw4;wlsB|POuEx zUBof3K-4a$t>cUXPF;=}nsA(#>Vd{MSU8M!{}MtPFq-{n~Mcd>vc`KRIa?{&t*48f}HE5RWMU%q6~5OYw}3d7 z;Zf(`23wJG@CsWwE$W=RtDzb3Ug+KUp`B$y)cLBxR(M*FDV<}vHro97Z-Qg-abhx) zAF18~Qux)V^MysO=Z1{GZ;n)@--4MpqE2sE@@`*`8Lpq+oL!mD>Li>x6LZPGWja4KlnjZv9G&I#-QDoS zt_5tkFw40<2`4Bqmvdm2^KlYRor$^RBeI-MKLrQrBST^?XH=GRQ4&s2k39<5@Htt| z%SkvviMgBwSx&3}HZV4OD7xeoSCk){t_HyP-4dcHXPT^$*^2o#`pN-j-7-gE8r*R zUf{IX&Mm-^+q2d;S=`GEy;?h;CV_G-#k|Z`Ouj`s9e)k>lbr0CV+@B*PSNkBgmnut! zJwdM!?12F4-Ax^u411z}L9oZ7-GkN0WZ0AS{{%Z8v4^M&1FUMC>W*#bnq@{efWLMeJzx zX)^3-+8M^V{eal<>bGRr({*>jrX38}^Her00y}%O9wpd9#9pFGl3~Z_IfR8@zyqlF zWkEm2tPQV}BqqIA1$c&sw0w>Xlrx{46Gy1Dg#rYYf!v%8^VG8=arJC^5sX5W} zTe>zw(HVryiFVxEG*zi0cuH|3iP(gyRDbyR4r|&}sqygf^!Ln68@fs@fR8hFn~zoS zH|c8iBs49hCU{V4YL)s0TKcpzL3Ws?y2G=7tLS47HBDUzpR-HM=7G6Y>R$MKDCuKW zRH?7vV;a5rd+JrH1w1r&4}Gkvnleot4h>II!@mHS44+%#W1;YeA-R83uTdMIy)(7b z16)(5tBs&@qq>u}4Qt%&0HvMl)U2}1kox9PBYVS;iVsn`>3-a_N%17(>W@8HyKP)( zqpH};lvUlAaT8hEMayciWF*uUQZJx{+AKAA4IJ$5YwNviWvKgFEp@-b<$qw?N~;ZCQw>SITSQ$kJ>#)Wq-8|OZS^PRNy=^XEQRlHQkQn~%5~%t^$FQ)O7`409jQq<9%uq~*wGxp1)0N%@ggmE zB#FTFcEP@$q2tQannC~W|{%=NT10bEo&fW0_?u{p)}n-UyPjEYZueSvSb zqRtrGl_Q8OyapOC&46(7O$AWpJ8QV^$FO&G)`4q`~orVS|@+LAMNTKs9_oK+J4CR)~VwoyIAM~(IwXWeBIYeU#7 z@Z~?&Em0E*x0;q_N9-sCLlwm(inq2RYX;TXLX87~HgynpO%q?&+^7cPzSX2`869e| zbMPf>YHxWloAg(a7=}G>t~%vZ(_urv!j3g2ukjS`4!4G969V56J5OCMpYEAjt>)0D z+tfT-t5z$dt(w+C(5a04nS2Z)AGZq=wA)t-dCgiA%DuF_U9mB@@2$WufxubC?-Md! z@fmjh|J%UF-)SP+LOzlN-ikKwBe0r*hth_^%^r8sBQ3(^kigZ@p!oc3l2=f-l)=QI-Ak6bi5a!)1wnTz3ueJms7dghc!!_xX zlyg(x##kD;jqxUcbJs_CV@~uFwy;8(gT0vdvCo*ge-sK<*9 z)FLdhwFnvJQR9Wz>-9oFEyAL)=^VO>MaG)AJwi@&3-w04aFPC4sHjC)bcRLc=p%kVyAGiK3o{6MOZYhKE@I~Ss18ASY&Gva!_FTM!kV>MvJh> z)*>vtNxv;tP>Zn0)*|F_AwPzTwLQbs3HA=rA}n00e-Rtg(1xu=DBW3yv3TJ!-IFZm zD%2t@I@e17M$c(08qe{SfeouogAcJ_}Eqc9}KrO-|TZ=Gg2rbvU zg>X9(Y%M}2K*?9=HfQpFfLeq_7ung+Q1U{u$3e9oEL7AYEV|gDGEjyqj+~YH8eyOo zVNswKp*0|G*PDcZT7*RtEfFAgY1P zNfuN3?Gm0|C1nXCUbt3|6%(jMShUVEAp}{mnCtW!VWJjc(d9u*i?Bg|CIr+XEZR^H z;U1kkp1U5k2#ahjLOzbfc&vE)Q@rp#Jy4iwaG$Pda?qs6SwY9&ucrt>BVkHVY!=}G zy-^6LMOZYo9>RlqhY(PUu&An@kT&UNXL0tZMOb8O5ppClv>=Dgx<3)}T`j_*+FFEl zjED`ygt_Po+RfvI59x~}0@NZbvb6{~0&x7Wep+w?5O-}|smZG|5hiL87A=nO$$mh7HuD+1N0_KZSY&GvauuYM z(l0QIp4HvX;jw^PghlhMQN-Uw0q!|HL2!2??nVpe>nz*D^ZEv1-jB?i>Z~NsxZrb} zenpt5MOd`7q0AR_^jyyBX=E-7V#@4i`Fv6L7ba>E7Tp|>Cm!xz(vt;3 z5W({Bnm$bks6|+`B#6Ks?B0J}UoT7rU$GS38@@UD-T=w`sb3NTY7rJa5WXQf!P^N6 z3PFqTZ=s?VVbP}W1r4Ku7GclxO+^X{L5q+>C@2IiLN;1Z2wH?5473P&iYO=qEkZt> zC@2IiLO#3~6oM8ZABhVJL5t8c4O)brY0x5M)A15Zi?GDfA}q1A2umz2!V*i1u*A|L zEU~l*ODrwI5=)D)#L^-xv9t(FEG@zkON+3?(jqLev!*Uu5zs1kM@ z+%)SV6S1vI*y#Yhhj2!fu(MGm^sXX#Efnukp^M2xzCu;P&PJ7x5ndpG?Wd0vEUFTA zHmZby*#3HwU{RH@vr#1s#17D_1dFPKosBACAa}*sC1F?tbzXXe_gq@8l zVIcNU-SJ{mN~22HnN$e_!H4PN1dOVLok^825Ijg`bbJf#AV*^K!m`?` zgr(jcKNWkDC~!{v60IH_FPpCKpbtisuylH+cLL|_2xW8idxAq%!qORXqfJ>mOxZlG zCYqdc6{-@J&a_UoEPL1KPJ%;K!qRyT-;GnTMYJz@D||X2$FbN#qC+}2)2eqX&1V3l zdgkk6#G@-QW~&l%nPn0H!b1I&5Kxt{bdkg7(=}4QLH{B+R3$96RSEe#GsY`mc!}QY zQmzrI5|-W)P)o@a2ut-4A)qQ@sjW&V=aO7qo4HI+5hkhFzke2_wt>(T9~LxSh_Ldo#9JK*_F*)qu-Z6QI)XN zs1ou}sxd~^>b%Ri%TblE)K(?rQ5AGGPfvSY1_eH!j z!aD2yr9PaPMwPJCs1kY?jXpLc^tHZ5+@UIA>Dq{QvKvI$sUIdnysWk=VOeceLavQn z!e8_MCkFnP&*hAl?aAko#mj!r=cwXkf8=vP;$?s4bBgh@zw#xJuBU6hM<4H6Ta~aI zsuJ?Oxlp|8SUu+oE-u-gp*xY$jEfx`fQ?-K8Nw!TQH_*i7O#n#L% zdmHblcJU_Y4a796gx!oPA(zeD2draW*K_nvafhme-E39DI;Kpv3Y~U=-up^ZlzfG% zgx!oPAtM6(+EHJqD~X+}u0pmo;R;TUK-L`A^EYsCFVmyN%1X4dCZJ2f z%4B^N;fyL_H&i9${T#MW(QCyHsuFhF;CZoe)ATmMp(H&i9G z%5bf2JJpn-g?b9Nqbeb9mx&xAoT2*@Fjt`}VYmA&&pv{5rW}dE#7uoQnJ}t^-8MN) zRPnBJ^agS8K00_TxRmqsOM?3pagSSp1noTY^)EyqRl**YDj}?kDj}?kDj}=~suCuG zRS6TUO4#`-Q%y^i@LoD?Bvrx$s}cr46T~*EgoyxE!i23#m|#`H#QNMU+5=ow!bELV z!bE+lgd?j=+{Fn}B}|NMbq42>M3pcRph}pirAqiS+4WQj6QW9ZMs@94kt$(AR0%x@ z|44;Y2@^h5!t>c0sS+l9s)S<9s1hb>s}d%Bs)U|Rqe_?%RYI}l{mR9t5++2IFaTmy z2@^(@@SaMOenb^}evB$%!lz2;8M~bFv>l@=VM0_11xu=g2~j1KEgspZ5+*!VLO&+P zj}?HF+LUeJ$x|h)3+$>ACX%TVCVZ-d2~s7zh7yFjhaOpq$!bsoekolzxB_*Dr7 zB3XMgq){bIc&dZ}U>gb7cTP_UAu)!C@{m+({x1v~XxGje0RVpIterw+V{I>x94COlO_;XcY- zUNNeKiOT4Tnp{tnP`JJo$lZ<6QzaCL)QML}l`ui7gnXo^LzOV$sS?USjIE+5!8NK9 zCOlO_4DG8y_Dh$^8++Q5T_ z3M{IG9^@f{_{@nap@-%E@?k}l(8IE88;h!h2~i~!Y%%W(tV)<5Rl+S4n>7)8!8TBpFhQz>K{i}f!o=xi&r@NIDq(_D3GbL~ieSg(suCtnOT1E( zL8^rB3PTP&kO`_1CP&qH|fdvB&?_s`mr#@p(a6l1j8P~t}0=owkl!5 zr%EURd2U@*!bELV!h}ziP{Q%3MrttOQzZ=WLQtP7VW3si98CCB2?YxEa1lOLLh%a- zR3%LKR0(YxF2biuXxl*jzyzrh22DdeZG$@(N~(lGP;1I`p`=O}1eGC4R!NmG2x`rP zC^eWMRl*>s6{`y+Rl>TU($TU4iMnJ`B@7~SqCO6(64u3G^Q1}`1oa)QnM10CK^&=) zQ6)@>Dxr)9Irf7!)Z0stDq)Z{tB@{~R0)Hi))CExk}6>kl&wnHWQ9W_Rl*>0P|aP3 zq)J#9hs~2JVGuN^=B{~CB@E(7&5cxFf>a3uj;=92#z@9?Z(Im!gb7k5tdm^ZA*m7u z#U}Z1(V+&eA5tZ35XXy_&9N0yC9Km*P>;DGkSbw=$n20*3G3u=kiOcIDq&D<=PjbE z!99Eu=c*DWCbZ%%BUQo#sS-9Q0*JcZ7tpDsN?4a;hLS2_UCa3`6s&z#?2<{9uyN$TvErH|RlkSbxrtVlU{g{_b( zVZ*HOuI1hMp`C?P2^(gGrv;hPITlhS46@?m#AGHns)PwrC1kRF_t3v%c`bW*(lV-q z2~s6&pc$^F*n_)Fs7jb1Rl-0sev(loO!!m@ zDq(_D3E97WWnfeZ6QoKQj6hYwgin=FVgxTJEST`A5(+}@Z%Xj8!epN+p-1M!u#e+Y zCGzn_CGgdQg-Hkad5CG-N(=@65B}|Yiq1>LeI9v>dk}6>kR8B)=r8b#V2^&Y2Xk~?CAyvX4bKD;cB~`*8s6;C( zwaKJP*f_EmZP^d^!TZhV@L#toA@^EN)LT1+?#KqK65c+|Tolz*CG-+<*tqjJN>Y!Sg)iT$#8CPBDPe9ol!NnSoi#i zJv!`MS`!m%PIjQT@CLpb6V6@)kk)M8bL2sf-H1lUg^LRC2PW{RBI?*jv2A=fPwq)Z zK}mQl!J@Qd zZzJs(h&^5Btm52I+OfBhb_~Rh*1ZLb(vH22v|}K4j6Q>~M%uAYJ<^W7#_H?EI7&PA zPA=`(>kR#rU{Tt!cXDaRUT5kbB@mQ$>|;wi%1j#XHBJ|;HigJlDDBwWmUgsoEbVxpCGB{iCGB`%ZE44X+R}~(R_L`72TD5@oM-)HlZ6&7X~zTm=@*G$ zq#X-tOFQm$hsg^b4-{#~1N-a0#0^S27TD5`M|lkP7(Z};?nceI3Z)$jCRop<$uD~2 z2M*L@1c%a&1?O70HJ;@UMw_tW2Ogs53InAb3odBFF{_v`;s+k8w+IfU9SbfD#vP`= zBHU>=(Oei!%Z=#D%x6K1Ge6Rd?;wQRg~Huc9=5iP6h4gdMa8$QHDM_@X1H5A!0Xq> z*Vq!qxiPN5K<#@Yhq#8Vc6BN1RK6bMBpFtN3BD+6CXKn^qj@_M}kG z84i>KBF{m%eIicxvvlYsHf4oM2>8}^0U&b3h9o1;Awq=Tps~Xu&i6@; zxrn18&f#a*YYgA!m3Az=O%9*|>Bg3>p~2VX5a_YAR*|0fN#6L)PTC0(Cw)R-Rvs5F zsE+|Md_89TXSfsiPj;fA6daE`1+xnp`nbBL1@T|^xl<+NZU^`uXt^lidsMn)!;DE(b9rx2#e zhY)>Q_?@imD?r9H{7ybk-LNBsT>Vmhj(z{%D$+u#;b(?TJ_E}tysSy~Pp}eR){4(3 z!Ey~NpmzHIm-y-burP;_m==p_Rf9AbiJ$(n#prA?B=k9ppGI0L>7RuYW+@aut$<-O(x zrS1iP;nnF+z~a)o4DUj6$L@EaTl;!vmYO&iS$Q&GK@JaW?E)i_c>0g9U=73VkDH!i zn-yPTPi4XW8;KXZNe7xV(5K5NM={DsuER{I{1WvI(I-$y<#$|~6^i6#ub{`GT}9Jt zplu78f)1-(t`N(XF@$ zr@!JZoOf}NmJav(L($9bp*=Rufm^EZexLLVPy`A`ojiAu-r0OQ0T(J`JS?K?h@zt+ zO(nk;%88Dltwx{EA$>k)YP0R^iS+rLstj>X`h3n+R+G`^bFPk_EkvWw=S;Jjj6R>^ z*XMJtwQL!EK4)h1F|lRz`J7p~m)u7cXlL~KoY}b>q{-;>Idk$qk|v|i=giH`zn_Ul zpU?5@^EnH0I|$0?^EnHxxQsrZb3?35P)486SsWWEO-7&3@$2(BH;XON=W}Z7^Kp@5 zoIC8Cr&BgfeH&w|Xj6y0;Ev@vLR~B{6}TeEM7~ z{mz?Ap5Sx~4d!^(&AKTy=PK0X)3zp`IK6_#NI(YhtXp(HF@c(V+ScR?8bZtUHA1)@ z3AQF56QJZP^n-#!O+I~*m5s!93C|z)IH=Yi2^BT@^u-pHfihfiKutb9(Q?5!aS>ZfV5q)m@@1{kSBMSNIk50p@%E>9)_wY2VWK9Vo*Xnua(dA5_v`q>oD6F6=_x_6S%e4l03o0zpPpI| z;X!?|5Kxm(SJe~JCcRn+sL7{oO+Jo9h8E! z`I!Din5fC8ZB0HIRbwAD1reX#@XCpD?(wY0_5K9RRjA3QZB0Ig*`2gSUm*n4#Q{y})C(5DyH zSuqJAp7oUOKn`*hD)i|^&I&qq1bDQM-B0UEVWL8xUL4^Qt$LWx=w-r0g+6U7^l>qy zu+mGA=d=1vVWL8xo^OpQPoXdCIi2%3@A9b7r*E`yzOJ)9Jg>`zc|S65sGOq&3VnKMLzyq=yM&1feR^3CQ|3a;=ZpFaVWL8xzBwRIJovq&TW#TjphBO%B?<6l zeV71Ip-*3F#UhpCSitft`g|dvLZ6-)L|`TmUe&h=0lz@ivw{eghwb`xA)rE^o)<*0 zJiMkOPjIrR(5IIK5!i#>`>*RB!bF8WeQ$UXH3W?5P&k&B38;A1pZZ+kp-`WGAiSU< zdr?6a2=(0|R21sdo5D9Xj0!@1pAxko3xxVOgn}#(>SLn?Ss>Ks!9b{wXNrO>5bEP| zjDjo>>f>X6K^6%0@!`233xxVS(;(F6nFgUgHXUzry5{Sqc$3;vDcLBM!lz83c$2Yu z(^l>wluF5-FIT5EaA)YZ1&2~8*$aYkXX<|hhf*oo-j#C=d*gJ6|FGZwh`T=6-gteK z;7}?hdr>g%EImxM}(q!J$-2_Qn95O}Iwy^|Yx{3x!fC*(jA_mEl@FM7E<; zN;XQR@OBxLkiiUn4grl+O7{JhXCFa2Q-&3on5mbL2_uz~y~$ysiZ_{~-xCM#ViiclKr?92;a7l6u|9#-TE0*f`S})s~=BUInnG^<}OwA6xzN~J>JeVsjcZf z>0T+{Gp*RkUy+})Qw z?2zrv9lSPpY1mDN!tL$NUA?xU;IA|L+mKOA{@8D5S8&{}zYPKYHU#+FP|IJ4{jJS- zeVfUzHTkWq%imhNPL$u;eY{-owN)>*r9N1daShpijh0*Mvb`$6_A1*p)oxWc&mY$A zCiZu0MmhPJM$6)F>ZskV0kyj|pmw*`s@)j&w=84l^QLwQ@>f-tzhwdWEeptRS*`qD zp<%9;WXvRg>~}|yKNw@~m|n8CRVS+5l8#>6AbMHdl2YF5!V3p3QMZzhFKKCBK6PV` z2bzE{t6Rh)==$^#gq%Ukif@Cf?nZUJ6;&nJ>BZHYo$=jsrkZT8I*A>3$4^o_FGw(zsm!1x!lf$ zdhhaDBV#%HyC7o(`FnzvTZ8<;$Z+$!z{(F^S?Ko51y+7AGTd3}0xQ1?_bXC$VWvF} zHmdO)!nlmx&zO`?pb(0`4=6E*FfJg3aRDKW^M^3LRtO0WVN}LU3gJguR@D{4sDKbg z1%xolA3|lV5EO?nJfoOg&!FXwx|LmeG4Bp`$#0U-?Whj3J_5SDTX12cwF2%BkHT~`PL140-W5W+xz2#3@P zVJwGGk0;Ny0MH5TyL)0O@8&G_mmQ+4)R zS(m@Q0si_1`0HEC-`}mNmwRSBK>pb8*1G)l447eh2Fx%$Yt1m**k8AdBgr58E#6&6 zJ-Y?u*DWBwZng4T%>MSv_~%Je&m+ihRbBq}3-GsJfWQ4}`8$jKwa>Vo{ITC1b@^)_ z;IF;y55`70+ukc9k8CfbWyMc*)NZc;+k4rzX?EVLRxV-o*F0n0e@yMzZ*^V%ng{r6 z9^kKe4SzSOyZO8%hhIM_C)Vc8pjCWR1m4Z~;dZ)|g|qESitcV&hW?B1X8eW__;iJb zZwL51!i}P3r4N6Tn#I9He8JqPy5lK+L}nQd4+9H5yU?tt z{3Q0H&^|4a_DgfuO^A8V-I*Hi`Nvb^Z3ERQ{A+BSFYHQ<_u{{)@m^|f21sM$d>J3@ zfxpJ`UV$fPQ{lae&k(_1WBqMECpF${(^BKTzBD!78yi#Oz4=UPyth6`jrTUp^r`g2 zJ5D$y-n)CJ#(S@OYP|Ocr^fqWRBF5rFG-E}(VWzHAK#W5?~~1`@pinN8t>E3Q{#R1 zduqJTo8s}W@$<_U?Nj4@*(WvLSI4Br`})k(css95jkgOQEJ~rC->glI_w5s@@xFU2 zHQx953``37{h;96#}s%!7No}8ylXM zHQsN}rN-OyQEI&3e@>0}2Y!2LM z`|5CmZ|wEL*OjU9c1}!$k{a*(FH+Ahgy#EeMjra4o)Of#4NsagG4XN?|cUNk>-?pa4+w*p6yx+e|jrT{`+~8~M z{PJgu)OdgGpBnG)fvNHSIVm;XzvrjM3(ZK4reP5SkEX_J`dVtd*w?A?n*E&` zFP;m(wNBwUo!cojULO3wITe4+k57%44-y%v_$#<7HC~GwQ{%N&Mi1d#5)^sUKPurN(RBH8o!GVX5)joRS)^?M12a+RaLhS8{9PcwO9H3x(Q0Xn47~ zrongJmjfHD>%^YV8$4Ym`mYmPfE^1zobacSKcD@PHSwDXA5VtQu8H49_@>G5IDK02 zyi0h_-xtq5HSuZNOuqDWu0LPgZ7lnFgg1K=Nb=z2xBdMuh*{Y9){VsPOZY-CgMU8z z@V%^Ue<0zpTky|^$9}isA4&LqU337xeNFsy!qc-0e)|}xWq&o{2PU(Ba83NKM&kE- z!SolJ!9QQVy`j;HX9D5-x#$3V-W@!=OuzNaUP=aic9 zj3GRRiGRNOw1Y;gK643gyaeF!HiCt}iSP~GU)B)50E2-)Up!bi%l=lvV>jZT51)WW z3;ze<8#?~uFPTi+xYh&g?^V-&cf#Yegnzzx@bcG+r-JYe-M`KvJnnY*=d)i7jh6id zgdc@q`19dUf<_C!oA9MBIslJ>TKM9ZO?_~h#6O??w$Nzd2N8aNiw?jaR1-g!@conF z53GrQh44#~;qiGEE1og0nD`qyKip3ELz3CAsA+#E;TzgtIj@>{x+Jq->v+_g@K^@? z^VPp6G+OyiB0N1_<;SS}SePFwt#~JS!-Vn;mmp@KGmY@3x-@BfA?MLq5Hu)!cVWq&t&q$@pao_{LHF{ zH?>xLj}fnRGG49gt`7-clnkG59B{wvX{7xYpPD@Cv(I_=Ap8-@;-P-&XTp;CuZnnh zS%!bUdE)?RgpTAq9wU5x{mA&w2;b1-W0TKJ-dH~T^TmS)9xI-+&n0|){mk`TL-?Vt^#J=g04)1^2>)QR`T8C+QS&%j z|Andl@?>}#M~e(ij=zV0Wq9fJ9JlrmkH_25I}Pu2^LU!SURjXO+{m;v&~bJXqrABu z_kL^m@nrF48;6|VQ{Ndp{2b8z^YsrMUq7i8=f)olZxQ+T@$kCcjdKR9KnD-gvMgAbCG)&uNk8vC603c{~ShNrxj8JgtX z|96weVaa&?4T0-4tC9HagvZ+k_~)xrduW6@aUOpVo=xJ^=W9n6A9nY zS3}Q#P9l7L_bWJ$*@WLKS)J+l)U?(-e@EEFg~Js8eEU-Y}|U*Gi@*QqelIQv5h z-_eBQkEb1Mu*Ul&!Y@sRzro;ne8tmDJROtONyZme(m%d>ryD+=*5jYAUi7^W_semF zpJd>EJdH2hU+wYr67lLg4so5|ZzO&v;jc&**F+N#+aH}_@@{B67ZN_{el@J7{TB$| z(0S;qM&iSciNB%t_a=Np^X*J{9%sIBQR}#LW+UxSBz!~b`3m9jHZK18;=u!=wIBVr zk@1A0rk)MGzk4*{8(Pm(2#>=A|9tTefkrF-dkEhl*?!%|?9RMjzMW~}pYK`^uuuEt zwZ@H{@0^ikc#S>Z%hHC2r?dFy%jaNdwDLKM@Ta-x0Q|_B_4{abnOPxyu&Cy#3+{_;lRs|jD>437sI3x74? z>pM^3x)v1}`$^{uswnVb zTJ`GC!sOr3<8^<+H}raXHsODCqX~%T8xs%beR)e0&(>sk>W@u^CdZ53g@(7L9v+T6 z>_6e;^L&53?V9e=dGN*P5kxE zLtL-Eg#V@9>&Bgd*NtVx#$QA8Ih64GCF@tbfU(B&#f0yk43CLg_%(!Y=yCIb2I6@< zZzVjQcHp0Hf28qDm$5RxgxZ)oHS~B`Nce_c#~x02?$=~-b%U63f8p^pop{BV4E*_c zwdUhH2;b1}qaPxC(t6QE%<=3Yd_%{3e%pqPceX!}@C}_GD;tTQ+(0~!r<(|m??no% zKaHoqV58k{E83a7IWJ$o)jD3iK={GNjlZAqfNAYVc_qevL$5p96289srX25)gl}j+ zjB6zRnnvQQ8;O6ck@$BTi05(f3*kw=#ou2vE*_<$7}xcY4yNCdp8wRkUiydd_4NbC zRk#n0JDTu)TEljGydHX>;o)sD{PXcJ0c-qCB79R99e~d=c%JWO58F2dgeEfEvr%2*kOi;kI&+tFK^sz<=vL>SZ@6D z;qeBLg`YzBhMu?FK=_HS^#J=982g-e)*usqmj>=9%qu_D@P4nSULdwuqh4i|jjLCG z!q>Oo^SC|r|CoChI7zRnUbONcgk%Uq2q7YmHY6d0Jh~qJijyIa=_H-ZOosFjA;eVb z)jgF|S9PkYr)L622*^ta5dlL)MC2$Ua?yi`Tm(c80tdO=T#s_Sh~V{dxEw?d2RQ0c z&i${w*4p3RRkiEe-`69*TfdpEs=fc~zt>)C?dSLHuQK9~3qE!~;#UQqHg8pZzK~I$ zZ)U_lrpES+)&IGIkJbNn!N=NvE2BQYoKc_8MdCG1|55NyOo`LSj>PF14Yq5VowS@q z!DlV!re?NsjtM?%Ij?PTIkEGe4+=iE{(md@R;b^RdBBUg`?2%-8`oH`*!4zT@Uij! z8o{UCXR7V>Hv~`XB6^MW&$Q5S`sXhTK6V}O&w@Y8uutHB9P?{joxaZYxjKXwyUw$i z-Cwv- zKs(VmzEkjOzp-{DaXh;2e?;VH8cnZ>a!z}Ex8UmxAIJYRG93JAn{208{@sF)?SJM4 zAKU*N7JO{nJ|Os5KfGJ;S^e-;k&E3=`L5v8`bCY8-S@H|j)eRs@o^`+&yF9*L@u@; zd6nQ}=j#s(KGuI95`5ZznDzr-7kun`^SnOWDb23RKQH)L`|K0^wIM%T<+q<#W#oUe z;Hx42+kO7;37)oz=rz{?Dg`` zWyJr5;A7`q-xYjpzjOBMv&F-_;A881ZASb-!N=;~&8YvIGV1e=jQV^mqds2~Jk1N} zHP$c7z^d{5)HkrdV&i|G;M3ZdjuU;sw^*HVePli|x?lPwk&Erezbp9Id2-=Fu6L}R zmINQWK7OI#W7k^`3O?4Z9~FF7yPp3>u6L|m_Xs}Lt~Uuj)~>G*e5_sHCHPpo{-xk! zaHV}g&h>z4%|YuB@Xf$em2s9j%=42kxPpYE$2OgKb%s|O$viB66|o zy-y4Nvnl0#e59O*-opB&-7l*4`xC*(+E4xTl(%v@vHkqDf=}!3be*&<`0G>Gar8tP zvNXR`zmNSA>leF@`daVI^zF3-o|>xmh(EnXT9$K z_D8s!=Y;gTfE81Jd^#ikJA$Wfh+bp;8aWnjSN`*Une~aqUoH69b#6!SvHjnx1plN^ z{7V1#IEh}Z$J^e{^++p6+sOw7e`BZ|TIfA^${S97{bOEn+Nq1St!R1w@+(|k+I@zK z-}R0-{S<$Z;M3w!@rMO}4>=vLF~6@N5q{VH>l1?iF9tmUFLwSKi`nt-eZR`}_`{Ig z2U$Svy!KAUKT|fw#`M|^{2Nbs@YFXv=Jlt&;<2Zm0UY&8s^_bIm*u}i`rtJtFM56f z?VLc7drUvhe>XCm`hHIESBCIp2;em?PW?mH|Kw9xU`&4+*zg>= z@5|L3t;cB}Wx3e#>e7t(TLqssero$TD)^U&>P`0_z2TJCpZbc&oI1cqig9|W{6C8P zw?pk?7r-L_*V0BvUhVPqPqIB;LWy{d+3_e69Y59ogz>@k5joJozf153h#apm{u`0# z;J+jIYYch}KTaZtaVr17r@6eVL-%o=0lc}6 zSe$qt*C#*6@`spqy!@Myf%<8jpZy;h|KCG+>Hq$o#jIb?_&m$S+GU^M{~;odzT(7@ z+NJU+mzP)mf-mh%{+zGuO#alr+nN0L{@;A^+7AEjA6Py%?l1Zd4}Ku{w0V>ICivL+e^Bsgeo;HUPw=sJ{k-7M3E7nvrm(B>e>GBnjgxN+{$PmT&SS~5C`fQx z-k!%~i{sle;x{wmUnlryhw5`aS3~vxJ;BG0Ltn^<|EAy%g!CC%w=AB<_Kdwh=O)3& zj*G7ld|Lmj_W3QrUl`JV#<%Ae1fMpqQvUxb__X$>@%s43GLn}4^covyZM@!z-0^tb z7WuUDRKK4S{OzW+3FWd zcA^_A9XtI{@UeEfbXPt*y-DO^?espub7>RmF|ywLh~Q)U&;KU)Si7G6c-AD=t~Uxk zw!U@2$JTdK@Ui2|1A>q3&ps&l*!jw51fSL)X#e^R!N-o*r<}!>q3I{R#^QQpf8%Pw z|0Ki5@p8dj^?9k_W8>iw!N<1aPh`Y@UGTB?Ir#}}pESJoch3;~=R@|9{_c~=r`}lY z^i7eAwbSXlS+7|9MS@Rj2U?Gc;QuP69$y@($5~J05@Oru#ez?3KdRU5g0H6NCDRUj zed{A47wpHxFISAz=X)ae{?PdPTRg0)AK&#Pu77O*@j<~qF;t&jtdQ3K(}JgFMz68< zD)k_J-1zzzk$WgqkDvGJ@%kroJ%Z(s!<_N%lY)=EZuMt^znm(8*H}G9=0*RKk^iyh zvi`CB^MZdqt23_8eq=cHeYN1ZlnMIFII4boi{O7f#4mn(8y92acJV1(!e>+DJ}z<^ zhbN!Max^WW*O+~ui$v5%^(zVfg9beTPYYXI=le|-v;EfBMedrA98FZ6a-RKTtXHfZ zv_78`xpPD1Py=%O^HsseUYGs{!Ke9C_4(I~_+3wB=Cu7*5famW6Do00#*ALp6|`)3MNhyPB&Q#V1cF?}vTqJw|6;A7+At%6VM z&$Ru#OYnbkvQcMTA8Frzh!5<3Q znJ#!a?Q!?BvhhDd@Ui^ejQlUn$p86_{C^e6ukGrR3)nu7gzPEp;~_SyZSS8Fxir6N zIge&6N98&fX46mQPP-_d+&gp1UHR;M<^6e1x$ec;%G369`g2$=ZGEly3j|O7D!s=W>|f1(+|c>lEP z5-urrJijO-{_04)#`W!je?_Q1(q4~CZPbr{EpoAT`rM&`X&3O<(qrGlr+3G^C^tC8m<5S|o;LDdf*5qwrZ{Ikf#`r({1+bI@* zx!}|Mp#AcG!T)Ng-qgX{b6Rg?BjB(0gWnSQ8Klu`tbL2!6u+y&^`YDN={1I@_;uR% zxq^?~|GiZ3Y3EE;pSuK~HjXL2lM%ly_}KeW-X-|h>n~pt{N=`)6YM!MZl5;C_UFG7 z@FV^GIfAF<5530xMUHg*b%Eex_jzs-eC+=3D+M3h9^N7N;JzC*1V{g`3jRu}EM8;v zm5x>8;i>a%$yj|Vf={!*_A}QC{t;GZTp#K0NB2d(EOHlyJ0JWO|L^<@(qEgFLq$A6R62 zz0gQakfVXevG3_ij9&@i=>n01f4<<;`VFneO9a0^#4rBP-368VQ<3}i6uHsslXqXq z^~q|tJARVo`0oU}N&lnz-7Wa6@qg-`xNm0(KHRvuOXSkVXD#P` z!GAWToR5!`bK_N9|Frh6XdRu>+^n*iyd#jCiqgQoXfZ(>X&o&#`#g}alYUW zhxnx(+{DG$e(9*logb1ThdJ%@VZo>QQS0%c$a*OLQ-Y5jcmG`QY1a$XP8U3n?fT(R zeZ@}iAF@3DdDEvd;vbE~>%9G|f`3V;}oQ|^(Ba%zwNOXSk*q4;xdF9))fbHPEzXRXiQ9m-bDGoGKXoUg2AE9bn!`O5jyZQ05>`=|1i^XQAR zm9y*ieC2%pj%?+e_S5;w`E-@#(%O%<&;MQUY5T&8|GzWhzb|;!Dm-p!dp`9pMrOVK z@nVsST?cPv#J@2k{=I^aU2lC)@Ueb4t;TkW#h)j59T&&OO&O5X4~GSx)epZdaW`;1 zxP(}L6f@#)&WK+VeC)jU^@30HpY~6`FZkH=3I9h%{r^5A|E?z6KdnF3_5`Hwbi9RIyU@UixKo#6A@>q{By^WBX2T}QIn z_aedXH`bb9uN!=O^#z}1FO83v37)ns=r!h#k?Y{^7JOR2uKmg91fTbQjKwzBB&|N$ zuU;>BEq|;&GOkOQ*>U{=kxQ$W+U-4pPrHtx_&?RWPIo~0(VTN=XFyI7KsV6eKwH!)ZOPiGCl`Z^SPp!GAYY-pKVd_2&hfTuxShzD49> z?fvV5Piw!b*OvvKbwB9s1J>yLkR3*@CwxrsY1jMI58n_x^_TP-^UKI}l&20^p9>j2 zj-Nq>6KBs8eC+&eQ}D6vPv}!N;yIh8gki6MWirNww48M&i}(=e>mM+cCABP+w>L?T(~c z-YZ4E6q1+zTK)1N!CxK1i(mA5yvqGRL;N3XH=^kYbL+S8KYWBbF^jQsZs zK34xn1RrakPY6DCo%2P(r`1>e{7u2X+gNjgJ*E9T!e+JO*n>aIeu%Bd2L&JNw?_q^ zRu7H4Z)M~^<7KRWtluhvkFD?R8SyU@d|JP!_5D4;-xl)Q^Zj;k`pdb#vGdd`1s_}A zy96I=&({h*HXeRc@Uijm#~Jy*D)`v@l>SxlY}E{*~G6^z4lIYck^R z5d1mD+Y|gfa=m3!@M+_x#?#9LpLL%936V?dKeU{$2>!F7dPv-Ud?aq)^Kdjy|WAMJlWB>33z_&*E&Y*uGn zpT{Eu6;S?v61;vN(|=??^1|1!=J$s9#lGuYj9m}CRpdSwk`w#>(TLn#ujTTxt}osr zaC`KI7w5A z{BZ#i9sCu7kJaY|8SyX4i2pUg$BsjPF8H)@TmAcA1t06*|0(#`_WffIGIK2dvjrdP zuS0@Qn-6Jy?-G34xTE83U+|5T{oxml><|B^H*$?*?eq^B@n<~5{IPz1w%}v+xmNIL zc2zq)U+}+UTG@nlCgbhs{Zl{8SdSn7g>3Qk9Kpxd`?`$$&yU2bovMNlUWXJrUBTUw zUEe({a2e#r#>O3LxX!rqF~L96peNu-Q3wCmf{z^+p74uo{|iI>Gd_Ps@UioKGuKV7W`ePCcVb$ zFE>SNd>nimGpEh}6n|Gnd|&Xf`oAnA{z1V%k*hmi-(ARX{QXYB$Mzq8B>33=^-CG~ zzn_u+36HQPWA{gH6?~fgHD2!$eBOBdl*q^0>nnm!>z{R;e8MktP4vhvpk@Ip@Be^-J52&~mO8d_Sa@lygMNQMum}x!`># zB1i4k)$bc3mlhA&-hYr0f9kI=b1eVag1;qH|C_i1s!vVuvGauo1)nzWR6l<}@Ok&U zp85{1d0PCdA1i_n-p?m~ym`cruNArA^`2XOyM0ygv3~is;M2xkt;hVYGIQ2;`GCm9 z_TRrK_}F^zc2W-_|SOV{Z6jwJ3{Tl&L7?+5yC*N&-+C_ zHvYdT_`LCd<*%{6Y3m-gWI$Hv#c3O+Wz&U_amW8-U& z;M3wu+toqA*F*l7{(+vqME$(R%?CtoBP8dn8^~8AOE0za(|?`oMg0!F#>T(vk?7d@ zh~Q)U<+lnxZ5^cgd^98fH#73@emB=QR{y<%kJZ1Kk^fB@`9GYI|LYm~cl|rI&x(nL z3GqM|IGlL6P4HKR@bn;52mfZlr`c26#YY7Hyb!;%i_!aa|5@ZZA-Q#5ueIOcdI#Iz zPy6`K2tKwy`&+@M)mz)a>A%VP@ZSl37}<|GSMX``QRTl{@J|leXE)bZ`eWJ=e zno&;c_rUwOyvoU@xbgC=eJ%!qO5~Tyf9U-zKc6ap$wc{YeSqc5sq)XBC_nS>S$-~6 z{yCn!`scRaXZbCu*OT_MpBMa#Liocz{-O^t|64-%hkX1;1%G}hUZ2iks`mfN zA25I86fR&)|1*$ouKynfBJrQr|JwhRqjj~%DqBlwF$_I#Fa&o2soR|rq-6>ipk;md;m zUIAz;A7|4-w}MQzkewB*!aHT%)p9$fQ`S>>pz7xW)`}iLU{y+$SqmSSJC#+Ab{vQ-P#Vx(Y z;+i@Jr@mj$h(GUBtj~gBpTI8-M&sd-;K>a18q=qaL`R&wrNniN(J%BmU8h_?geKKCkEMj@S3q$Z+iQzKrq%#xa@LQZ^}%a*J@KToPuhK2p>XmAg)`6Gi_}8llyeKGoOR`yKY8ZTnJc^Dm#3U` z=9&EU)mJ0?F^~7MPdn)(LOu2;3M;#>II~bV{UUrQ6dw1alTJB{c`k%=}N|N=SO9TL5$@ok^w4Pz@{i@Dn51lzD!|vHSCOQPQ*gq?2K^3nU2@ zS=s%(U6gd8aSdiA7gY*3?1ssZN9oVDg&+YsP$*oDP`LOpT#%t4;B#C~O1Oj~ggo=y zlktHxxm04t$P@~f{Up*0h0DnflzoM30oHx?3gIZunh#{Wl8p%P6bj`L1&OJ$TY_Sa z!axJFP?&d3K{_rx4Ypi7gN(g6!ov<P7Y~ChQSf zhs*~A&-2ZP#}^8>+BRT(xhksT3&kZ9ABKTVpuE63(|~XD!FzU5aQxI$yrN(D%)--m zQw+Xn%qRfg?lMqk@?z^AHi6dd4i1w-;iqlQj0$(U1RSwd>wbf{%SCXY)vUV=qV6^d zGH`=K{TZe{O;?^RLe*^9YJ!7=)?8enux=wt@{hdA81bQN&msr4$ybHK-5k2y*b9Yw zW)UOA-eHSt`i5Irq0oI28kgqvTnCaOn?y}z+)E^dLf@_J)8UE1Nc`+S^XaB*9gd|R zID>PxMsikm??03BI6RKJ2B!kH$rRM8sgFEH!vl9i#{)FfF7M+!(;~Uay~L)Ff}HkJ zTNkt(D(Yt}B{wCl%l%{NT9=<4$IgCiP1D z1&#dY^b2)uuR7^+*r8&^ZtAdKebVLVCbav0%}LaM(>Oxd*P3teDXOuun^In9&@*u8 z&s!umT98`Y4IP!{4ah7Sfd`T07WYO&z+pl(51sTH^pjjfq3{dHl@S*KYRs;bZvrLj z@QW&9+R2*}5$(5BAySa4Dd3?6T$f#q8!YWxbrt{;f2C`PC``*zlFa{{9dm%E7s}1?I>q#&O`tE0M|*8 z*86vyw1nXOCZ@D@iv3@JHB$x{RntD8MTy}Hg&PjOVCK5#KDSt$S-QM*`RvSPYll{@ z!{1h?z0vO0hONuCx?6)*^Ri~EzO{bY;P^(p*BQ)Qwy{xb^ajT+JKE|G+P&^&0AE#{ zy}UR_92>)}ZtJQ>uiq-oT(&-Q*yw7S({YcRaLvAJ2e;spbwTyb~3 zcD#cEuUKynuV^=0-SQQUcE8cv=(Ous5ZHX(Y7Ym6L3_R1YR)u{)cS?3uKR6pq}LzL zw7bIsf3mrhME|{nY86TImFlq2>2=p<%pU?J-#oa@FBYrSjrw2+<3QGaUMy(pex~rG zjkXqRlYNtIIR)@89|65^wv)Wr*8?=UnHT$Ut zr>u2)+tpfs9sgUkLcg_M9n_At_*=CqMWc9dq6+dIO!z9LCskbA>|ZWaHw)E%p}JkDu61hb1H836$gKn2sjo4#(d*sQMq;DWBYCLR1WT)R z59IpoA(FQ0g=*{AuwTPRux**ry5?^OS@q66%p?_-!e3Z0DhxLY!wv8?=nc_GZ%2CI zp|8!_ar53Y$;VrW93*c`@^N`@51Ip5eWSX*F+>^k>AqgKRS+}PhrR7aVQsxN)VD!l zoBRsftZi4kW_J1;iu0MsXdLMi=VrZcxcl;bFhnx3 zaQ3j*X>yBoRbvy79-Ts?gNSMM`-L?Q-nABKj)WeP);e2*BPJ|3IM7(kH~j5w!ah}g zTQdQVzmg~)&~(uPr~w6rs<+c0KF%o zxm=nrFm56Sy=ro*nTQqSOg9_W`FYl9=p-C_TD;RrqzsKNrHoWnH= zi{iW_8Q@{`fQ2gcgRAKDYaRZ4U2kI(?Gh!AVI{#LxH#!BsCEO>tE!-fYa?@1{`#$M zV~Fw1X4E>3pF$(0QK#0qX27El#ul_vR&j8+cevkPUvHto8qjUE&K8&(Fb;;V!jLm< z$%X3e2a6Rgm+6c1qp0O}p@F=u4h9{R-)#-h$xad+MJ*pXx;k4ethHMR^2SQ@*d(#* zD$9ow9YoRleVr!B?W-&wr2t*ss@wY9!lTgy^ zF1Op`($qI_y(bFW+{wa?Bdx|g*Y&#SFly)kCQ%gUMnDs)uv)4fy19XVc6|~<8R-** zNb?nHTa#oKHFJ4Vonew`4TSYT|z+-vi&oe_0v+=-!U>QisB*7bS@ zDrdzikTo4pB{IOsw+^-xC(lqr(Z}T_?v_yW+ zq)gy|x7&qU6T?UXF5~-TDA0ug&HfxPzK6lxmWd**Mj78Hg9{s&N4T{3J{d_mG}}i# zFusSu?Gbc^62kBeOnp2>dQ*(C*~3)YF$TVenL8#<)fT1BFbr+o>(Z85_lBYCKI{4v z){akG#`h__BjELE;O+<*-^0wE8fHU|)hd)Q1&+y^gGLY3p91doJbP3+NSF*S)JOH8 zgvnS6y84J7_&x=E%tu%1NSFd2Rl6QmdvL^WDfk{H9$@P18V}#Y;P&8fe+%=tB%tRx zX@W>$*rO?>gPk)elc4opuVYrLgKA0MXXSlvRzH>I^wWG3YpAYq||B=t7FTUpjD%A-gHUWZVGR;JT(`UpHlAJ)LhtpitNJFTx_;X zkzJaai;Gs%gt1FCHG8_biqq{?oNln6OR>Kl|n!n4_tyZ3HweobUm8V;+Jl$&L z=~gRGw_0Vo)hg4iR+(-kZ!USfjvoT^waF~NEsR;-tpU_Ey$)=NyVp6?aw zB_>#ZUZ7w<)j@lKVbNZygZBJn(O#;9_B>_LUaEukd}YyIs)P2tWzk-$gZBJo(O#;9 z_B>|MUaEukd}h&Js)P2tX3<`1g7#-CiuO|-wC6R8_EH_R=QWG=QXRDCHH-FA9kk~) zi}q3-wC6R8_EH_R=QWG=QXRDCHH-FA9kk~)i}q3-wC6R8_EHnHKZjDZpX#7JuUWL0 z>YzQZS+tkxpgpfyw3q6jJ+E1`m+GKBuUWL0>YzQZS+tkxpgpfyw3q6jJ+E1`m+GKB zuUWL0nxOreoud6z2km*yqP97OZGL)j@k+ zvuH2XL3>`aXfJhiJFAM#x@n6UT!5aM?YU>1-1EnHw&#HHY|rB3*`A5VvKOYWHx@i2 zj!RFs+QM|JEljuC!gQ-GOt;#?bgL~)x7xyVt1V8q+TwJpEl#)E;&iJmPPf|PbgL~+ zx7y-#t1V8q+TwJpEls!D(sZjWO}E<8bgL~*x7yNlt1V5p+R}8ZEls!D(sZj8aqVDQ z=Te-VZnxs>bi);Ar(3Q#JKc1}+3B_`&Q3R8adx`(inG(rSDa0;pTA@t>%)p^JM6_2 z`=#x%r){#Q?XstBv#0H|r){*S?6epCW$L*7Quf-5DVy!Zl->4X%65Cv-*0yYdM~c+ zK<}kGXfMhw+DmoNUd&sxm+GLs7GTj{s)P30gGGC(4%%xS7VV`vXs@kUw3nKo{mFr% z{Zt3-^+Oizr8;P@Ravx`>YzQZS+tkxpgpfyw3q6jJ+E1`m+GKBuUWL0>YzQZS+tkx zpgpfyw3q6jJ+E1`mztpcDT|{0R0r*O&7!?j2km*yqPO1BNM!r z?BYE~CU`H|#e0rS@LsZu_Z*qvy<`{fIWoa}$&>Cn(=@uE?A$k8b#5H4>V3r)J71iu z)msZ|3&q*S;@T43QCXS`<~qj) zBSFRikf=&Glc^k173`G3E+kLW{)}}sl2sv7D=ts`V9*?g<|7bRkRU4QXzDZqC%7n< z5=od%B^SnhT*e02Y-wSxSS&9tF48S{lYBgi8u#&7SQwF_5YI2r9nTYjXA~7jToH}u z=Sp)p9~&U{P_e{iqw)M)WtKYo$r@K?9aJ1~d9A|4mCFmUvEx8+0#Ukk~=R z63+{9a}5y}Bz91-#0x^aRzrIT5<93^;zcH|;0V?fVh0sVyd=csSsdaHYV4q5iEBb! zX`u565<93^;<^ySJyVDsR2=c_Ldy`B%MH5eHK4JFiY0Ceag8o91&JM0EHSsda;Z)? z+6IXoR4g&~0_D;YUDgT`JE&M&+IMbmcT? z3I`QS%x!A6xVR8<9%<~LVu`sIm@U>yp>QK&2Ng>^Yr4(Z;v7u?gQjp$vBca9%ogVx zp>C5jc2JSTEgnH;i^Y1V69Tb|iX~nXQz*)GSr#*8Kpnhl(XO z)&p^=7H%L*iw-K5*t97SFVw?LdTG%?#S)tc1@Syx7Y~}kLB$fA-VMZcx}X~*c2Kdz zrWXM5(tKzQGP{O_F2xR`Vu{UY29Xxswi49XLB$fAo)*N7W@siv8at?1Vl$5{HOs|T zXmLZt4l0(|%zQySTMjM9h}c2J5zno$E;S6q;oi+d#S)vDZ>cuBM4Ki7=gqA-s5s*J zS#DFc;v(IZ7a;afvBVsqwPKBy_d#L@6-&%*s#dHw!p@tYbx^Uy9HF&hb0HjV^Ro^r zme`DDrCPB__cjGh;hla%aw4qIX~;5Vu^VKsTC`0;ZA6tcQsHipkj%+r>zy| z>)~#5p7$$23{(VhV{WlA+nQTktS^?Ety*9(9Yw_wH-)&d78w2wv4e^vE<%npUYnl} zgc}jNs955<5LfDf24aXER4j2#h|6>n+N3x(#11N!cu9zhbQCd2?4V+a7n!)VRttoi z(bz%75-$jGvlVC{hS)*H63+{9qa0|`hS)*H63+>7jc!W~+Soyj6YJ%xO0zgyZ&vDy zYjdsooY^2ORYIBLG_<>Kc6|Ag0R}Ye{_G1f#1mi4hO?KBR_0RWAFV*}SVbSt5hNe8kLIpDbfa))6+70i308g0EN z5}LnINUnXhD&^VP`9^W6(p*|9&7)e*W-r>tBRNrzE1o$Vv(NjY>2C8{pzNvZTOf+U?yB_QMosn|`@*NqSNT+GJ1ClRD5*_#{24108Zlx&)BpZWNW^k*?)>0mZ`9 z80b<}f={YX2iX(;r18)tssxX8;iseP37!ix{GR?uS3IY){u0#&@4AE174Ozpd}HvO z&i1Et#k=*Tt8`G#;N6Btl{d}BsUOP;U*b19qAnD4kj|QbD5OZ*9k3=4J5iCI%PC#) zo(b^9sFIkD9Sl;{Z)D(9I5Bu37um+M;Eg%>$GEtAv>rZRGg zNxcxIXHuw~XAcx^Raymii+?{m^Q3!;N##j@H{SBVeg)#{hIt-KGQ8l9q>u=;-*VDr?v>eYg z_+sRe=#^F|15@^X2k zG9A-PAfQl)Ya+Us0Fc4EuBUXtn}aQhF3{2F!WA%ruJ6gAR?syLO~8#{62H>_urny% z3VPPT7bECY&GkNQMOr~7XZO?dLyTY&Zu3kmB_iJnIvC~ON#g2S1PF1T?(zE!Pc3M%9dDaVJ9I{ugWqX+gf2N#sXxBAc{97CNWN1;)x)@TB0;(5tN9N9?_`E#Nq}gD5T34 zLFi>lG!eTr-C9b4Xp$RFzSOL#IP|aw= zETk=+7fl46;1REJHAqb(n6v>pNty`aiO(FRJ8{#Cm=#Xhb z46r43?BjZsV#8uw`^cop6zY1DV!{fz_Msa-NE_*pd!1kK5X zq#mHLlAeK}uql!gSrSG|EGQ8~hsec(<|wPBrg*Z{iHXd4)&%6l5VgC6K5>jW;hIQ5 zAxrBSNrH$v44_$K_9Qc6by2kvI#$n;vC_3Y$y{Q<~0*dE5be!5s5+ZCYQzl6?LLT8nB3> znq&tV)mW4@P*Epb$SCR=|K?FTeJ#3`=p=YzXxB_EuEdGUOLX|#iWu7%r8t$9Vjh)E zBB4YF!yQ=(MW=HyM}vV-*(4^+T}a3=CCD^PQHlRcwCnDa;AkZ`Nvlla`4S!Xw#=UA zDL~a!5_0Sd?GjiUZUn+iI4k4VR|45>H2yxBx8df7jX4r;?98cLuIGHZDcP3mTLCyD z%XpS$gzD^sgiM3Ap1>Jd#T--MM;XhqB}7+e^RwhlsEgz^BgR;9fe zagkil#XFJZZ7~)pnux;*654)9oJAqP98Q!_y%KLx+aL}gtsb7kscA9?%W+-2NTW7F z98S=98$afm3(Vm}4Q+QhdO(;sP>AZ`O`Xki8JL6RSPw7qD9VY$2_kP6Z9;@OoG6l| zkNAZi984TeFwu=4j!hxT92~i<2S=20K$tk3V4@|p!y$oadO9Q<4v8G)fG}|YY3;!U zN@JqV)aW4-DdvDT9h*XcIGphGrrRcfn1kh*gX2y0;5emFQ$1vZMD(BlVh)yL4vshB zpf(0QoT~&Sne{3MM45x-n1ju(92}<Ydi}!mnA&u` z{aD<&%N!`%a(FhS7~;CH{;UT>R1XM~9spPl&!%>ClB?>>!G6~2Y9z`$lOfEa#ekoR zK^3JKT#`27&S3VJf`KA%5|d?rJs>^05tWWcML9y9D;#B7iNJoUD>P@5uo;*GhD=%> zwL>aC3Dq(^3(Da@)tH0Lz#Lwf(Hd)_3(DtO$-?hnK3d4teDt?8ZvPtp<4Df+>11yU=Fq;b9iA!4VgHS zP%X>3L-7k;2VoAjBXh8Q6@r>Egw4bdHlI|NMqw%j09#$xzHBE214UraDp=aQ7RY8W z&ot64lm58EfWWjws;0B2Wrn8t{!Y2)dRxB0i@+%yDJB3 z&m5f0da(VJgG1H15L5P79CYoBIoKV{!Kx|;hbkde4}S$hF~l5>JLs8zPMC4164G*T zWu-29nZ!roOIt+25S@w#w7>;Hlv&Fdf z^}>v1F{G0dlQe=Q-HA;5j4Cn~X*nFB1kiFsZ`BnRWL?=(%;AL@O@OF)AT0-jl>?eH z2Zsf7Fhuo$FmV8BIefFig3Q6m%)xxh;R>_kRRN7rxzB)wnMj2>Mx6^uWw}3w!OW*% z4o2tVQJMNs$Kd>pMcHpEDlv#Rt*CdOOpyYNE6Q@r!SN#;)KkD%gtQ!N38^n_Ix`2$ zF$af)a&Uk-SDeb!*CbV-pkfY|V-BvDasXl#U~N?asKdgEA#{^Yg#n>TxEx7IC3@%BqDbsylqjfy$AtK-%KDKrJ2s z=3up%!wWFF#6TQCS`Oc405Au)4CY{;s2(to6=v6}0?1)u4g?lveii1(qsPBm4%a)( zCt&I&NL!~sxsss;x}xki6_v;WK+BOU6(UOE%euNwV?O182~a#CEeBh|R7@r*3g$?1 zE{c_@l1V5#JIy6;#~t@8ayd>A(gSWCQRJ|$Zt?6OEgm_fs}q}2pw<^T%)$QPDzKlF z13AP2b+o?T{XHg!Ik;xb;RP5yYn3>lj^$vbRS$e)4)zywFhuo04sk#o%i)_6In3es zU*=iLfgIw1oaOLsiX6isO_=rIVwl5p6~y6$pX_96U68{ZPJ^S3HOF-*lp*XcE`~MH zVmMUk>Ab3{b6uz8-DTj6CuwV{1%u2M# zpyH8eIXtsc4s&o=Fozpv=Gp^sAW=9f($9)nDTg_@X3W8S3c)vqIMM8F|CeYjL&X4T zi*f74f@&KWg1{)yf_<~Ps`ydD(dt~ItN7PVD2H`rIj#;zi53qVQt<%T;(fCshdEe| zIT#`w)EyBA0LtNCWuYAAU^&C#PhaU-#|9#+O@?rAYcU+HgtWytX7#rBOSA?%ig7H7 zRy=ybX&yQnb2&_-<=`8MCed2)ZbmXWtSjrs92_Oefp5f-L~F&nAY*cv0}wP?=3ot# z1K)@P>S%qXS#cL_*Kk-TFI>nF1cqu>C*Q36 zjYa(^0TGF!I4jCwsk&;k(mX>=BC~NdiQ{{331u!AvMsp&Mgeb&-*jiBfD`J@lDs6h z_((})X#zVjEdi$5vR$|wFMep9N}`Ug-bEXe!@6?)nZt`8X9K=MJBPMgFHvJ-VOIf$ zsO}tmgj7q5%ef@Bkb)r!ZJo=V6}cEA6_uvUqO7orf`~+&AQy|PC~{a=js)gly_Li9 zhIf-yi7td1Vc8g9VK1ckqK!dnMdgx+0n3C|OM)nA>%_V2a;diL0T$(!Eus`ABnng6 zavbZ+)gA?NmS3;9IQXr#fvlAO&|_b*6QKel-QYr^*0=%s_Fqo zE6m!8A&8cRS#cKj0+4z^QUHZo4lYSK92-jYq+Du|B#I)fC|6EJk;BDvG8fN&RSr~- zIA9><@K!@6$8flFK-qOs4loi2)V3U4i0XkH=5S)$+m0_$<0cN+$#VFnL=JN}u`L(u zR1XLchvN=!wPbRbgVkeuu(g$gv`BkFlMYXgqQ+0N zjXiO$HNRMEHD?>8g+{TtxE44BJc^1XZV2&0C2$DX5Id+i;)SNsxW2Zy5PHlSh&@y+ zaf>tt@lxn9YlhfCMH06bm>B+ppC>twh+R}H@uCpdYJsRQ#11N!cu9yGp~nRpVh0sV zTod9}=y8FD*g?e-mxb8$LqQums955P5SN>Q^Uy|P2Ng>^C&Y7$ffL+@*g?e-&kOMa zjWR(~IH)+{3JzLR18FQ2LyuX5#vUq`m?N}-2Wz5>4rpANb5N1Q^W5?pi%aHF#1o!Q zNgBJTSYozb1I;$vyH(~LR4g(3yRkS=i-V9U<{eZlF-K@)u|oTKL1G6LOU!Mmu~=$` z!>uy!pkj$j9BzxnVz_}+@MJy{l!S^U#>1&i9IwrXn{;K~LB$f!3URZJp+9J22NgxU zRBstwns_WpBk-8D*1V63B{tRr@zO%zF>8j{LB$fAmWL-H7efzlF~klkme}+HATEa< z;9`g!R4lP+Q!qt~HpV794>opCvBahqfX1_-hvXQI9aJoFox%;oi=hV*8Da+&OKfIk zAg+ZTL}Z8^R4lO>K|nl5%aEXr9aJo_nK6KPftKk(Vh0sRyvVc7MsuxBYm)%6hl(ZU znQwD#i7vhci5*lVG0!6#W||r%c2Tj!CPG16qixHO#w`aGOKkiN;-0m!ky4!%R$8wn|=$#c%su3=Q*fY zVl!g^@xp9yl!hrBR2=af&v6>HwWay6^E^~6F-K@^tzHa=+Z@l`P&`nP#B*jeYt&lB zT5uY>H0PpXi8(@Rtuo!=6=->Qa1sp%C?2R-Vs2A4jB4RdXpZOoAOC z#11N!xGBV?dZ2eR#11N!xFN)NklAGC8Da+&OI#NluhE^2lcK^9JE%zF#gb@TF9*6! zB6d-+#6=;-lT^bRFFL4LVmz#r;uyPufk~m!*g-`SFRTgiJnj7lZS0_?5m#r6Wo*DU zE9hGqt$8!>mll%U+Ohm`GV|jqX4l#7eV5P@?&e=z;q7QN4A~Yh(cMJ)nYOp-2Y2Xt zA^k*)>|Hwm3^^8zj>drTZhm6M69Uj=BJL6<7)Yecbj>o!0ENv+^eNM2r392*+bGio z8KS3a6{c)_Pk>0IeRbB0ejO^QE`D#oMM675I?S{ipD+PT`CJMyCENF9=2s)}9Tp|$ zTt=BL(vmd4(FG!Tj-6M8s~lbJq{8WfhVKKnU|g$o0%EPSRG+Ps@btrGdA?FZrEm8F zW;B01U=FpKt^T0Zt+vqDW5c^LTc4jt>!rS^G#AVrCsH3e7gp&aCv1>7fXqOibIt|P zMP-vTSLn8mZPwevff0h;hOIt*q)RXc0Y{j3!^+oUi3o@!wD{-(c}GHu`aU3FTl_V# z!B-2}F?`{UufdTfB1Cu2Qc;w2wCWrUq1!=C21-OmQZC>SvjTN8muf{X8pb%;JgG+*uSS=7gOEgGjMXjA85b z^2@K_e~oq@F?mJfiVYNbd1G_4P_1sYyTjsqb%>AnR4$oMl<0h%ub9+kt-lRbk+(VQ zo0R%iyE8=6(OR|B9uS9M8l7I_9#?4C-e|es>z#WV-Qh^epnabQYPOELi1l{U{o3yK ze8o0;O;3Ew$8R@={aSb6QXuL0Cdr^qi~MG6q1DH`DZ*Bn48xU&r6Hj8lLb}?``8#_4b3S!zKIuy2|p=LhD$gwK;6}x>b}{ z=(iYaQz5fDEG~?tgQz%Hty&yO7t7w))8Se)Ta6Bx;9^O7PQe(Y-CgSydYi3& zZP@EybrmUiGc>e$t$UYmy?M1tW^1kYYaQ+mYu(|Vdau{HbY`vA8MO8mj@CL`E&f|2 zSxY%H7&foGa=P@DR~m5^WCe-~VR4;D-D8m51PfuB`HB{z>(H+n}~dyEaF z&0NYs8J66O%CYDk(}t?owufvmTYzww9MuP6RQ+O6rBUz-wH*2n1J8#`TwYX}6%Z^< zC=khIue9am!?V@H)z$gx>Rh!@U0EqqZ^8d@#Z|q3Q{t;G+hEvW*l%~&R~i%$)E87SFk-5<(pX-t;m`7N{n+v5YV9CwRjkyS z9gJoDHioVHT76`$UT-aUV|Dcg&w|x@t#J=ElDtukxUANl(2j_Z656zFO;&-}=tk(e z(iG!q0dwsNCb8G9VD{)rYQ^)#5Z7D%nK6)p7Kn&+(V!D7HR_;I<+rz z@)5Q3oVk2!=8rM8$61K3`?$UP41j-6!5oY7o)nc_kLqq^bS<8nS1T9bl2*4;y zVG~PK%N=TLVCLGZausR5HW6MdxfqzKO%pCQHgfFe$-+ekLMAS>?oAbOAXFTAt<|GF z%n9ZzBL~wGOs1s9)X-4c=1`houkGauN7447o3{hSR5*a9AZ!3_Zv-@%5Hl0C zDUO6kh^{yxBqkC{I84m*!hlwGv;?&4VfvtpziOvd8|Vs=zvw!Vzm;j-Op$MZMvUYW zx#XJ>Ouib)^j0%0oL*y{JIgX0_ZUZ+5xTiwQS{l0t%NROkim>j)J=YCZDM^pOsR4D#mzaF=#BwEkz)<)In>A&5~NDRp2*c{`R2O z!PXSo{epZ%CyTVrBea)p((sYeu#3{~aGLo@X~sgFWfT=p_Ckub~3bPQIE7@qIO)irF+N*s0cR_OUP|nVYBSvmijsY_Jcs z)}kiX!hqk!F1B*TbI{z#h$d8GEi>FtQ)E$r%NvJoK3d@2I+`Zn$FbPpsT9T81dBPz zMuGYqB1*Nwq9SP{gDOB91jfCW&d~U52J30sFIlOT#!a-yIeO@Db>HSKSgIDPFTlpp zHU0GgssiTTafzFhC|D3Qt(l0eFdBFEJ5|rDtu(mwi`gpCOx+i`e_Rfc)5e~<8`|zH zC0z0ChoQ0Dmr6 zTS?3b531dG5kcS8gX~dbFLYT+e&;f>G6|AR-+rDj%@IF_deqx7Ftz8r$__mo|m7yb#5Lr6ZNd4Vc?^3i0^(V=9@9 zK~t;h4K*T&A&Z7xG#KNoY3{dUuSa$pD!DARXo& zY}YV=def>9(`+KKOdA~7V3)m7hrRJ+uP0r<66qJBpoRzmZ$2t z&~KW6;V>7RFfT~15oNU`O|QJmNUP@7g?!;jWPH(qFI~}$#ksDRRktN8Pa8^bGplN@ zV#!?}St-%6yCmRsr(R&|_WHCrt{10QaGL{eCBUWeMcfl5w~XX7PUfN!*klexKnx)CSd4fr$H%@>C6f!%~VTVdk zOzf;0VAvVK#t!9gG3_L$5ouSa-NnT|zOBgIK8$Vjoz)1^mFmtYs8Y;u|IVA4*|g6U zX1tG_x1m59(UC8}A)8+^e@LL%Ku8qot##Tb&J$>JMmG1P)QY$CW}U3VR2h=Fix=U3 z>nI)Su(ORqe+L$sXJP1MmL9kQF+vVI=a>~Iw75DcH#TLpRfR-z8%w1d);M{p!O~Kd>2vMW<8dnDv!yZ4u?0peL9ymtsHRJ7ICy9TqiLL4bE z(%9)};AWNl6Osv-3GGpGIQjPMP=DRFgg@F^Y}*YaLndQbdh|aDp`W= zU@LRZ?qlYP1rd*o_Iw7;R>ta5wXoU44d=NhN{cFv$x^>%Zr{tNI418#8oR_hXey&D zc^iwvlfSw6Bs(@s-X>$!hzvXg#fk7hd}+A!lyfeXqiS@WD_85yQPz*pV}}~6xQh0p zsu+y;qqO5e9LHWk4b64RYk!2*#06UPkUui3PQI`}7xbiaq+2cWse{`iJr;Dc6rDCL zCoA2ql62hMRpN5w4igipHZ@%7-|w%PK%9F zsp&d6-ns+Jm5k+tWQT_Hxpri?ajLv#^O@9Y9B_2TJ%7+GI6=ouJG9>f!W|hgz?avO z6X?{OCVqBi&G{q{Plz$c`F3Q>$#i*5InD-44z_TZD(~Pw&(d`7Q@+`QeV&3{ljZ1$ zEs3+ZJ^?g4uM~X0Q@fa()J_NqT;$x=Yz}{1B4^LCUb(@+4u=YB7o4)iQ>AeK=&&?9 z@nKxm>$jUL_WnypnCARD(}nI&_U_j9^nt4Gv&^b1-9(K%mluLn_ip~%QH`#vpaw_r zEG)7p+6A4%TA_2MiROpR<4~~sH*&u#mn%nlus2B0meNNS@fj3@5J2=|P8S$IuWKJ5H1UWpm0_RZfc}OayTHK`&?wtUT>s$e=ox4= z+NCr4i3*>7uylKQd)mR*DDjD>U1KCuPqgME89B8YMG`!q8Y7M4GUEqQqXjWpHjl_P z$3^S`RO>?b4qbgv!-PRc@sef3O-1%jPqVP` z$09C)s;ci1vNM{>e47stfolsSXnpMEdvQ|&Sb@Wexn`TTw2s78-P z=F=y13^ErRsg#_4%tbMJ;xVV^lar3l^A5B6JvrgH0}}UKqkXPoR!zo^6K=bc9S+Yu)gGq90@bYd}AuQYm0F%OBkn&%x(%*)~& zNz}=DR{we@5p&rD3&ETd0zLpp8x?sBz|txAj|JmGr6W%5rE|zCIIHcg4m(tWp7pwe zi7M0p!_Ejcb|{~EPwF%$Ox&T^rVAW9jjf$gB!>@k1$gRl!=O!S<_8(_HVsH49`ZFx z$mW;K9|R~i5Cr+EF|zNJwPCyB*%v0dp_Oailn7@pI63u)cnx0)35J~~pS^fJ@|Umh zok`EzlY%)*mqUX2q@BZo`3UT>zY=`10I6h-E-U>+U$E32h{m1e3zqDP zXO9v+h?mbxj&$~-qt5OHt8LEiETq3nih&L%x2` zVb~c#-u*aL;Dq|eIjWa4V!Tswc`d{H1Nmpfo)Y8w6k|7*obLo?@nZKeD+R8-ITL; zC$e0$gxnoso_25|Clr$o+vObP%smS33A?=W0`FWMljPV#&>z&x+qXMM>hi70?P0on z;(CrQpLE8PbHV1Iht{^)jCuS(r!u0BwL~aEeR6Ica)(leGjqW@*fVqaE$L9?w1Y6@ zHpJ)&GP7G^_9=2WWt5C&P$!Zrr;SF{%5N&bK4eO{U9hxpB7KhKoJ!7VOdONi}2doHeo}&U!XS zUph*YyCbzkaQe=xbfQQwER5bmr?-_)KM^E1rRTd{oo-kU6&rK@XQzda9{bTMXFabZ zdiYrx+L=Nk46(3Paz9F>*P9B$Yu&P&z(A2+qtpr-De(;4}-UTBNE(adcCX&_X9 zey=WtE#e1GQD*WBr~A@=zt=>a~8v~R%k)afPIV^~L%pLsL~ zA1T_1cI8@euEA9=1Y@}o2dK*V>}y*f%9wDvl^h2e-V=6Ffj%HCM79`Er!t& z=mgsYc*+qrlJJaYepOKnIJFpSKGc5tDK;wOL>^iD|p#}a;`3*;} zO@s+@9cJUgcYK^JM3eDAo6zJw(#G<+4z)R=laIAo=Z>H8E|-F%0A)=c1x$`MvcNrB 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

tvm4F+V@Zd3Vn3 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 z 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 { - it("Should create a iszero circuit", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "iszero.circom")); +describe("Sum test", function () { - const circuit = new snarkjs.Circuit(cirDef); + this.timeout(100000); + + it("Should create a iszero circuit", async() => { + const circuit = await tester(path.join(__dirname, "circuits", "iszero.circom")); let witness; - witness = circuit.calculateWitness({ "in": 111}); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": 111}); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in": 0 }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": 0 }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a isequal circuit", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "isequal.circom")); - - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "isequal.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "111", "in[1]": "222" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [111,222] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "444", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [444,444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a comparison lessthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "lessthan.circom")); - - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "lessthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [333,444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in":[1,1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [661, 660] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [1, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [555, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); }); it("Should create a comparison lesseqthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "lesseqthan.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "lesseqthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [333,444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in":[1,1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [661, 660] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [1, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [555, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); it("Should create a comparison greaterthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "greaterthan.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "greaterthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [333,444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in":[1,1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [661, 660] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [1, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [555, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); }); it("Should create a comparison greatereqthan", async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "greatereqthan.circom")); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstraints BalancesUpdater: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "greatereqthan.circom")); let witness; - witness = circuit.calculateWitness({ "in[0]": "333", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [333,444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in":[1,1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "661", "in[1]": "660" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [661, 660] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "1" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 1] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "444" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(0))); + witness = await circuit.calculateWitness({ "in": [0, 444] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(0))); - witness = circuit.calculateWitness({ "in[0]": "1", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [1, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "555", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [555, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); - witness = circuit.calculateWitness({ "in[0]": "0", "in[1]": "0" }); - assert(witness[0].equals(snarkjs.bigInt(1))); - assert(witness[1].equals(snarkjs.bigInt(1))); + witness = await circuit.calculateWitness({ "in": [0, 0] }); + assert(witness[0].equals(bigInt(1))); + assert(witness[1].equals(bigInt(1))); }); }); diff --git a/test/eddsa.js b/test/eddsa.js index 8292a89..81f79f0 100644 --- a/test/eddsa.js +++ b/test/eddsa.js @@ -1,16 +1,14 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -// const crypto = require("crypto"); + +const tester = require("circom").tester; +const bigInt = require("big-integer"); const eddsa = require("../src/eddsa.js"); const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -36,11 +34,7 @@ describe("EdDSA test", function () { this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsa_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains EdDSA: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "eddsa_test.circom")); }); it("Sign a single 10 bytes from 0 to 9", async () => { @@ -66,9 +60,10 @@ describe("EdDSA test", function () { const sBits = buffer2bits(pSignature.slice(32, 64)); const aBits = buffer2bits(pPubKey); - const w = circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); + const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/eddsa_js.js b/test/eddsa_js.js index 2771306..1199626 100644 --- a/test/eddsa_js.js +++ b/test/eddsa_js.js @@ -1,12 +1,12 @@ const chai = require("chai"); -const snarkjs = require("snarkjs"); const eddsa = require("../src/eddsa.js"); const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const utils = require("../src/utils.js"); describe("EdDSA js test", function () { @@ -14,7 +14,7 @@ describe("EdDSA js test", function () { it("Sign (using Mimc7) a single 10 bytes from 0 to 9", () => { const msgBuf = Buffer.from("00010203040506070809", "hex"); - const msg = bigInt.leBuff2int(msgBuf); + const msg = utils.leBuff2int(msgBuf); // const prvKey = crypto.randomBytes(32); @@ -49,7 +49,7 @@ describe("EdDSA js test", function () { it("Sign (using Poseidon) a single 10 bytes from 0 to 9", () => { const msgBuf = Buffer.from("00010203040506070809", "hex"); - const msg = bigInt.leBuff2int(msgBuf); + const msg = utils.leBuff2int(msgBuf); const prvKey = Buffer.from("0001020304050607080900010203040506070809000102030405060708090001", "hex"); diff --git a/test/pedersen.js b/test/pedersen.js index d828520..8308987 100644 --- a/test/pedersen.js +++ b/test/pedersen.js @@ -1,11 +1,8 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); @@ -22,79 +19,59 @@ describe("Double Pedersen test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "pedersen_test.circom")); - console.log("NConstrains: " + circuit.nConstraints); }); it("Should pedersen at zero", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: ["0", "0"]}); + w = await circuit.calculateWitness({ in: ["0", "0"]}); - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: [0,1]}); - assert(xout.equals("0")); - assert(yout.equals("1")); }); it("Should pedersen at one first generator", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: ["1", "0"]}); + w = await circuit.calculateWitness({ in: ["1", "0"]}); - xout = bigInt(w[circuit.getSignalIdx("main.out[0]")]); - yout = bigInt(w[circuit.getSignalIdx("main.out[1]")]); + await circuit.assertOut(w, {out: PBASE[0]}); - assert(xout.equals(PBASE[0][0])); - assert(yout.equals(PBASE[0][1])); }); it("Should pedersen at one second generator", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: ["0", "1"]}); + w = await circuit.calculateWitness({ in: ["0", "1"]}); - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; - - assert(xout.equals(PBASE[1][0])); - assert(yout.equals(PBASE[1][1])); + await circuit.assertOut(w, {out: PBASE[1]}); }); it("Should pedersen at mixed generators", async () => { - let w, xout, yout; - w = circuit.calculateWitness({ in: ["3", "7"]}); - - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; - + let w; + w = await circuit.calculateWitness({ in: ["3", "7"]}); const r = babyJub.addPoint( babyJub.mulPointEscalar(PBASE[0], 3), babyJub.mulPointEscalar(PBASE[1], 7) ); - assert(xout.equals(r[0])); - assert(yout.equals(r[1])); + await circuit.assertOut(w, {out: r}); }); it("Should pedersen all ones", async () => { - let w, xout, yout; + let w; - const allOnes = bigInt("1").shl(250).sub(bigInt("1")); - w = circuit.calculateWitness({ in: [allOnes, allOnes]}); + const allOnes = bigInt("1").shiftLeft(250).minus(bigInt("1")); + w = await circuit.calculateWitness({ in: [allOnes, allOnes]}); - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; const r2 = babyJub.addPoint( babyJub.mulPointEscalar(PBASE[0], allOnes), babyJub.mulPointEscalar(PBASE[1], allOnes) ); - assert(xout.equals(r2[0])); - assert(yout.equals(r2[1])); + await circuit.assertOut(w, {out: r2}); }); }); From a8107abbe9c1fc160e2e302ffddf3f1b6783e278 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Fri, 13 Dec 2019 19:05:20 +0100 Subject: [PATCH 06/15] pedersen2 adapted --- circuits/pedersen.circom | 6 +- src/pedersenHash.js | 8 +- test/binsub.js | 3 - test/circuits/pedersen2_test.cpp | 14291 +++++++++++++++++++++++++++++ test/circuits/pedersen2_test.sym | 8127 ++++++++++++++++ test/pedersen2.js | 45 +- 6 files changed, 22435 insertions(+), 45 deletions(-) create mode 100644 test/circuits/pedersen2_test.cpp create mode 100644 test/circuits/pedersen2_test.sym diff --git a/circuits/pedersen.circom b/circuits/pedersen.circom index d5e5726..c890426 100644 --- a/circuits/pedersen.circom +++ b/circuits/pedersen.circom @@ -128,6 +128,9 @@ template Segment(nWindows) { component adders[nWindows-1]; for (i=0; iallocBigInts(1); + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes; + int _offset_3; + int _compIdx_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_1; + int _offset_5; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _compIdx_3; + int _sigIdx_4; + Circom_Sizes _sigSizes_2; + PBigInt _v_5; + int _offset_10; + int _compIdx_4; + int _sigIdx_5; + Circom_Sizes _sigSizes_3; + PBigInt _v_6; + int _offset_12; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _v_7; + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _v_8; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "253", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + PBigInt _v_9; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "256", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_5; + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + PBigInt _v_10; + int _offset_19; + PBigInt _num_6 = ctx->allocBigInts(1); + PBigInt _v_11; + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _v_12; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "256", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + int _offset_23; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_6; + int _offset_24; + int _compIdx_7; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_25; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_8; + int _offset_26; + + + /* signal input in */ + + /* signal output out[2] */ + + /* component pedersen = Pedersen(256) */ + + /* component n2b */ + + /* n2b = Num2Bits(253) */ + + /* var i */ + + /* in ==> n2b.in */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue); + ctx->setSignal(_compIdx, _sigIdx, _sigValue); + + /* for (i=0,i<253,i++) */ + + /* pedersen.in[i] <== n2b.out[i] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _offset_3 = _sigIdx_2 + 0*_sigSizes[1]; + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _sigIdx_3 = ctx->getSignalOffset(_compIdx_2, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_1 = ctx->getSignalSizes(_compIdx_2, 0x19f79b1921bbcfffLL /* out */); + _offset_5 = _sigIdx_3 + 0*_sigSizes_1[1]; + ctx->getSignal(_compIdx_2, _offset_5, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_3, _sigValue_1); + mpz_set_str(_tmp_2[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_2); + while (_cond) { + + /* pedersen.in[i] <== n2b.out[i] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_3, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_3, 0x08b73807b55c4bbeLL /* in */); + _v_5 = i + 0; + _offset_10 = _sigIdx_4 + ctx->field->toInt(_v_5)*_sigSizes_2[1]; + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_4, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_3 = ctx->getSignalSizes(_compIdx_4, 0x19f79b1921bbcfffLL /* out */); + _v_6 = i + 0; + _offset_12 = _sigIdx_5 + ctx->field->toInt(_v_6)*_sigSizes_3[1]; + ctx->getSignal(_compIdx_4, _offset_12, _sigValue_2); + ctx->setSignal(_compIdx_3, _offset_10, _sigValue_2); + _v_7 = i + 0; + ctx->field->add(_tmp_3, _v_7, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_3, 1); + _v_8 = i + 0; + ctx->field->lt(_tmp_4,_v_8,_const); + _cond = ctx->field->isTrue(_tmp_4); + } + + /* for (i=253,i<256,i++) */ + mpz_set_str(_num_4[0], "253", 10); + ctx->field->copyn(i, _num_4, 1); + _v_9 = i + 0; + ctx->field->lt(_tmp_5,_v_9,_const_1); + _cond_1 = ctx->field->isTrue(_tmp_5); + while (_cond_1) { + + /* pedersen.in[i] <== 0 */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); + _v_10 = i + 0; + _offset_19 = _sigIdx_6 + ctx->field->toInt(_v_10)*_sigSizes_4[1]; + mpz_set_str(_num_6[0], "0", 10); + ctx->setSignal(_compIdx_5, _offset_19, _num_6); + _v_11 = i + 0; + ctx->field->add(_tmp_6, _v_11, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_6, 1); + _v_12 = i + 0; + ctx->field->lt(_tmp_7,_v_12,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_7); + } + + /* pedersen.out[0] ==> out[0] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_7 = ctx->getSignalOffset(_compIdx_6, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_6, 0x19f79b1921bbcfffLL /* out */); + _offset_23 = _sigIdx_7 + 0*_sigSizes_5[1]; + ctx->getSignal(_compIdx_6, _offset_23, _sigValue_3); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_24 = _sigIdx_8 + 0*_sigSizes_6[1]; + ctx->setSignal(ctx->cIdx, _offset_24, _sigValue_3); + + /* pedersen.out[1] ==> out[1] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); + _sigIdx_9 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); + _offset_25 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(_compIdx_7, _offset_25, _sigValue_4); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_26 = _sigIdx_10 + 1*_sigSizes_8[1]; + ctx->setSignal(ctx->cIdx, _offset_26, _sigValue_4); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_num_6, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); +} + +/* +Pedersen +in[253]=0 +in[254]=0 +in[255]=0 +n=256 +*/ +void Pedersen_3a5f42b6d718ae32(Circom_CalcWit *ctx) { + // Header + int _compIdx; + Circom_Sizes _compSizes; + int _offset_12; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_13; + PBigInt _v_8 = ctx->allocBigInts(1); + int _compIdx_1; + Circom_Sizes _compSizes_1; + int _offset_17; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_18; + PBigInt _v_11 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes_2; + int _offset_25; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_27; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_30; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + int _compIdx_3; + Circom_Sizes _compSizes_3; + int _offset_36; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + PBigInt _v_22; + int _offset_38; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + PBigInt _v_24; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _offset_41; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _v_25; + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _v_26; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "200", 10); + PBigInt _tmp_17 = ctx->allocBigInts(1); + PBigInt _v_28 = ctx->allocBigInts(1); + PBigInt _v_29; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "200", 10); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _cond_1; + int _compIdx_4; + Circom_Sizes _compSizes_4; + int _offset_51; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + PBigInt _v_32; + int _offset_53; + PBigInt _num_37 = ctx->allocBigInts(1); + PBigInt _v_33; + PBigInt _tmp_20 = ctx->allocBigInts(1); + PBigInt _v_34; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "200", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + PBigInt nBits = ctx->allocBigInts(1); + PBigInt nWindows = ctx->allocBigInts(1); + int _cond_2; + PBigInt _v_39; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "1", 10); + PBigInt _tmp_26 = ctx->allocBigInts(1); + PBigInt _ter; + PBigInt _tmp_29 = ctx->allocBigInts(1); + PBigInt _num_42 = ctx->allocBigInts(1); + PBigInt _v_43; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_30 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "4", 10); + PBigInt _tmp_31 = ctx->allocBigInts(1); + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _compIdx_5; + Circom_Sizes _compSizes_5; + PBigInt _v_44; + int _offset_70; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_71; + PBigInt _v_45; + int _offset_73; + PBigInt BASE = ctx->allocBigInts(20); + PBigInt _v_46; + int _compIdx_6; + Circom_Sizes _compSizes_6; + PBigInt _v_47; + int _offset_75; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_76; + PBigInt _v_48; + int _offset_78; + PBigInt _v_49; + PBigInt _num_50 = ctx->allocBigInts(1); + PBigInt _v_50; + PBigInt _v_51; + PBigInt _tmp_33 = ctx->allocBigInts(1); + int _cond_3; + int _compIdx_7; + Circom_Sizes _compSizes_7; + PBigInt _v_52; + int _offset_83; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + PBigInt _v_53; + int _offset_85; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + PBigInt _v_54; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "200", 10); + PBigInt _tmp_34 = ctx->allocBigInts(1); + PBigInt _v_55; + PBigInt _tmp_35 = ctx->allocBigInts(1); + int _offset_88; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _v_56; + PBigInt _tmp_36 = ctx->allocBigInts(1); + PBigInt _v_57; + PBigInt _v_58; + PBigInt _tmp_37 = ctx->allocBigInts(1); + PBigInt _v_59; + PBigInt _v_60; + PBigInt _v_61; + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "4", 10); + PBigInt _tmp_38 = ctx->allocBigInts(1); + PBigInt _tmp_39 = ctx->allocBigInts(1); + int _cond_4; + int _compIdx_8; + Circom_Sizes _compSizes_8; + PBigInt _v_62; + int _offset_98; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + PBigInt _v_63; + int _offset_100; + PBigInt _num_53 = ctx->allocBigInts(1); + PBigInt _v_64; + PBigInt _tmp_40 = ctx->allocBigInts(1); + PBigInt _v_65; + PBigInt _v_66; + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "4", 10); + PBigInt _tmp_41 = ctx->allocBigInts(1); + PBigInt _tmp_42 = ctx->allocBigInts(1); + PBigInt _v_67; + PBigInt _tmp_43 = ctx->allocBigInts(1); + PBigInt _v_68; + PBigInt _const_11; + _const_11 = ctx->allocBigInts(1); + mpz_set_str(_const_11[0], "2", 10); + PBigInt _tmp_44 = ctx->allocBigInts(1); + PBigInt _num_55 = ctx->allocBigInts(1); + PBigInt _v_70; + PBigInt _const_12; + _const_12 = ctx->allocBigInts(1); + mpz_set_str(_const_12[0], "1", 10); + PBigInt _tmp_46 = ctx->allocBigInts(1); + int _cond_5; + PBigInt _v_72; + PBigInt _const_13; + _const_13 = ctx->allocBigInts(1); + mpz_set_str(_const_13[0], "0", 10); + PBigInt _tmp_47 = ctx->allocBigInts(1); + int _compIdx_9; + Circom_Sizes _compSizes_9; + PBigInt _v_73; + int _offset_114; + int _sigIdx_12; + int _compIdx_10; + Circom_Sizes _compSizes_10; + int _offset_115; + int _sigIdx_13; + Circom_Sizes _sigSizes_12; + int _offset_116; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_11; + Circom_Sizes _compSizes_11; + PBigInt _v_74; + int _offset_118; + int _sigIdx_14; + int _compIdx_12; + Circom_Sizes _compSizes_12; + int _offset_119; + int _sigIdx_15; + Circom_Sizes _sigSizes_13; + int _offset_120; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_13; + Circom_Sizes _compSizes_13; + PBigInt _v_75; + int _offset_122; + int _sigIdx_16; + int _compIdx_14; + Circom_Sizes _compSizes_14; + int _offset_123; + int _sigIdx_17; + Circom_Sizes _sigSizes_14; + int _offset_124; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_15; + Circom_Sizes _compSizes_15; + PBigInt _v_76; + int _offset_126; + int _sigIdx_18; + int _compIdx_16; + Circom_Sizes _compSizes_16; + int _offset_127; + int _sigIdx_19; + Circom_Sizes _sigSizes_15; + int _offset_128; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _compIdx_17; + Circom_Sizes _compSizes_17; + PBigInt _v_77; + int _offset_130; + int _sigIdx_20; + int _compIdx_18; + Circom_Sizes _compSizes_18; + PBigInt _v_78; + PBigInt _const_14; + _const_14 = ctx->allocBigInts(1); + mpz_set_str(_const_14[0], "1", 10); + PBigInt _tmp_48 = ctx->allocBigInts(1); + int _offset_132; + int _sigIdx_21; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _compIdx_19; + Circom_Sizes _compSizes_19; + PBigInt _v_79; + int _offset_134; + int _sigIdx_22; + int _compIdx_20; + Circom_Sizes _compSizes_20; + PBigInt _v_80; + PBigInt _const_15; + _const_15 = ctx->allocBigInts(1); + mpz_set_str(_const_15[0], "1", 10); + PBigInt _tmp_49 = ctx->allocBigInts(1); + int _offset_136; + int _sigIdx_23; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _compIdx_21; + Circom_Sizes _compSizes_21; + PBigInt _v_81; + int _offset_138; + int _sigIdx_24; + int _compIdx_22; + Circom_Sizes _compSizes_22; + PBigInt _v_82; + PBigInt _const_16; + _const_16 = ctx->allocBigInts(1); + mpz_set_str(_const_16[0], "1", 10); + PBigInt _tmp_50 = ctx->allocBigInts(1); + int _offset_140; + int _sigIdx_25; + Circom_Sizes _sigSizes_16; + int _offset_141; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + int _compIdx_23; + Circom_Sizes _compSizes_23; + PBigInt _v_83; + int _offset_143; + int _sigIdx_26; + int _compIdx_24; + Circom_Sizes _compSizes_24; + PBigInt _v_84; + PBigInt _const_17; + _const_17 = ctx->allocBigInts(1); + mpz_set_str(_const_17[0], "1", 10); + PBigInt _tmp_51 = ctx->allocBigInts(1); + int _offset_145; + int _sigIdx_27; + Circom_Sizes _sigSizes_17; + int _offset_146; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + PBigInt _v_85; + PBigInt _tmp_52 = ctx->allocBigInts(1); + PBigInt _v_86; + PBigInt _const_18; + _const_18 = ctx->allocBigInts(1); + mpz_set_str(_const_18[0], "1", 10); + PBigInt _tmp_54 = ctx->allocBigInts(1); + int _compIdx_25; + Circom_Sizes _compSizes_25; + int _offset_153; + int _sigIdx_28; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + int _sigIdx_29; + Circom_Sizes _sigSizes_18; + int _offset_154; + int _compIdx_26; + Circom_Sizes _compSizes_26; + int _offset_156; + int _sigIdx_30; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + int _sigIdx_31; + Circom_Sizes _sigSizes_19; + int _offset_157; + + + /* signal input in[n] */ + + /* signal output out[2] */ + + /* var BASE = [ + [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], + [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], + [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], + [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], + [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], + [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], + [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], + [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], + [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], + [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] + ] */ + + /* var nSegments = ((n-1)\200)+1 */ + + /* component segments[nSegments] */ + + /* var i */ + + /* var j */ + + /* var nBits */ + + /* var nWindows */ + + /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_12 = _compIdx + 0*_compSizes[1]; + _sigIdx = ctx->getSignalOffset(_offset_12, 0x9a7ce19baa54c278LL /* base */); + _sigSizes = ctx->getSignalSizes(_offset_12, 0x9a7ce19baa54c278LL /* base */); + _offset_13 = _sigIdx + 0*_sigSizes[1]; + mpz_set_str(_v_8[0], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); + ctx->setSignal(_offset_12, _offset_13, _v_8); + + /* segments[i].base[1] <== BASE[i][1] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_17 = _compIdx_1 + 0*_compSizes_1[1]; + _sigIdx_1 = ctx->getSignalOffset(_offset_17, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_1 = ctx->getSignalSizes(_offset_17, 0x9a7ce19baa54c278LL /* base */); + _offset_18 = _sigIdx_1 + 1*_sigSizes_1[1]; + mpz_set_str(_v_11[0], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); + ctx->setSignal(_offset_17, _offset_18, _v_11); + + /* for (j = 0,jgetSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_25 = _compIdx_2 + 0*_compSizes_2[1]; + _sigIdx_2 = ctx->getSignalOffset(_offset_25, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_offset_25, 0x08b73807b55c4bbeLL /* in */); + _offset_27 = _sigIdx_2 + 0*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_30 = _sigIdx_3 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_30, _sigValue); + ctx->setSignal(_offset_25, _offset_27, _sigValue); + mpz_set_str(_tmp_13[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_13); + while (_cond) { + + /* segments[i].in[j] <== in[i*200+j] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_36 = _compIdx_3 + 0*_compSizes_3[1]; + _sigIdx_4 = ctx->getSignalOffset(_offset_36, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(_offset_36, 0x08b73807b55c4bbeLL /* in */); + _v_22 = j + 0; + _offset_38 = _sigIdx_4 + ctx->field->toInt(_v_22)*_sigSizes_4[1]; + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_24 = j + 0; + ctx->field->add(_tmp_15,_const,_v_24); + _offset_41 = _sigIdx_5 + ctx->field->toInt(_tmp_15)*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_1); + ctx->setSignal(_offset_36, _offset_38, _sigValue_1); + _v_25 = j + 0; + ctx->field->add(_tmp_16, _v_25, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_16, 1); + _v_26 = j + 0; + ctx->field->lt(_tmp_17,_v_26,_const_1); + _cond = ctx->field->isTrue(_tmp_17); + } + + /* for (j = nBits,j < nWindows*4,j++) */ + mpz_set_str(_v_28[0], "200", 10); + ctx->field->copyn(j, _v_28, 1); + _v_29 = j + 0; + ctx->field->lt(_tmp_19,_v_29,_const_2); + _cond_1 = ctx->field->isTrue(_tmp_19); + while (_cond_1) { + + /* segments[i].in[j] <== 0 */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_51 = _compIdx_4 + 0*_compSizes_4[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_51, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(_offset_51, 0x08b73807b55c4bbeLL /* in */); + _v_32 = j + 0; + _offset_53 = _sigIdx_6 + ctx->field->toInt(_v_32)*_sigSizes_6[1]; + mpz_set_str(_num_37[0], "0", 10); + ctx->setSignal(_offset_51, _offset_53, _num_37); + _v_33 = j + 0; + ctx->field->add(_tmp_20, _v_33, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_20, 1); + _v_34 = j + 0; + ctx->field->lt(_tmp_22,_v_34,_const_3); + _cond_1 = ctx->field->isTrue(_tmp_22); + } + mpz_set_str(_tmp_24[0], "1", 10); + mpz_set_str(i[0], "1", 10); + mpz_set_str(nBits[0], "200", 10); + mpz_set_str(nWindows[0], "50", 10); + _cond_2 = ctx->field->isTrue(_tmp_24); + while (_cond_2) { + + /* nBits = (i == (nSegments-1)) ? n - (nSegments-1)*200 : 200 */ + _v_39 = i + 0; + ctx->field->eq(_tmp_26,_v_39,_const_4); + if (ctx->field->isTrue(_tmp_26)) { + mpz_set_str(_tmp_29[0], "56", 10); + _ter = _tmp_29; + } else { + mpz_set_str(_num_42[0], "200", 10); + _ter = _num_42; + } + ctx->field->copyn(nBits, _ter, 1); + + /* nWindows = ((nBits - 1)\4)+1 */ + _v_43 = nBits + 0; + ctx->field->sub(_tmp_30,_v_43,_const_5); + ctx->field->idiv(_tmp_31,_tmp_30,_const_6); + ctx->field->add(_tmp_32,_tmp_31,_const_7); + ctx->field->copyn(nWindows, _tmp_32, 1); + + /* segments[i] = Segment(nWindows) */ + + /* segments[i].base[0] <== BASE[i][0] */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_44 = i + 0; + _offset_70 = _compIdx_5 + ctx->field->toInt(_v_44)*_compSizes_5[1]; + _sigIdx_7 = ctx->getSignalOffset(_offset_70, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_7 = ctx->getSignalSizes(_offset_70, 0x9a7ce19baa54c278LL /* base */); + _offset_71 = _sigIdx_7 + 0*_sigSizes_7[1]; + _v_45 = i + 0; + _offset_73 = ctx->field->toInt(_v_45)*2; + mpz_set_str(BASE[0], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); + mpz_set_str(BASE[1], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); + mpz_set_str(BASE[2], "2671756056509184035029146175565761955751135805354291559563293617232983272177", 10); + mpz_set_str(BASE[3], "2663205510731142763556352975002641716101654201788071096152948830924149045094", 10); + mpz_set_str(BASE[4], "5802099305472655231388284418920769829666717045250560929368476121199858275951", 10); + mpz_set_str(BASE[5], "5980429700218124965372158798884772646841287887664001482443826541541529227896", 10); + mpz_set_str(BASE[6], "7107336197374528537877327281242680114152313102022415488494307685842428166594", 10); + mpz_set_str(BASE[7], "2857869773864086953506483169737724679646433914307247183624878062391496185654", 10); + mpz_set_str(BASE[8], "20265828622013100949498132415626198973119240347465898028410217039057588424236", 10); + mpz_set_str(BASE[9], "1160461593266035632937973507065134938065359936056410650153315956301179689506", 10); + mpz_set_str(BASE[10], "1487999857809287756929114517587739322941449154962237464737694709326309567994", 10); + mpz_set_str(BASE[11], "14017256862867289575056460215526364897734808720610101650676790868051368668003", 10); + mpz_set_str(BASE[12], "14618644331049802168996997831720384953259095788558646464435263343433563860015", 10); + mpz_set_str(BASE[13], "13115243279999696210147231297848654998887864576952244320558158620692603342236", 10); + mpz_set_str(BASE[14], "6814338563135591367010655964669793483652536871717891893032616415581401894627", 10); + mpz_set_str(BASE[15], "13660303521961041205824633772157003587453809761793065294055279768121314853695", 10); + mpz_set_str(BASE[16], "3571615583211663069428808372184817973703476260057504149923239576077102575715", 10); + mpz_set_str(BASE[17], "11981351099832644138306422070127357074117642951423551606012551622164230222506", 10); + mpz_set_str(BASE[18], "18597552580465440374022635246985743886550544261632147935254624835147509493269", 10); + mpz_set_str(BASE[19], "6753322320275422086923032033899357299485124665258735666995435957890214041481", 10); + _v_46 = BASE + _offset_73; + ctx->setSignal(_offset_70, _offset_71, _v_46); + + /* segments[i].base[1] <== BASE[i][1] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_47 = i + 0; + _offset_75 = _compIdx_6 + ctx->field->toInt(_v_47)*_compSizes_6[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_75, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_8 = ctx->getSignalSizes(_offset_75, 0x9a7ce19baa54c278LL /* base */); + _offset_76 = _sigIdx_8 + 1*_sigSizes_8[1]; + _v_48 = i + 0; + _offset_78 = ctx->field->toInt(_v_48)*2 + 1; + _v_49 = BASE + _offset_78; + ctx->setSignal(_offset_75, _offset_76, _v_49); + + /* for (j = 0,jfield->copyn(j, _num_50, 1); + _v_50 = j + 0; + _v_51 = nBits + 0; + ctx->field->lt(_tmp_33,_v_50,_v_51); + _cond_3 = ctx->field->isTrue(_tmp_33); + while (_cond_3) { + + /* segments[i].in[j] <== in[i*200+j] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_52 = i + 0; + _offset_83 = _compIdx_7 + ctx->field->toInt(_v_52)*_compSizes_7[1]; + _sigIdx_9 = ctx->getSignalOffset(_offset_83, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_9 = ctx->getSignalSizes(_offset_83, 0x08b73807b55c4bbeLL /* in */); + _v_53 = j + 0; + _offset_85 = _sigIdx_9 + ctx->field->toInt(_v_53)*_sigSizes_9[1]; + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_54 = i + 0; + ctx->field->mul(_tmp_34,_v_54,_const_8); + _v_55 = j + 0; + ctx->field->add(_tmp_35,_tmp_34,_v_55); + _offset_88 = _sigIdx_10 + ctx->field->toInt(_tmp_35)*_sigSizes_10[1]; + ctx->getSignal(ctx->cIdx, _offset_88, _sigValue_2); + ctx->setSignal(_offset_83, _offset_85, _sigValue_2); + _v_56 = j + 0; + ctx->field->add(_tmp_36, _v_56, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_36, 1); + _v_57 = j + 0; + _v_58 = nBits + 0; + ctx->field->lt(_tmp_37,_v_57,_v_58); + _cond_3 = ctx->field->isTrue(_tmp_37); + } + + /* for (j = nBits,j < nWindows*4,j++) */ + _v_59 = nBits + 0; + ctx->field->copyn(j, _v_59, 1); + _v_60 = j + 0; + _v_61 = nWindows + 0; + ctx->field->mul(_tmp_38,_v_61,_const_9); + ctx->field->lt(_tmp_39,_v_60,_tmp_38); + _cond_4 = ctx->field->isTrue(_tmp_39); + while (_cond_4) { + + /* segments[i].in[j] <== 0 */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_62 = i + 0; + _offset_98 = _compIdx_8 + ctx->field->toInt(_v_62)*_compSizes_8[1]; + _sigIdx_11 = ctx->getSignalOffset(_offset_98, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_11 = ctx->getSignalSizes(_offset_98, 0x08b73807b55c4bbeLL /* in */); + _v_63 = j + 0; + _offset_100 = _sigIdx_11 + ctx->field->toInt(_v_63)*_sigSizes_11[1]; + mpz_set_str(_num_53[0], "0", 10); + ctx->setSignal(_offset_98, _offset_100, _num_53); + _v_64 = j + 0; + ctx->field->add(_tmp_40, _v_64, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_40, 1); + _v_65 = j + 0; + _v_66 = nWindows + 0; + ctx->field->mul(_tmp_41,_v_66,_const_10); + ctx->field->lt(_tmp_42,_v_65,_tmp_41); + _cond_4 = ctx->field->isTrue(_tmp_42); + } + _v_67 = i + 0; + ctx->field->add(_tmp_43, _v_67, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_43, 1); + _v_68 = i + 0; + ctx->field->lt(_tmp_44,_v_68,_const_11); + _cond_2 = ctx->field->isTrue(_tmp_44); + } + + /* component adders[nSegments-1] */ + + /* for (i=0,ifield->copyn(i, _num_55, 1); + _v_70 = i + 0; + ctx->field->lt(_tmp_46,_v_70,_const_12); + _cond_5 = ctx->field->isTrue(_tmp_46); + while (_cond_5) { + + /* adders[i] = BabyAdd() */ + + /* if (i==0) */ + _v_72 = i + 0; + ctx->field->eq(_tmp_47,_v_72,_const_13); + if (ctx->field->isTrue(_tmp_47)) { + + /* adders[i].x1 <== segments[0].out[0] */ + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_73 = i + 0; + _offset_114 = _compIdx_9 + ctx->field->toInt(_v_73)*_compSizes_9[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_114, 0x08f10707b58d70c2LL /* x1 */); + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_115 = _compIdx_10 + 0*_compSizes_10[1]; + _sigIdx_13 = ctx->getSignalOffset(_offset_115, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_12 = ctx->getSignalSizes(_offset_115, 0x19f79b1921bbcfffLL /* out */); + _offset_116 = _sigIdx_13 + 0*_sigSizes_12[1]; + ctx->getSignal(_offset_115, _offset_116, _sigValue_3); + ctx->setSignal(_offset_114, _sigIdx_12, _sigValue_3); + + /* adders[i].y1 <== segments[0].out[1] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_74 = i + 0; + _offset_118 = _compIdx_11 + ctx->field->toInt(_v_74)*_compSizes_11[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_118, 0x08ed8307b58a5a9fLL /* y1 */); + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_119 = _compIdx_12 + 0*_compSizes_12[1]; + _sigIdx_15 = ctx->getSignalOffset(_offset_119, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_offset_119, 0x19f79b1921bbcfffLL /* out */); + _offset_120 = _sigIdx_15 + 1*_sigSizes_13[1]; + ctx->getSignal(_offset_119, _offset_120, _sigValue_4); + ctx->setSignal(_offset_118, _sigIdx_14, _sigValue_4); + + /* adders[i].x2 <== segments[1].out[0] */ + _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_75 = i + 0; + _offset_122 = _compIdx_13 + ctx->field->toInt(_v_75)*_compSizes_13[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_122, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_123 = _compIdx_14 + 1*_compSizes_14[1]; + _sigIdx_17 = ctx->getSignalOffset(_offset_123, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_14 = ctx->getSignalSizes(_offset_123, 0x19f79b1921bbcfffLL /* out */); + _offset_124 = _sigIdx_17 + 0*_sigSizes_14[1]; + ctx->getSignal(_offset_123, _offset_124, _sigValue_5); + ctx->setSignal(_offset_122, _sigIdx_16, _sigValue_5); + + /* adders[i].y2 <== segments[1].out[1] */ + _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_76 = i + 0; + _offset_126 = _compIdx_15 + ctx->field->toInt(_v_76)*_compSizes_15[1]; + _sigIdx_18 = ctx->getSignalOffset(_offset_126, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _offset_127 = _compIdx_16 + 1*_compSizes_16[1]; + _sigIdx_19 = ctx->getSignalOffset(_offset_127, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_offset_127, 0x19f79b1921bbcfffLL /* out */); + _offset_128 = _sigIdx_19 + 1*_sigSizes_15[1]; + ctx->getSignal(_offset_127, _offset_128, _sigValue_6); + ctx->setSignal(_offset_126, _sigIdx_18, _sigValue_6); + } else { + + /* adders[i].x1 <== adders[i-1].xout */ + _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_77 = i + 0; + _offset_130 = _compIdx_17 + ctx->field->toInt(_v_77)*_compSizes_17[1]; + _sigIdx_20 = ctx->getSignalOffset(_offset_130, 0x08f10707b58d70c2LL /* x1 */); + _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_78 = i + 0; + ctx->field->sub(_tmp_48,_v_78,_const_14); + _offset_132 = _compIdx_18 + ctx->field->toInt(_tmp_48)*_compSizes_18[1]; + _sigIdx_21 = ctx->getSignalOffset(_offset_132, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_offset_132, _sigIdx_21, _sigValue_7); + ctx->setSignal(_offset_130, _sigIdx_20, _sigValue_7); + + /* adders[i].y1 <== adders[i-1].yout */ + _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_79 = i + 0; + _offset_134 = _compIdx_19 + ctx->field->toInt(_v_79)*_compSizes_19[1]; + _sigIdx_22 = ctx->getSignalOffset(_offset_134, 0x08ed8307b58a5a9fLL /* y1 */); + _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_80 = i + 0; + ctx->field->sub(_tmp_49,_v_80,_const_15); + _offset_136 = _compIdx_20 + ctx->field->toInt(_tmp_49)*_compSizes_20[1]; + _sigIdx_23 = ctx->getSignalOffset(_offset_136, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_offset_136, _sigIdx_23, _sigValue_8); + ctx->setSignal(_offset_134, _sigIdx_22, _sigValue_8); + + /* adders[i].x2 <== segments[i+1].out[0] */ + _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_81 = i + 0; + _offset_138 = _compIdx_21 + ctx->field->toInt(_v_81)*_compSizes_21[1]; + _sigIdx_24 = ctx->getSignalOffset(_offset_138, 0x08f10607b58d6f0fLL /* x2 */); + _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_82 = i + 0; + ctx->field->add(_tmp_50,_v_82,_const_16); + _offset_140 = _compIdx_22 + ctx->field->toInt(_tmp_50)*_compSizes_22[1]; + _sigIdx_25 = ctx->getSignalOffset(_offset_140, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_16 = ctx->getSignalSizes(_offset_140, 0x19f79b1921bbcfffLL /* out */); + _offset_141 = _sigIdx_25 + 0*_sigSizes_16[1]; + ctx->getSignal(_offset_140, _offset_141, _sigValue_9); + ctx->setSignal(_offset_138, _sigIdx_24, _sigValue_9); + + /* adders[i].y2 <== segments[i+1].out[1] */ + _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_83 = i + 0; + _offset_143 = _compIdx_23 + ctx->field->toInt(_v_83)*_compSizes_23[1]; + _sigIdx_26 = ctx->getSignalOffset(_offset_143, 0x08ed8407b58a5c52LL /* y2 */); + _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); + _v_84 = i + 0; + ctx->field->add(_tmp_51,_v_84,_const_17); + _offset_145 = _compIdx_24 + ctx->field->toInt(_tmp_51)*_compSizes_24[1]; + _sigIdx_27 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_17 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _offset_146 = _sigIdx_27 + 1*_sigSizes_17[1]; + ctx->getSignal(_offset_145, _offset_146, _sigValue_10); + ctx->setSignal(_offset_143, _sigIdx_26, _sigValue_10); + } + _v_85 = i + 0; + ctx->field->add(_tmp_52, _v_85, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_52, 1); + _v_86 = i + 0; + ctx->field->lt(_tmp_54,_v_86,_const_18); + _cond_5 = ctx->field->isTrue(_tmp_54); + } + + /* if (nSegments>1) */ + + /* out[0] <== adders[nSegments-2].xout */ + _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_153 = _compIdx_25 + 0*_compSizes_25[1]; + _sigIdx_28 = ctx->getSignalOffset(_offset_153, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(_offset_153, _sigIdx_28, _sigValue_11); + _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_154 = _sigIdx_29 + 0*_sigSizes_18[1]; + ctx->setSignal(ctx->cIdx, _offset_154, _sigValue_11); + + /* out[1] <== adders[nSegments-2].yout */ + _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_156 = _compIdx_26 + 0*_compSizes_26[1]; + _sigIdx_30 = ctx->getSignalOffset(_offset_156, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(_offset_156, _sigIdx_30, _sigValue_12); + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_157 = _sigIdx_31 + 1*_sigSizes_19[1]; + ctx->setSignal(ctx->cIdx, _offset_157, _sigValue_12); + + // Footer + ctx->freeBigInts(_v_8, 1); + ctx->freeBigInts(_v_11, 1); + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_v_28, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_num_37, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(nBits, 1); + ctx->freeBigInts(nWindows, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_num_42, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(BASE, 20); + ctx->freeBigInts(_num_50, 1); + ctx->freeBigInts(_tmp_33, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_34, 1); + ctx->freeBigInts(_tmp_35, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_tmp_36, 1); + ctx->freeBigInts(_tmp_37, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_38, 1); + ctx->freeBigInts(_tmp_39, 1); + ctx->freeBigInts(_num_53, 1); + ctx->freeBigInts(_tmp_40, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_41, 1); + ctx->freeBigInts(_tmp_42, 1); + ctx->freeBigInts(_tmp_43, 1); + ctx->freeBigInts(_const_11, 1); + ctx->freeBigInts(_tmp_44, 1); + ctx->freeBigInts(_num_55, 1); + ctx->freeBigInts(_const_12, 1); + ctx->freeBigInts(_tmp_46, 1); + ctx->freeBigInts(_const_13, 1); + ctx->freeBigInts(_tmp_47, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_const_14, 1); + ctx->freeBigInts(_tmp_48, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_15, 1); + ctx->freeBigInts(_tmp_49, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_const_16, 1); + ctx->freeBigInts(_tmp_50, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const_17, 1); + ctx->freeBigInts(_tmp_51, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_tmp_52, 1); + ctx->freeBigInts(_const_18, 1); + ctx->freeBigInts(_tmp_54, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_sigValue_12, 1); +} + +/* +Segment +base[0]=0 +base[1]=0 +nWindows=50 +*/ +void Segment_a5b1c16b0dc672ca(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue = ctx->allocBigInts(1); + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes; + int _offset_9; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_10; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_11; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_4; + Circom_Sizes _compSizes_1; + int _offset_13; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + int _offset_14; + int _compIdx_5; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_15; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + Circom_Sizes _compSizes_2; + int _offset_19; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_21; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_24; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + int _compIdx_7; + Circom_Sizes _compSizes_3; + int _offset_29; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + PBigInt _v_13; + int _offset_31; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + PBigInt _v_15; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _offset_34; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _v_16; + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _v_17; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "4", 10); + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond_1; + PBigInt _v_21; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "0", 10); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _compIdx_8; + Circom_Sizes _compSizes_4; + PBigInt _v_22; + int _offset_44; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_45; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_46; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _compIdx_10; + Circom_Sizes _compSizes_5; + PBigInt _v_23; + int _offset_48; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_49; + int _compIdx_11; + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_50; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _compIdx_12; + Circom_Sizes _compSizes_6; + PBigInt _v_24; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _offset_52; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_53; + int _compIdx_13; + Circom_Sizes _compSizes_7; + PBigInt _v_25; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "1", 10); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _offset_55; + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_56; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _compIdx_14; + Circom_Sizes _compSizes_8; + PBigInt _v_26; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_16 = ctx->allocBigInts(1); + int _offset_58; + int _sigIdx_18; + Circom_Sizes _sigSizes_18; + int _offset_59; + int _compIdx_15; + Circom_Sizes _compSizes_9; + PBigInt _v_27; + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "1", 10); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _offset_61; + int _sigIdx_19; + Circom_Sizes _sigSizes_19; + int _offset_62; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + int _compIdx_16; + Circom_Sizes _compSizes_10; + PBigInt _v_28; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _offset_64; + int _sigIdx_20; + Circom_Sizes _sigSizes_20; + int _offset_65; + int _compIdx_17; + Circom_Sizes _compSizes_11; + PBigInt _v_29; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "1", 10); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _offset_67; + int _sigIdx_21; + Circom_Sizes _sigSizes_21; + int _offset_68; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + int _compIdx_18; + Circom_Sizes _compSizes_12; + PBigInt _v_30; + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "1", 10); + PBigInt _tmp_20 = ctx->allocBigInts(1); + int _offset_70; + int _sigIdx_22; + Circom_Sizes _sigSizes_22; + int _offset_71; + int _compIdx_19; + Circom_Sizes _compSizes_13; + PBigInt _v_31; + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "1", 10); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _offset_73; + int _sigIdx_23; + Circom_Sizes _sigSizes_23; + int _offset_74; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + int _compIdx_20; + Circom_Sizes _compSizes_14; + PBigInt _v_32; + int _offset_76; + int _sigIdx_24; + Circom_Sizes _sigSizes_24; + int _offset_77; + int _compIdx_21; + Circom_Sizes _compSizes_15; + PBigInt _v_33; + PBigInt _const_11; + _const_11 = ctx->allocBigInts(1); + mpz_set_str(_const_11[0], "1", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + int _offset_79; + int _sigIdx_25; + Circom_Sizes _sigSizes_25; + int _offset_80; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + int _compIdx_22; + Circom_Sizes _compSizes_16; + PBigInt _v_34; + int _offset_82; + int _sigIdx_26; + Circom_Sizes _sigSizes_26; + int _offset_83; + int _compIdx_23; + Circom_Sizes _compSizes_17; + PBigInt _v_35; + PBigInt _const_12; + _const_12 = ctx->allocBigInts(1); + mpz_set_str(_const_12[0], "1", 10); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _offset_85; + int _sigIdx_27; + Circom_Sizes _sigSizes_27; + int _offset_86; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _v_36; + PBigInt _const_13; + _const_13 = ctx->allocBigInts(1); + mpz_set_str(_const_13[0], "1", 10); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _compIdx_24; + Circom_Sizes _compSizes_18; + PBigInt _v_37; + PBigInt _const_14; + _const_14 = ctx->allocBigInts(1); + mpz_set_str(_const_14[0], "1", 10); + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _offset_89; + int _sigIdx_28; + Circom_Sizes _sigSizes_28; + int _offset_90; + int _compIdx_25; + Circom_Sizes _compSizes_19; + int _offset_91; + int _sigIdx_29; + Circom_Sizes _sigSizes_29; + int _offset_92; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + int _compIdx_26; + Circom_Sizes _compSizes_20; + PBigInt _v_38; + PBigInt _const_15; + _const_15 = ctx->allocBigInts(1); + mpz_set_str(_const_15[0], "1", 10); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _offset_94; + int _sigIdx_30; + Circom_Sizes _sigSizes_30; + int _offset_95; + int _compIdx_27; + Circom_Sizes _compSizes_21; + int _offset_96; + int _sigIdx_31; + Circom_Sizes _sigSizes_31; + int _offset_97; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + int _compIdx_28; + Circom_Sizes _compSizes_22; + PBigInt _v_39; + PBigInt _const_16; + _const_16 = ctx->allocBigInts(1); + mpz_set_str(_const_16[0], "1", 10); + PBigInt _tmp_27 = ctx->allocBigInts(1); + int _offset_99; + int _sigIdx_32; + Circom_Sizes _sigSizes_32; + int _offset_100; + int _compIdx_29; + Circom_Sizes _compSizes_23; + PBigInt _v_40; + PBigInt _const_17; + _const_17 = ctx->allocBigInts(1); + mpz_set_str(_const_17[0], "2", 10); + PBigInt _tmp_28 = ctx->allocBigInts(1); + int _offset_102; + int _sigIdx_33; + Circom_Sizes _sigSizes_33; + int _offset_103; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + int _compIdx_30; + Circom_Sizes _compSizes_24; + PBigInt _v_41; + PBigInt _const_18; + _const_18 = ctx->allocBigInts(1); + mpz_set_str(_const_18[0], "1", 10); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _offset_105; + int _sigIdx_34; + Circom_Sizes _sigSizes_34; + int _offset_106; + int _compIdx_31; + Circom_Sizes _compSizes_25; + PBigInt _v_42; + PBigInt _const_19; + _const_19 = ctx->allocBigInts(1); + mpz_set_str(_const_19[0], "2", 10); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _offset_108; + int _sigIdx_35; + Circom_Sizes _sigSizes_35; + int _offset_109; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + int _compIdx_32; + Circom_Sizes _compSizes_26; + PBigInt _v_43; + PBigInt _const_20; + _const_20 = ctx->allocBigInts(1); + mpz_set_str(_const_20[0], "1", 10); + PBigInt _tmp_31 = ctx->allocBigInts(1); + int _offset_111; + int _sigIdx_36; + Circom_Sizes _sigSizes_36; + int _offset_112; + int _compIdx_33; + Circom_Sizes _compSizes_27; + PBigInt _v_44; + int _offset_114; + int _sigIdx_37; + Circom_Sizes _sigSizes_37; + int _offset_115; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + int _compIdx_34; + Circom_Sizes _compSizes_28; + PBigInt _v_45; + PBigInt _const_21; + _const_21 = ctx->allocBigInts(1); + mpz_set_str(_const_21[0], "1", 10); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _offset_117; + int _sigIdx_38; + Circom_Sizes _sigSizes_38; + int _offset_118; + int _compIdx_35; + Circom_Sizes _compSizes_29; + PBigInt _v_46; + int _offset_120; + int _sigIdx_39; + Circom_Sizes _sigSizes_39; + int _offset_121; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _num_66 = ctx->allocBigInts(1); + PBigInt _v_47; + PBigInt _const_22; + _const_22 = ctx->allocBigInts(1); + mpz_set_str(_const_22[0], "4", 10); + PBigInt _tmp_33 = ctx->allocBigInts(1); + int _cond_2; + int _compIdx_36; + Circom_Sizes _compSizes_30; + PBigInt _v_48; + int _offset_125; + int _sigIdx_40; + Circom_Sizes _sigSizes_40; + PBigInt _v_49; + int _offset_127; + int _sigIdx_41; + Circom_Sizes _sigSizes_41; + PBigInt _v_50; + PBigInt _const_23; + _const_23 = ctx->allocBigInts(1); + mpz_set_str(_const_23[0], "4", 10); + PBigInt _tmp_34 = ctx->allocBigInts(1); + PBigInt _v_51; + PBigInt _tmp_35 = ctx->allocBigInts(1); + int _offset_130; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _v_52; + PBigInt _tmp_36 = ctx->allocBigInts(1); + PBigInt _v_53; + PBigInt _const_24; + _const_24 = ctx->allocBigInts(1); + mpz_set_str(_const_24[0], "4", 10); + PBigInt _tmp_37 = ctx->allocBigInts(1); + PBigInt _v_54; + PBigInt _tmp_38 = ctx->allocBigInts(1); + PBigInt _v_55; + PBigInt _const_25; + _const_25 = ctx->allocBigInts(1); + mpz_set_str(_const_25[0], "50", 10); + PBigInt _tmp_39 = ctx->allocBigInts(1); + int _compIdx_37; + int _sigIdx_42; + Circom_Sizes _sigSizes_42; + int _offset_139; + int _compIdx_38; + Circom_Sizes _compSizes_31; + int _offset_141; + int _sigIdx_43; + Circom_Sizes _sigSizes_43; + int _offset_142; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + int _compIdx_39; + int _sigIdx_44; + Circom_Sizes _sigSizes_44; + int _offset_143; + int _compIdx_40; + Circom_Sizes _compSizes_32; + int _offset_145; + int _sigIdx_45; + Circom_Sizes _sigSizes_45; + int _offset_146; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + int _compIdx_41; + int _sigIdx_46; + Circom_Sizes _sigSizes_46; + int _offset_147; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _sigIdx_47; + Circom_Sizes _sigSizes_47; + int _offset_148; + int _compIdx_42; + int _sigIdx_48; + Circom_Sizes _sigSizes_48; + int _offset_149; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + int _sigIdx_49; + Circom_Sizes _sigSizes_49; + int _offset_150; + + + /* signal input in[nWindows*4] */ + + /* signal input base[2] */ + + /* signal output out[2] */ + + /* var i */ + + /* var j */ + + /* component e2m = Edwards2Montgomery() */ + + /* e2m.in[0] <== base[0] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0x08b73807b55c4bbeLL /* in */); + _offset = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); + ctx->setSignal(_compIdx, _offset, _sigValue); + + /* e2m.in[1] <== base[1] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); + + /* component windows[nWindows] */ + + /* component doublers1[nWindows-1] */ + + /* component doublers2[nWindows-1] */ + + /* component adders[nWindows-1] */ + + /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_9 = _compIdx_2 + 0*_compSizes[1]; + _sigIdx_4 = ctx->getSignalOffset(_offset_9, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_4 = ctx->getSignalSizes(_offset_9, 0x9a7ce19baa54c278LL /* base */); + _offset_10 = _sigIdx_4 + 0*_sigSizes_4[1]; + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); + _offset_11 = _sigIdx_5 + 0*_sigSizes_5[1]; + ctx->getSignal(_compIdx_3, _offset_11, _sigValue_2); + ctx->setSignal(_offset_9, _offset_10, _sigValue_2); + + /* windows[i].base[1] <== e2m.out[1] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_13 = _compIdx_4 + 0*_compSizes_1[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_13, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_6 = ctx->getSignalSizes(_offset_13, 0x9a7ce19baa54c278LL /* base */); + _offset_14 = _sigIdx_6 + 1*_sigSizes_6[1]; + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_7 = ctx->getSignalOffset(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); + _offset_15 = _sigIdx_7 + 1*_sigSizes_7[1]; + ctx->getSignal(_compIdx_5, _offset_15, _sigValue_3); + ctx->setSignal(_offset_13, _offset_14, _sigValue_3); + + /* for (j=0,j<4,j++) */ + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_19 = _compIdx_6 + 0*_compSizes_2[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_19, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(_offset_19, 0x08b73807b55c4bbeLL /* in */); + _offset_21 = _sigIdx_8 + 0*_sigSizes_8[1]; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_24 = _sigIdx_9 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_4); + ctx->setSignal(_offset_19, _offset_21, _sigValue_4); + mpz_set_str(_tmp_6[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_6); + while (_cond) { + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_29 = _compIdx_7 + 0*_compSizes_3[1]; + _sigIdx_10 = ctx->getSignalOffset(_offset_29, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(_offset_29, 0x08b73807b55c4bbeLL /* in */); + _v_13 = j + 0; + _offset_31 = _sigIdx_10 + ctx->field->toInt(_v_13)*_sigSizes_10[1]; + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_15 = j + 0; + ctx->field->add(_tmp_8,_const,_v_15); + _offset_34 = _sigIdx_11 + ctx->field->toInt(_tmp_8)*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_34, _sigValue_5); + ctx->setSignal(_offset_29, _offset_31, _sigValue_5); + _v_16 = j + 0; + ctx->field->add(_tmp_9, _v_16, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_9, 1); + _v_17 = j + 0; + ctx->field->lt(_tmp_10,_v_17,_const_1); + _cond = ctx->field->isTrue(_tmp_10); + } + mpz_set_str(_tmp_12[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond_1 = ctx->field->isTrue(_tmp_12); + while (_cond_1) { + + /* windows[i] = Window4() */ + + /* if (i==0) */ + _v_21 = i + 0; + ctx->field->eq(_tmp_13,_v_21,_const_2); + if (ctx->field->isTrue(_tmp_13)) { + + /* windows[i].base[0] <== e2m.out[0] */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_22 = i + 0; + _offset_44 = _compIdx_8 + ctx->field->toInt(_v_22)*_compSizes_4[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_44, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_12 = ctx->getSignalSizes(_offset_44, 0x9a7ce19baa54c278LL /* base */); + _offset_45 = _sigIdx_12 + 0*_sigSizes_12[1]; + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_46 = _sigIdx_13 + 0*_sigSizes_13[1]; + ctx->getSignal(_compIdx_9, _offset_46, _sigValue_6); + ctx->setSignal(_offset_44, _offset_45, _sigValue_6); + + /* windows[i].base[1] <== e2m.out[1] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_23 = i + 0; + _offset_48 = _compIdx_10 + ctx->field->toInt(_v_23)*_compSizes_5[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_48, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_14 = ctx->getSignalSizes(_offset_48, 0x9a7ce19baa54c278LL /* base */); + _offset_49 = _sigIdx_14 + 1*_sigSizes_14[1]; + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_15 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _offset_50 = _sigIdx_15 + 1*_sigSizes_15[1]; + ctx->getSignal(_compIdx_11, _offset_50, _sigValue_7); + ctx->setSignal(_offset_48, _offset_49, _sigValue_7); + } else { + + /* doublers1[i-1] = MontgomeryDouble() */ + + /* doublers2[i-1] = MontgomeryDouble() */ + + /* doublers1[i-1].in[0] <== windows[i-1].out8[0] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_24 = i + 0; + ctx->field->sub(_tmp_14,_v_24,_const_3); + _offset_52 = _compIdx_12 + ctx->field->toInt(_tmp_14)*_compSizes_6[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_52, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_16 = ctx->getSignalSizes(_offset_52, 0x08b73807b55c4bbeLL /* in */); + _offset_53 = _sigIdx_16 + 0*_sigSizes_16[1]; + _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_25 = i + 0; + ctx->field->sub(_tmp_15,_v_25,_const_4); + _offset_55 = _compIdx_13 + ctx->field->toInt(_tmp_15)*_compSizes_7[1]; + _sigIdx_17 = ctx->getSignalOffset(_offset_55, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_17 = ctx->getSignalSizes(_offset_55, 0xdb8c52b452220f25LL /* out8 */); + _offset_56 = _sigIdx_17 + 0*_sigSizes_17[1]; + ctx->getSignal(_offset_55, _offset_56, _sigValue_8); + ctx->setSignal(_offset_52, _offset_53, _sigValue_8); + + /* doublers1[i-1].in[1] <== windows[i-1].out8[1] */ + _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_26 = i + 0; + ctx->field->sub(_tmp_16,_v_26,_const_5); + _offset_58 = _compIdx_14 + ctx->field->toInt(_tmp_16)*_compSizes_8[1]; + _sigIdx_18 = ctx->getSignalOffset(_offset_58, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_18 = ctx->getSignalSizes(_offset_58, 0x08b73807b55c4bbeLL /* in */); + _offset_59 = _sigIdx_18 + 1*_sigSizes_18[1]; + _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_27 = i + 0; + ctx->field->sub(_tmp_17,_v_27,_const_6); + _offset_61 = _compIdx_15 + ctx->field->toInt(_tmp_17)*_compSizes_9[1]; + _sigIdx_19 = ctx->getSignalOffset(_offset_61, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_19 = ctx->getSignalSizes(_offset_61, 0xdb8c52b452220f25LL /* out8 */); + _offset_62 = _sigIdx_19 + 1*_sigSizes_19[1]; + ctx->getSignal(_offset_61, _offset_62, _sigValue_9); + ctx->setSignal(_offset_58, _offset_59, _sigValue_9); + + /* doublers2[i-1].in[0] <== doublers1[i-1].out[0] */ + _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_28 = i + 0; + ctx->field->sub(_tmp_18,_v_28,_const_7); + _offset_64 = _compIdx_16 + ctx->field->toInt(_tmp_18)*_compSizes_10[1]; + _sigIdx_20 = ctx->getSignalOffset(_offset_64, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_20 = ctx->getSignalSizes(_offset_64, 0x08b73807b55c4bbeLL /* in */); + _offset_65 = _sigIdx_20 + 0*_sigSizes_20[1]; + _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_29 = i + 0; + ctx->field->sub(_tmp_19,_v_29,_const_8); + _offset_67 = _compIdx_17 + ctx->field->toInt(_tmp_19)*_compSizes_11[1]; + _sigIdx_21 = ctx->getSignalOffset(_offset_67, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_21 = ctx->getSignalSizes(_offset_67, 0x19f79b1921bbcfffLL /* out */); + _offset_68 = _sigIdx_21 + 0*_sigSizes_21[1]; + ctx->getSignal(_offset_67, _offset_68, _sigValue_10); + ctx->setSignal(_offset_64, _offset_65, _sigValue_10); + + /* doublers2[i-1].in[1] <== doublers1[i-1].out[1] */ + _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_30 = i + 0; + ctx->field->sub(_tmp_20,_v_30,_const_9); + _offset_70 = _compIdx_18 + ctx->field->toInt(_tmp_20)*_compSizes_12[1]; + _sigIdx_22 = ctx->getSignalOffset(_offset_70, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_22 = ctx->getSignalSizes(_offset_70, 0x08b73807b55c4bbeLL /* in */); + _offset_71 = _sigIdx_22 + 1*_sigSizes_22[1]; + _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_31 = i + 0; + ctx->field->sub(_tmp_21,_v_31,_const_10); + _offset_73 = _compIdx_19 + ctx->field->toInt(_tmp_21)*_compSizes_13[1]; + _sigIdx_23 = ctx->getSignalOffset(_offset_73, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_23 = ctx->getSignalSizes(_offset_73, 0x19f79b1921bbcfffLL /* out */); + _offset_74 = _sigIdx_23 + 1*_sigSizes_23[1]; + ctx->getSignal(_offset_73, _offset_74, _sigValue_11); + ctx->setSignal(_offset_70, _offset_71, _sigValue_11); + + /* windows[i].base[0] <== doublers2[i-1].out[0] */ + _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_32 = i + 0; + _offset_76 = _compIdx_20 + ctx->field->toInt(_v_32)*_compSizes_14[1]; + _sigIdx_24 = ctx->getSignalOffset(_offset_76, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_24 = ctx->getSignalSizes(_offset_76, 0x9a7ce19baa54c278LL /* base */); + _offset_77 = _sigIdx_24 + 0*_sigSizes_24[1]; + _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_33 = i + 0; + ctx->field->sub(_tmp_22,_v_33,_const_11); + _offset_79 = _compIdx_21 + ctx->field->toInt(_tmp_22)*_compSizes_15[1]; + _sigIdx_25 = ctx->getSignalOffset(_offset_79, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_25 = ctx->getSignalSizes(_offset_79, 0x19f79b1921bbcfffLL /* out */); + _offset_80 = _sigIdx_25 + 0*_sigSizes_25[1]; + ctx->getSignal(_offset_79, _offset_80, _sigValue_12); + ctx->setSignal(_offset_76, _offset_77, _sigValue_12); + + /* windows[i].base[1] <== doublers2[i-1].out[1] */ + _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_34 = i + 0; + _offset_82 = _compIdx_22 + ctx->field->toInt(_v_34)*_compSizes_16[1]; + _sigIdx_26 = ctx->getSignalOffset(_offset_82, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_26 = ctx->getSignalSizes(_offset_82, 0x9a7ce19baa54c278LL /* base */); + _offset_83 = _sigIdx_26 + 1*_sigSizes_26[1]; + _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_35 = i + 0; + ctx->field->sub(_tmp_23,_v_35,_const_12); + _offset_85 = _compIdx_23 + ctx->field->toInt(_tmp_23)*_compSizes_17[1]; + _sigIdx_27 = ctx->getSignalOffset(_offset_85, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_27 = ctx->getSignalSizes(_offset_85, 0x19f79b1921bbcfffLL /* out */); + _offset_86 = _sigIdx_27 + 1*_sigSizes_27[1]; + ctx->getSignal(_offset_85, _offset_86, _sigValue_13); + ctx->setSignal(_offset_82, _offset_83, _sigValue_13); + + /* adders[i-1] = MontgomeryAdd() */ + + /* if (i==1) */ + _v_36 = i + 0; + ctx->field->eq(_tmp_24,_v_36,_const_13); + if (ctx->field->isTrue(_tmp_24)) { + + /* adders[i-1].in1[0] <== windows[0].out[0] */ + _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_37 = i + 0; + ctx->field->sub(_tmp_25,_v_37,_const_14); + _offset_89 = _compIdx_24 + ctx->field->toInt(_tmp_25)*_compSizes_18[1]; + _sigIdx_28 = ctx->getSignalOffset(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_28 = ctx->getSignalSizes(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_90 = _sigIdx_28 + 0*_sigSizes_28[1]; + _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_91 = _compIdx_25 + 0*_compSizes_19[1]; + _sigIdx_29 = ctx->getSignalOffset(_offset_91, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_29 = ctx->getSignalSizes(_offset_91, 0x19f79b1921bbcfffLL /* out */); + _offset_92 = _sigIdx_29 + 0*_sigSizes_29[1]; + ctx->getSignal(_offset_91, _offset_92, _sigValue_14); + ctx->setSignal(_offset_89, _offset_90, _sigValue_14); + + /* adders[i-1].in1[1] <== windows[0].out[1] */ + _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_38 = i + 0; + ctx->field->sub(_tmp_26,_v_38,_const_15); + _offset_94 = _compIdx_26 + ctx->field->toInt(_tmp_26)*_compSizes_20[1]; + _sigIdx_30 = ctx->getSignalOffset(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_30 = ctx->getSignalSizes(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_95 = _sigIdx_30 + 1*_sigSizes_30[1]; + _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_96 = _compIdx_27 + 0*_compSizes_21[1]; + _sigIdx_31 = ctx->getSignalOffset(_offset_96, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_31 = ctx->getSignalSizes(_offset_96, 0x19f79b1921bbcfffLL /* out */); + _offset_97 = _sigIdx_31 + 1*_sigSizes_31[1]; + ctx->getSignal(_offset_96, _offset_97, _sigValue_15); + ctx->setSignal(_offset_94, _offset_95, _sigValue_15); + } else { + + /* adders[i-1].in1[0] <== adders[i-2].out[0] */ + _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_39 = i + 0; + ctx->field->sub(_tmp_27,_v_39,_const_16); + _offset_99 = _compIdx_28 + ctx->field->toInt(_tmp_27)*_compSizes_22[1]; + _sigIdx_32 = ctx->getSignalOffset(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_32 = ctx->getSignalSizes(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_100 = _sigIdx_32 + 0*_sigSizes_32[1]; + _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_40 = i + 0; + ctx->field->sub(_tmp_28,_v_40,_const_17); + _offset_102 = _compIdx_29 + ctx->field->toInt(_tmp_28)*_compSizes_23[1]; + _sigIdx_33 = ctx->getSignalOffset(_offset_102, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_33 = ctx->getSignalSizes(_offset_102, 0x19f79b1921bbcfffLL /* out */); + _offset_103 = _sigIdx_33 + 0*_sigSizes_33[1]; + ctx->getSignal(_offset_102, _offset_103, _sigValue_16); + ctx->setSignal(_offset_99, _offset_100, _sigValue_16); + + /* adders[i-1].in1[1] <== adders[i-2].out[1] */ + _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_41 = i + 0; + ctx->field->sub(_tmp_29,_v_41,_const_18); + _offset_105 = _compIdx_30 + ctx->field->toInt(_tmp_29)*_compSizes_24[1]; + _sigIdx_34 = ctx->getSignalOffset(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_34 = ctx->getSignalSizes(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_106 = _sigIdx_34 + 1*_sigSizes_34[1]; + _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_42 = i + 0; + ctx->field->sub(_tmp_30,_v_42,_const_19); + _offset_108 = _compIdx_31 + ctx->field->toInt(_tmp_30)*_compSizes_25[1]; + _sigIdx_35 = ctx->getSignalOffset(_offset_108, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_35 = ctx->getSignalSizes(_offset_108, 0x19f79b1921bbcfffLL /* out */); + _offset_109 = _sigIdx_35 + 1*_sigSizes_35[1]; + ctx->getSignal(_offset_108, _offset_109, _sigValue_17); + ctx->setSignal(_offset_105, _offset_106, _sigValue_17); + } + + /* adders[i-1].in2[0] <== windows[i].out[0] */ + _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_43 = i + 0; + ctx->field->sub(_tmp_31,_v_43,_const_20); + _offset_111 = _compIdx_32 + ctx->field->toInt(_tmp_31)*_compSizes_26[1]; + _sigIdx_36 = ctx->getSignalOffset(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_36 = ctx->getSignalSizes(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_112 = _sigIdx_36 + 0*_sigSizes_36[1]; + _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_27 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_44 = i + 0; + _offset_114 = _compIdx_33 + ctx->field->toInt(_v_44)*_compSizes_27[1]; + _sigIdx_37 = ctx->getSignalOffset(_offset_114, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_37 = ctx->getSignalSizes(_offset_114, 0x19f79b1921bbcfffLL /* out */); + _offset_115 = _sigIdx_37 + 0*_sigSizes_37[1]; + ctx->getSignal(_offset_114, _offset_115, _sigValue_18); + ctx->setSignal(_offset_111, _offset_112, _sigValue_18); + + /* adders[i-1].in2[1] <== windows[i].out[1] */ + _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_28 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_45 = i + 0; + ctx->field->sub(_tmp_32,_v_45,_const_21); + _offset_117 = _compIdx_34 + ctx->field->toInt(_tmp_32)*_compSizes_28[1]; + _sigIdx_38 = ctx->getSignalOffset(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_38 = ctx->getSignalSizes(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_118 = _sigIdx_38 + 1*_sigSizes_38[1]; + _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_29 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_46 = i + 0; + _offset_120 = _compIdx_35 + ctx->field->toInt(_v_46)*_compSizes_29[1]; + _sigIdx_39 = ctx->getSignalOffset(_offset_120, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_39 = ctx->getSignalSizes(_offset_120, 0x19f79b1921bbcfffLL /* out */); + _offset_121 = _sigIdx_39 + 1*_sigSizes_39[1]; + ctx->getSignal(_offset_120, _offset_121, _sigValue_19); + ctx->setSignal(_offset_117, _offset_118, _sigValue_19); + } + + /* for (j=0,j<4,j++) */ + mpz_set_str(_num_66[0], "0", 10); + ctx->field->copyn(j, _num_66, 1); + _v_47 = j + 0; + ctx->field->lt(_tmp_33,_v_47,_const_22); + _cond_2 = ctx->field->isTrue(_tmp_33); + while (_cond_2) { + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_30 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_48 = i + 0; + _offset_125 = _compIdx_36 + ctx->field->toInt(_v_48)*_compSizes_30[1]; + _sigIdx_40 = ctx->getSignalOffset(_offset_125, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_40 = ctx->getSignalSizes(_offset_125, 0x08b73807b55c4bbeLL /* in */); + _v_49 = j + 0; + _offset_127 = _sigIdx_40 + ctx->field->toInt(_v_49)*_sigSizes_40[1]; + _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_50 = i + 0; + ctx->field->mul(_tmp_34,_const_23,_v_50); + _v_51 = j + 0; + ctx->field->add(_tmp_35,_tmp_34,_v_51); + _offset_130 = _sigIdx_41 + ctx->field->toInt(_tmp_35)*_sigSizes_41[1]; + ctx->getSignal(ctx->cIdx, _offset_130, _sigValue_20); + ctx->setSignal(_offset_125, _offset_127, _sigValue_20); + _v_52 = j + 0; + ctx->field->add(_tmp_36, _v_52, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_36, 1); + _v_53 = j + 0; + ctx->field->lt(_tmp_37,_v_53,_const_24); + _cond_2 = ctx->field->isTrue(_tmp_37); + } + _v_54 = i + 0; + ctx->field->add(_tmp_38, _v_54, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_38, 1); + _v_55 = i + 0; + ctx->field->lt(_tmp_39,_v_55,_const_25); + _cond_1 = ctx->field->isTrue(_tmp_39); + } + + /* component m2e = Montgomery2Edwards() */ + + /* if (nWindows > 1) */ + + /* m2e.in[0] <== adders[nWindows-2].out[0] */ + _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_42 = ctx->getSignalOffset(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_42 = ctx->getSignalSizes(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); + _offset_139 = _sigIdx_42 + 0*_sigSizes_42[1]; + _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_31 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_141 = _compIdx_38 + 48*_compSizes_31[1]; + _sigIdx_43 = ctx->getSignalOffset(_offset_141, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_43 = ctx->getSignalSizes(_offset_141, 0x19f79b1921bbcfffLL /* out */); + _offset_142 = _sigIdx_43 + 0*_sigSizes_43[1]; + ctx->getSignal(_offset_141, _offset_142, _sigValue_21); + ctx->setSignal(_compIdx_37, _offset_139, _sigValue_21); + + /* m2e.in[1] <== adders[nWindows-2].out[1] */ + _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_44 = ctx->getSignalOffset(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_44 = ctx->getSignalSizes(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); + _offset_143 = _sigIdx_44 + 1*_sigSizes_44[1]; + _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_32 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_145 = _compIdx_40 + 48*_compSizes_32[1]; + _sigIdx_45 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_45 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _offset_146 = _sigIdx_45 + 1*_sigSizes_45[1]; + ctx->getSignal(_offset_145, _offset_146, _sigValue_22); + ctx->setSignal(_compIdx_39, _offset_143, _sigValue_22); + + /* out[0] <== m2e.out[0] */ + _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_46 = ctx->getSignalOffset(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_46 = ctx->getSignalSizes(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); + _offset_147 = _sigIdx_46 + 0*_sigSizes_46[1]; + ctx->getSignal(_compIdx_41, _offset_147, _sigValue_23); + _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_148 = _sigIdx_47 + 0*_sigSizes_47[1]; + ctx->setSignal(ctx->cIdx, _offset_148, _sigValue_23); + + /* out[1] <== m2e.out[1] */ + _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_48 = ctx->getSignalOffset(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_48 = ctx->getSignalSizes(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); + _offset_149 = _sigIdx_48 + 1*_sigSizes_48[1]; + ctx->getSignal(_compIdx_42, _offset_149, _sigValue_24); + _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_150 = _sigIdx_49 + 1*_sigSizes_49[1]; + ctx->setSignal(ctx->cIdx, _offset_150, _sigValue_24); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_const_11, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_const_12, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_const_13, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_const_14, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_const_15, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_const_16, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_const_17, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_const_18, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_const_19, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_const_20, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_const_21, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_num_66, 1); + ctx->freeBigInts(_const_22, 1); + ctx->freeBigInts(_tmp_33, 1); + ctx->freeBigInts(_const_23, 1); + ctx->freeBigInts(_tmp_34, 1); + ctx->freeBigInts(_tmp_35, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_tmp_36, 1); + ctx->freeBigInts(_const_24, 1); + ctx->freeBigInts(_tmp_37, 1); + ctx->freeBigInts(_tmp_38, 1); + ctx->freeBigInts(_const_25, 1); + ctx->freeBigInts(_tmp_39, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); +} + +/* +Segment +base[0]=0 +base[1]=0 +nWindows=14 +*/ +void Segment_a5bfbd6b0dd2a95a(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue = ctx->allocBigInts(1); + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _compIdx_2; + Circom_Sizes _compSizes; + int _offset_9; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_10; + int _compIdx_3; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_11; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_4; + Circom_Sizes _compSizes_1; + int _offset_13; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + int _offset_14; + int _compIdx_5; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_15; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_6; + Circom_Sizes _compSizes_2; + int _offset_19; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_21; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_24; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt j = ctx->allocBigInts(1); + int _cond; + int _compIdx_7; + Circom_Sizes _compSizes_3; + int _offset_29; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + PBigInt _v_13; + int _offset_31; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + PBigInt _v_15; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _offset_34; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _v_16; + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _v_17; + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "4", 10); + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond_1; + PBigInt _v_21; + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "0", 10); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _compIdx_8; + Circom_Sizes _compSizes_4; + PBigInt _v_22; + int _offset_44; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_45; + int _compIdx_9; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_46; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _compIdx_10; + Circom_Sizes _compSizes_5; + PBigInt _v_23; + int _offset_48; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_49; + int _compIdx_11; + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_50; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _compIdx_12; + Circom_Sizes _compSizes_6; + PBigInt _v_24; + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _offset_52; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_53; + int _compIdx_13; + Circom_Sizes _compSizes_7; + PBigInt _v_25; + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "1", 10); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _offset_55; + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_56; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _compIdx_14; + Circom_Sizes _compSizes_8; + PBigInt _v_26; + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_16 = ctx->allocBigInts(1); + int _offset_58; + int _sigIdx_18; + Circom_Sizes _sigSizes_18; + int _offset_59; + int _compIdx_15; + Circom_Sizes _compSizes_9; + PBigInt _v_27; + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "1", 10); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _offset_61; + int _sigIdx_19; + Circom_Sizes _sigSizes_19; + int _offset_62; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + int _compIdx_16; + Circom_Sizes _compSizes_10; + PBigInt _v_28; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _offset_64; + int _sigIdx_20; + Circom_Sizes _sigSizes_20; + int _offset_65; + int _compIdx_17; + Circom_Sizes _compSizes_11; + PBigInt _v_29; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "1", 10); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _offset_67; + int _sigIdx_21; + Circom_Sizes _sigSizes_21; + int _offset_68; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + int _compIdx_18; + Circom_Sizes _compSizes_12; + PBigInt _v_30; + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "1", 10); + PBigInt _tmp_20 = ctx->allocBigInts(1); + int _offset_70; + int _sigIdx_22; + Circom_Sizes _sigSizes_22; + int _offset_71; + int _compIdx_19; + Circom_Sizes _compSizes_13; + PBigInt _v_31; + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "1", 10); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _offset_73; + int _sigIdx_23; + Circom_Sizes _sigSizes_23; + int _offset_74; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + int _compIdx_20; + Circom_Sizes _compSizes_14; + PBigInt _v_32; + int _offset_76; + int _sigIdx_24; + Circom_Sizes _sigSizes_24; + int _offset_77; + int _compIdx_21; + Circom_Sizes _compSizes_15; + PBigInt _v_33; + PBigInt _const_11; + _const_11 = ctx->allocBigInts(1); + mpz_set_str(_const_11[0], "1", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + int _offset_79; + int _sigIdx_25; + Circom_Sizes _sigSizes_25; + int _offset_80; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + int _compIdx_22; + Circom_Sizes _compSizes_16; + PBigInt _v_34; + int _offset_82; + int _sigIdx_26; + Circom_Sizes _sigSizes_26; + int _offset_83; + int _compIdx_23; + Circom_Sizes _compSizes_17; + PBigInt _v_35; + PBigInt _const_12; + _const_12 = ctx->allocBigInts(1); + mpz_set_str(_const_12[0], "1", 10); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _offset_85; + int _sigIdx_27; + Circom_Sizes _sigSizes_27; + int _offset_86; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _v_36; + PBigInt _const_13; + _const_13 = ctx->allocBigInts(1); + mpz_set_str(_const_13[0], "1", 10); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _compIdx_24; + Circom_Sizes _compSizes_18; + PBigInt _v_37; + PBigInt _const_14; + _const_14 = ctx->allocBigInts(1); + mpz_set_str(_const_14[0], "1", 10); + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _offset_89; + int _sigIdx_28; + Circom_Sizes _sigSizes_28; + int _offset_90; + int _compIdx_25; + Circom_Sizes _compSizes_19; + int _offset_91; + int _sigIdx_29; + Circom_Sizes _sigSizes_29; + int _offset_92; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + int _compIdx_26; + Circom_Sizes _compSizes_20; + PBigInt _v_38; + PBigInt _const_15; + _const_15 = ctx->allocBigInts(1); + mpz_set_str(_const_15[0], "1", 10); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _offset_94; + int _sigIdx_30; + Circom_Sizes _sigSizes_30; + int _offset_95; + int _compIdx_27; + Circom_Sizes _compSizes_21; + int _offset_96; + int _sigIdx_31; + Circom_Sizes _sigSizes_31; + int _offset_97; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + int _compIdx_28; + Circom_Sizes _compSizes_22; + PBigInt _v_39; + PBigInt _const_16; + _const_16 = ctx->allocBigInts(1); + mpz_set_str(_const_16[0], "1", 10); + PBigInt _tmp_27 = ctx->allocBigInts(1); + int _offset_99; + int _sigIdx_32; + Circom_Sizes _sigSizes_32; + int _offset_100; + int _compIdx_29; + Circom_Sizes _compSizes_23; + PBigInt _v_40; + PBigInt _const_17; + _const_17 = ctx->allocBigInts(1); + mpz_set_str(_const_17[0], "2", 10); + PBigInt _tmp_28 = ctx->allocBigInts(1); + int _offset_102; + int _sigIdx_33; + Circom_Sizes _sigSizes_33; + int _offset_103; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + int _compIdx_30; + Circom_Sizes _compSizes_24; + PBigInt _v_41; + PBigInt _const_18; + _const_18 = ctx->allocBigInts(1); + mpz_set_str(_const_18[0], "1", 10); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _offset_105; + int _sigIdx_34; + Circom_Sizes _sigSizes_34; + int _offset_106; + int _compIdx_31; + Circom_Sizes _compSizes_25; + PBigInt _v_42; + PBigInt _const_19; + _const_19 = ctx->allocBigInts(1); + mpz_set_str(_const_19[0], "2", 10); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _offset_108; + int _sigIdx_35; + Circom_Sizes _sigSizes_35; + int _offset_109; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + int _compIdx_32; + Circom_Sizes _compSizes_26; + PBigInt _v_43; + PBigInt _const_20; + _const_20 = ctx->allocBigInts(1); + mpz_set_str(_const_20[0], "1", 10); + PBigInt _tmp_31 = ctx->allocBigInts(1); + int _offset_111; + int _sigIdx_36; + Circom_Sizes _sigSizes_36; + int _offset_112; + int _compIdx_33; + Circom_Sizes _compSizes_27; + PBigInt _v_44; + int _offset_114; + int _sigIdx_37; + Circom_Sizes _sigSizes_37; + int _offset_115; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + int _compIdx_34; + Circom_Sizes _compSizes_28; + PBigInt _v_45; + PBigInt _const_21; + _const_21 = ctx->allocBigInts(1); + mpz_set_str(_const_21[0], "1", 10); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _offset_117; + int _sigIdx_38; + Circom_Sizes _sigSizes_38; + int _offset_118; + int _compIdx_35; + Circom_Sizes _compSizes_29; + PBigInt _v_46; + int _offset_120; + int _sigIdx_39; + Circom_Sizes _sigSizes_39; + int _offset_121; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _num_66 = ctx->allocBigInts(1); + PBigInt _v_47; + PBigInt _const_22; + _const_22 = ctx->allocBigInts(1); + mpz_set_str(_const_22[0], "4", 10); + PBigInt _tmp_33 = ctx->allocBigInts(1); + int _cond_2; + int _compIdx_36; + Circom_Sizes _compSizes_30; + PBigInt _v_48; + int _offset_125; + int _sigIdx_40; + Circom_Sizes _sigSizes_40; + PBigInt _v_49; + int _offset_127; + int _sigIdx_41; + Circom_Sizes _sigSizes_41; + PBigInt _v_50; + PBigInt _const_23; + _const_23 = ctx->allocBigInts(1); + mpz_set_str(_const_23[0], "4", 10); + PBigInt _tmp_34 = ctx->allocBigInts(1); + PBigInt _v_51; + PBigInt _tmp_35 = ctx->allocBigInts(1); + int _offset_130; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _v_52; + PBigInt _tmp_36 = ctx->allocBigInts(1); + PBigInt _v_53; + PBigInt _const_24; + _const_24 = ctx->allocBigInts(1); + mpz_set_str(_const_24[0], "4", 10); + PBigInt _tmp_37 = ctx->allocBigInts(1); + PBigInt _v_54; + PBigInt _tmp_38 = ctx->allocBigInts(1); + PBigInt _v_55; + PBigInt _const_25; + _const_25 = ctx->allocBigInts(1); + mpz_set_str(_const_25[0], "14", 10); + PBigInt _tmp_39 = ctx->allocBigInts(1); + int _compIdx_37; + int _sigIdx_42; + Circom_Sizes _sigSizes_42; + int _offset_139; + int _compIdx_38; + Circom_Sizes _compSizes_31; + int _offset_141; + int _sigIdx_43; + Circom_Sizes _sigSizes_43; + int _offset_142; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + int _compIdx_39; + int _sigIdx_44; + Circom_Sizes _sigSizes_44; + int _offset_143; + int _compIdx_40; + Circom_Sizes _compSizes_32; + int _offset_145; + int _sigIdx_45; + Circom_Sizes _sigSizes_45; + int _offset_146; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + int _compIdx_41; + int _sigIdx_46; + Circom_Sizes _sigSizes_46; + int _offset_147; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _sigIdx_47; + Circom_Sizes _sigSizes_47; + int _offset_148; + int _compIdx_42; + int _sigIdx_48; + Circom_Sizes _sigSizes_48; + int _offset_149; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + int _sigIdx_49; + Circom_Sizes _sigSizes_49; + int _offset_150; + + + /* signal input in[nWindows*4] */ + + /* signal input base[2] */ + + /* signal output out[2] */ + + /* var i */ + + /* var j */ + + /* component e2m = Edwards2Montgomery() */ + + /* e2m.in[0] <== base[0] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0x08b73807b55c4bbeLL /* in */); + _offset = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); + ctx->setSignal(_compIdx, _offset, _sigValue); + + /* e2m.in[1] <== base[1] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); + _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); + + /* component windows[nWindows] */ + + /* component doublers1[nWindows-1] */ + + /* component doublers2[nWindows-1] */ + + /* component adders[nWindows-1] */ + + /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_9 = _compIdx_2 + 0*_compSizes[1]; + _sigIdx_4 = ctx->getSignalOffset(_offset_9, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_4 = ctx->getSignalSizes(_offset_9, 0x9a7ce19baa54c278LL /* base */); + _offset_10 = _sigIdx_4 + 0*_sigSizes_4[1]; + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); + _offset_11 = _sigIdx_5 + 0*_sigSizes_5[1]; + ctx->getSignal(_compIdx_3, _offset_11, _sigValue_2); + ctx->setSignal(_offset_9, _offset_10, _sigValue_2); + + /* windows[i].base[1] <== e2m.out[1] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_13 = _compIdx_4 + 0*_compSizes_1[1]; + _sigIdx_6 = ctx->getSignalOffset(_offset_13, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_6 = ctx->getSignalSizes(_offset_13, 0x9a7ce19baa54c278LL /* base */); + _offset_14 = _sigIdx_6 + 1*_sigSizes_6[1]; + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_7 = ctx->getSignalOffset(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); + _offset_15 = _sigIdx_7 + 1*_sigSizes_7[1]; + ctx->getSignal(_compIdx_5, _offset_15, _sigValue_3); + ctx->setSignal(_offset_13, _offset_14, _sigValue_3); + + /* for (j=0,j<4,j++) */ + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_19 = _compIdx_6 + 0*_compSizes_2[1]; + _sigIdx_8 = ctx->getSignalOffset(_offset_19, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(_offset_19, 0x08b73807b55c4bbeLL /* in */); + _offset_21 = _sigIdx_8 + 0*_sigSizes_8[1]; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_24 = _sigIdx_9 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_4); + ctx->setSignal(_offset_19, _offset_21, _sigValue_4); + mpz_set_str(_tmp_6[0], "1", 10); + mpz_set_str(j[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_6); + while (_cond) { + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_29 = _compIdx_7 + 0*_compSizes_3[1]; + _sigIdx_10 = ctx->getSignalOffset(_offset_29, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(_offset_29, 0x08b73807b55c4bbeLL /* in */); + _v_13 = j + 0; + _offset_31 = _sigIdx_10 + ctx->field->toInt(_v_13)*_sigSizes_10[1]; + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_15 = j + 0; + ctx->field->add(_tmp_8,_const,_v_15); + _offset_34 = _sigIdx_11 + ctx->field->toInt(_tmp_8)*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_34, _sigValue_5); + ctx->setSignal(_offset_29, _offset_31, _sigValue_5); + _v_16 = j + 0; + ctx->field->add(_tmp_9, _v_16, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_9, 1); + _v_17 = j + 0; + ctx->field->lt(_tmp_10,_v_17,_const_1); + _cond = ctx->field->isTrue(_tmp_10); + } + mpz_set_str(_tmp_12[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond_1 = ctx->field->isTrue(_tmp_12); + while (_cond_1) { + + /* windows[i] = Window4() */ + + /* if (i==0) */ + _v_21 = i + 0; + ctx->field->eq(_tmp_13,_v_21,_const_2); + if (ctx->field->isTrue(_tmp_13)) { + + /* windows[i].base[0] <== e2m.out[0] */ + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_22 = i + 0; + _offset_44 = _compIdx_8 + ctx->field->toInt(_v_22)*_compSizes_4[1]; + _sigIdx_12 = ctx->getSignalOffset(_offset_44, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_12 = ctx->getSignalSizes(_offset_44, 0x9a7ce19baa54c278LL /* base */); + _offset_45 = _sigIdx_12 + 0*_sigSizes_12[1]; + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_13 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); + _offset_46 = _sigIdx_13 + 0*_sigSizes_13[1]; + ctx->getSignal(_compIdx_9, _offset_46, _sigValue_6); + ctx->setSignal(_offset_44, _offset_45, _sigValue_6); + + /* windows[i].base[1] <== e2m.out[1] */ + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_23 = i + 0; + _offset_48 = _compIdx_10 + ctx->field->toInt(_v_23)*_compSizes_5[1]; + _sigIdx_14 = ctx->getSignalOffset(_offset_48, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_14 = ctx->getSignalSizes(_offset_48, 0x9a7ce19baa54c278LL /* base */); + _offset_49 = _sigIdx_14 + 1*_sigSizes_14[1]; + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); + _sigIdx_15 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); + _offset_50 = _sigIdx_15 + 1*_sigSizes_15[1]; + ctx->getSignal(_compIdx_11, _offset_50, _sigValue_7); + ctx->setSignal(_offset_48, _offset_49, _sigValue_7); + } else { + + /* doublers1[i-1] = MontgomeryDouble() */ + + /* doublers2[i-1] = MontgomeryDouble() */ + + /* doublers1[i-1].in[0] <== windows[i-1].out8[0] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_24 = i + 0; + ctx->field->sub(_tmp_14,_v_24,_const_3); + _offset_52 = _compIdx_12 + ctx->field->toInt(_tmp_14)*_compSizes_6[1]; + _sigIdx_16 = ctx->getSignalOffset(_offset_52, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_16 = ctx->getSignalSizes(_offset_52, 0x08b73807b55c4bbeLL /* in */); + _offset_53 = _sigIdx_16 + 0*_sigSizes_16[1]; + _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_25 = i + 0; + ctx->field->sub(_tmp_15,_v_25,_const_4); + _offset_55 = _compIdx_13 + ctx->field->toInt(_tmp_15)*_compSizes_7[1]; + _sigIdx_17 = ctx->getSignalOffset(_offset_55, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_17 = ctx->getSignalSizes(_offset_55, 0xdb8c52b452220f25LL /* out8 */); + _offset_56 = _sigIdx_17 + 0*_sigSizes_17[1]; + ctx->getSignal(_offset_55, _offset_56, _sigValue_8); + ctx->setSignal(_offset_52, _offset_53, _sigValue_8); + + /* doublers1[i-1].in[1] <== windows[i-1].out8[1] */ + _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_26 = i + 0; + ctx->field->sub(_tmp_16,_v_26,_const_5); + _offset_58 = _compIdx_14 + ctx->field->toInt(_tmp_16)*_compSizes_8[1]; + _sigIdx_18 = ctx->getSignalOffset(_offset_58, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_18 = ctx->getSignalSizes(_offset_58, 0x08b73807b55c4bbeLL /* in */); + _offset_59 = _sigIdx_18 + 1*_sigSizes_18[1]; + _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_27 = i + 0; + ctx->field->sub(_tmp_17,_v_27,_const_6); + _offset_61 = _compIdx_15 + ctx->field->toInt(_tmp_17)*_compSizes_9[1]; + _sigIdx_19 = ctx->getSignalOffset(_offset_61, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_19 = ctx->getSignalSizes(_offset_61, 0xdb8c52b452220f25LL /* out8 */); + _offset_62 = _sigIdx_19 + 1*_sigSizes_19[1]; + ctx->getSignal(_offset_61, _offset_62, _sigValue_9); + ctx->setSignal(_offset_58, _offset_59, _sigValue_9); + + /* doublers2[i-1].in[0] <== doublers1[i-1].out[0] */ + _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_28 = i + 0; + ctx->field->sub(_tmp_18,_v_28,_const_7); + _offset_64 = _compIdx_16 + ctx->field->toInt(_tmp_18)*_compSizes_10[1]; + _sigIdx_20 = ctx->getSignalOffset(_offset_64, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_20 = ctx->getSignalSizes(_offset_64, 0x08b73807b55c4bbeLL /* in */); + _offset_65 = _sigIdx_20 + 0*_sigSizes_20[1]; + _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_29 = i + 0; + ctx->field->sub(_tmp_19,_v_29,_const_8); + _offset_67 = _compIdx_17 + ctx->field->toInt(_tmp_19)*_compSizes_11[1]; + _sigIdx_21 = ctx->getSignalOffset(_offset_67, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_21 = ctx->getSignalSizes(_offset_67, 0x19f79b1921bbcfffLL /* out */); + _offset_68 = _sigIdx_21 + 0*_sigSizes_21[1]; + ctx->getSignal(_offset_67, _offset_68, _sigValue_10); + ctx->setSignal(_offset_64, _offset_65, _sigValue_10); + + /* doublers2[i-1].in[1] <== doublers1[i-1].out[1] */ + _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_30 = i + 0; + ctx->field->sub(_tmp_20,_v_30,_const_9); + _offset_70 = _compIdx_18 + ctx->field->toInt(_tmp_20)*_compSizes_12[1]; + _sigIdx_22 = ctx->getSignalOffset(_offset_70, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_22 = ctx->getSignalSizes(_offset_70, 0x08b73807b55c4bbeLL /* in */); + _offset_71 = _sigIdx_22 + 1*_sigSizes_22[1]; + _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); + _v_31 = i + 0; + ctx->field->sub(_tmp_21,_v_31,_const_10); + _offset_73 = _compIdx_19 + ctx->field->toInt(_tmp_21)*_compSizes_13[1]; + _sigIdx_23 = ctx->getSignalOffset(_offset_73, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_23 = ctx->getSignalSizes(_offset_73, 0x19f79b1921bbcfffLL /* out */); + _offset_74 = _sigIdx_23 + 1*_sigSizes_23[1]; + ctx->getSignal(_offset_73, _offset_74, _sigValue_11); + ctx->setSignal(_offset_70, _offset_71, _sigValue_11); + + /* windows[i].base[0] <== doublers2[i-1].out[0] */ + _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_32 = i + 0; + _offset_76 = _compIdx_20 + ctx->field->toInt(_v_32)*_compSizes_14[1]; + _sigIdx_24 = ctx->getSignalOffset(_offset_76, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_24 = ctx->getSignalSizes(_offset_76, 0x9a7ce19baa54c278LL /* base */); + _offset_77 = _sigIdx_24 + 0*_sigSizes_24[1]; + _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_33 = i + 0; + ctx->field->sub(_tmp_22,_v_33,_const_11); + _offset_79 = _compIdx_21 + ctx->field->toInt(_tmp_22)*_compSizes_15[1]; + _sigIdx_25 = ctx->getSignalOffset(_offset_79, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_25 = ctx->getSignalSizes(_offset_79, 0x19f79b1921bbcfffLL /* out */); + _offset_80 = _sigIdx_25 + 0*_sigSizes_25[1]; + ctx->getSignal(_offset_79, _offset_80, _sigValue_12); + ctx->setSignal(_offset_76, _offset_77, _sigValue_12); + + /* windows[i].base[1] <== doublers2[i-1].out[1] */ + _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_34 = i + 0; + _offset_82 = _compIdx_22 + ctx->field->toInt(_v_34)*_compSizes_16[1]; + _sigIdx_26 = ctx->getSignalOffset(_offset_82, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_26 = ctx->getSignalSizes(_offset_82, 0x9a7ce19baa54c278LL /* base */); + _offset_83 = _sigIdx_26 + 1*_sigSizes_26[1]; + _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); + _v_35 = i + 0; + ctx->field->sub(_tmp_23,_v_35,_const_12); + _offset_85 = _compIdx_23 + ctx->field->toInt(_tmp_23)*_compSizes_17[1]; + _sigIdx_27 = ctx->getSignalOffset(_offset_85, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_27 = ctx->getSignalSizes(_offset_85, 0x19f79b1921bbcfffLL /* out */); + _offset_86 = _sigIdx_27 + 1*_sigSizes_27[1]; + ctx->getSignal(_offset_85, _offset_86, _sigValue_13); + ctx->setSignal(_offset_82, _offset_83, _sigValue_13); + + /* adders[i-1] = MontgomeryAdd() */ + + /* if (i==1) */ + _v_36 = i + 0; + ctx->field->eq(_tmp_24,_v_36,_const_13); + if (ctx->field->isTrue(_tmp_24)) { + + /* adders[i-1].in1[0] <== windows[0].out[0] */ + _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_37 = i + 0; + ctx->field->sub(_tmp_25,_v_37,_const_14); + _offset_89 = _compIdx_24 + ctx->field->toInt(_tmp_25)*_compSizes_18[1]; + _sigIdx_28 = ctx->getSignalOffset(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_28 = ctx->getSignalSizes(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_90 = _sigIdx_28 + 0*_sigSizes_28[1]; + _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_91 = _compIdx_25 + 0*_compSizes_19[1]; + _sigIdx_29 = ctx->getSignalOffset(_offset_91, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_29 = ctx->getSignalSizes(_offset_91, 0x19f79b1921bbcfffLL /* out */); + _offset_92 = _sigIdx_29 + 0*_sigSizes_29[1]; + ctx->getSignal(_offset_91, _offset_92, _sigValue_14); + ctx->setSignal(_offset_89, _offset_90, _sigValue_14); + + /* adders[i-1].in1[1] <== windows[0].out[1] */ + _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_38 = i + 0; + ctx->field->sub(_tmp_26,_v_38,_const_15); + _offset_94 = _compIdx_26 + ctx->field->toInt(_tmp_26)*_compSizes_20[1]; + _sigIdx_30 = ctx->getSignalOffset(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_30 = ctx->getSignalSizes(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_95 = _sigIdx_30 + 1*_sigSizes_30[1]; + _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _offset_96 = _compIdx_27 + 0*_compSizes_21[1]; + _sigIdx_31 = ctx->getSignalOffset(_offset_96, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_31 = ctx->getSignalSizes(_offset_96, 0x19f79b1921bbcfffLL /* out */); + _offset_97 = _sigIdx_31 + 1*_sigSizes_31[1]; + ctx->getSignal(_offset_96, _offset_97, _sigValue_15); + ctx->setSignal(_offset_94, _offset_95, _sigValue_15); + } else { + + /* adders[i-1].in1[0] <== adders[i-2].out[0] */ + _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_39 = i + 0; + ctx->field->sub(_tmp_27,_v_39,_const_16); + _offset_99 = _compIdx_28 + ctx->field->toInt(_tmp_27)*_compSizes_22[1]; + _sigIdx_32 = ctx->getSignalOffset(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_32 = ctx->getSignalSizes(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_100 = _sigIdx_32 + 0*_sigSizes_32[1]; + _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_40 = i + 0; + ctx->field->sub(_tmp_28,_v_40,_const_17); + _offset_102 = _compIdx_29 + ctx->field->toInt(_tmp_28)*_compSizes_23[1]; + _sigIdx_33 = ctx->getSignalOffset(_offset_102, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_33 = ctx->getSignalSizes(_offset_102, 0x19f79b1921bbcfffLL /* out */); + _offset_103 = _sigIdx_33 + 0*_sigSizes_33[1]; + ctx->getSignal(_offset_102, _offset_103, _sigValue_16); + ctx->setSignal(_offset_99, _offset_100, _sigValue_16); + + /* adders[i-1].in1[1] <== adders[i-2].out[1] */ + _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_41 = i + 0; + ctx->field->sub(_tmp_29,_v_41,_const_18); + _offset_105 = _compIdx_30 + ctx->field->toInt(_tmp_29)*_compSizes_24[1]; + _sigIdx_34 = ctx->getSignalOffset(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_34 = ctx->getSignalSizes(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_106 = _sigIdx_34 + 1*_sigSizes_34[1]; + _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_42 = i + 0; + ctx->field->sub(_tmp_30,_v_42,_const_19); + _offset_108 = _compIdx_31 + ctx->field->toInt(_tmp_30)*_compSizes_25[1]; + _sigIdx_35 = ctx->getSignalOffset(_offset_108, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_35 = ctx->getSignalSizes(_offset_108, 0x19f79b1921bbcfffLL /* out */); + _offset_109 = _sigIdx_35 + 1*_sigSizes_35[1]; + ctx->getSignal(_offset_108, _offset_109, _sigValue_17); + ctx->setSignal(_offset_105, _offset_106, _sigValue_17); + } + + /* adders[i-1].in2[0] <== windows[i].out[0] */ + _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_43 = i + 0; + ctx->field->sub(_tmp_31,_v_43,_const_20); + _offset_111 = _compIdx_32 + ctx->field->toInt(_tmp_31)*_compSizes_26[1]; + _sigIdx_36 = ctx->getSignalOffset(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_36 = ctx->getSignalSizes(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_112 = _sigIdx_36 + 0*_sigSizes_36[1]; + _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_27 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_44 = i + 0; + _offset_114 = _compIdx_33 + ctx->field->toInt(_v_44)*_compSizes_27[1]; + _sigIdx_37 = ctx->getSignalOffset(_offset_114, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_37 = ctx->getSignalSizes(_offset_114, 0x19f79b1921bbcfffLL /* out */); + _offset_115 = _sigIdx_37 + 0*_sigSizes_37[1]; + ctx->getSignal(_offset_114, _offset_115, _sigValue_18); + ctx->setSignal(_offset_111, _offset_112, _sigValue_18); + + /* adders[i-1].in2[1] <== windows[i].out[1] */ + _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_28 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _v_45 = i + 0; + ctx->field->sub(_tmp_32,_v_45,_const_21); + _offset_117 = _compIdx_34 + ctx->field->toInt(_tmp_32)*_compSizes_28[1]; + _sigIdx_38 = ctx->getSignalOffset(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_38 = ctx->getSignalSizes(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_118 = _sigIdx_38 + 1*_sigSizes_38[1]; + _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_29 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_46 = i + 0; + _offset_120 = _compIdx_35 + ctx->field->toInt(_v_46)*_compSizes_29[1]; + _sigIdx_39 = ctx->getSignalOffset(_offset_120, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_39 = ctx->getSignalSizes(_offset_120, 0x19f79b1921bbcfffLL /* out */); + _offset_121 = _sigIdx_39 + 1*_sigSizes_39[1]; + ctx->getSignal(_offset_120, _offset_121, _sigValue_19); + ctx->setSignal(_offset_117, _offset_118, _sigValue_19); + } + + /* for (j=0,j<4,j++) */ + mpz_set_str(_num_66[0], "0", 10); + ctx->field->copyn(j, _num_66, 1); + _v_47 = j + 0; + ctx->field->lt(_tmp_33,_v_47,_const_22); + _cond_2 = ctx->field->isTrue(_tmp_33); + while (_cond_2) { + + /* windows[i].in[j] <== in[4*i+j] */ + _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _compSizes_30 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); + _v_48 = i + 0; + _offset_125 = _compIdx_36 + ctx->field->toInt(_v_48)*_compSizes_30[1]; + _sigIdx_40 = ctx->getSignalOffset(_offset_125, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_40 = ctx->getSignalSizes(_offset_125, 0x08b73807b55c4bbeLL /* in */); + _v_49 = j + 0; + _offset_127 = _sigIdx_40 + ctx->field->toInt(_v_49)*_sigSizes_40[1]; + _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _v_50 = i + 0; + ctx->field->mul(_tmp_34,_const_23,_v_50); + _v_51 = j + 0; + ctx->field->add(_tmp_35,_tmp_34,_v_51); + _offset_130 = _sigIdx_41 + ctx->field->toInt(_tmp_35)*_sigSizes_41[1]; + ctx->getSignal(ctx->cIdx, _offset_130, _sigValue_20); + ctx->setSignal(_offset_125, _offset_127, _sigValue_20); + _v_52 = j + 0; + ctx->field->add(_tmp_36, _v_52, &(ctx->field->one)); + ctx->field->copyn(j, _tmp_36, 1); + _v_53 = j + 0; + ctx->field->lt(_tmp_37,_v_53,_const_24); + _cond_2 = ctx->field->isTrue(_tmp_37); + } + _v_54 = i + 0; + ctx->field->add(_tmp_38, _v_54, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_38, 1); + _v_55 = i + 0; + ctx->field->lt(_tmp_39,_v_55,_const_25); + _cond_1 = ctx->field->isTrue(_tmp_39); + } + + /* component m2e = Montgomery2Edwards() */ + + /* if (nWindows > 1) */ + + /* m2e.in[0] <== adders[nWindows-2].out[0] */ + _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_42 = ctx->getSignalOffset(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_42 = ctx->getSignalSizes(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); + _offset_139 = _sigIdx_42 + 0*_sigSizes_42[1]; + _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_31 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_141 = _compIdx_38 + 12*_compSizes_31[1]; + _sigIdx_43 = ctx->getSignalOffset(_offset_141, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_43 = ctx->getSignalSizes(_offset_141, 0x19f79b1921bbcfffLL /* out */); + _offset_142 = _sigIdx_43 + 0*_sigSizes_43[1]; + ctx->getSignal(_offset_141, _offset_142, _sigValue_21); + ctx->setSignal(_compIdx_37, _offset_139, _sigValue_21); + + /* m2e.in[1] <== adders[nWindows-2].out[1] */ + _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_44 = ctx->getSignalOffset(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_44 = ctx->getSignalSizes(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); + _offset_143 = _sigIdx_44 + 1*_sigSizes_44[1]; + _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _compSizes_32 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); + _offset_145 = _compIdx_40 + 12*_compSizes_32[1]; + _sigIdx_45 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_45 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); + _offset_146 = _sigIdx_45 + 1*_sigSizes_45[1]; + ctx->getSignal(_offset_145, _offset_146, _sigValue_22); + ctx->setSignal(_compIdx_39, _offset_143, _sigValue_22); + + /* out[0] <== m2e.out[0] */ + _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_46 = ctx->getSignalOffset(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_46 = ctx->getSignalSizes(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); + _offset_147 = _sigIdx_46 + 0*_sigSizes_46[1]; + ctx->getSignal(_compIdx_41, _offset_147, _sigValue_23); + _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_148 = _sigIdx_47 + 0*_sigSizes_47[1]; + ctx->setSignal(ctx->cIdx, _offset_148, _sigValue_23); + + /* out[1] <== m2e.out[1] */ + _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); + _sigIdx_48 = ctx->getSignalOffset(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_48 = ctx->getSignalSizes(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); + _offset_149 = _sigIdx_48 + 1*_sigSizes_48[1]; + ctx->getSignal(_compIdx_42, _offset_149, _sigValue_24); + _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_150 = _sigIdx_49 + 1*_sigSizes_49[1]; + ctx->setSignal(ctx->cIdx, _offset_150, _sigValue_24); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(j, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_const_11, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_const_12, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_const_13, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_const_14, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_const_15, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_const_16, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_const_17, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_const_18, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_const_19, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_const_20, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_const_21, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_num_66, 1); + ctx->freeBigInts(_const_22, 1); + ctx->freeBigInts(_tmp_33, 1); + ctx->freeBigInts(_const_23, 1); + ctx->freeBigInts(_tmp_34, 1); + ctx->freeBigInts(_tmp_35, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_tmp_36, 1); + ctx->freeBigInts(_const_24, 1); + ctx->freeBigInts(_tmp_37, 1); + ctx->freeBigInts(_tmp_38, 1); + ctx->freeBigInts(_const_25, 1); + ctx->freeBigInts(_tmp_39, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); +} + +/* +Edwards2Montgomery +*/ +void Edwards2Montgomery_1322d6544b8b5e68(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "1", 10); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "1", 10); + PBigInt _tmp_1 = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_4; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_5; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + int _offset_6; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_7; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_8; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_9; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_10; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_11; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + + + /* signal input in[2] */ + + /* signal output out[2] */ + + /* out[0] <-- (1 + in[1]) / (1 - in[1]) */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset = _sigIdx + 1*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset, _sigValue); + ctx->field->add(_tmp,_const,_sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_1 = _sigIdx_1 + 1*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); + ctx->field->sub(_tmp_1,_const_1,_sigValue_1); + ctx->field->div(_tmp_2,_tmp,_tmp_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_2 = _sigIdx_2 + 0*_sigSizes_2[1]; + ctx->setSignal(ctx->cIdx, _offset_2, _tmp_2); + + /* out[1] <-- out[0] / in[0] */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_3 = _sigIdx_3 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_4 = _sigIdx_4 + 0*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_3); + ctx->field->div(_tmp_3,_sigValue_2,_sigValue_3); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_5 = _sigIdx_5 + 1*_sigSizes_5[1]; + ctx->setSignal(ctx->cIdx, _offset_5, _tmp_3); + + /* out[0] * (1-in[1]) === (1 + in[1]) */ + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_4); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_7 = _sigIdx_7 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_5); + ctx->field->sub(_tmp_4,_const_2,_sigValue_5); + ctx->field->mul(_tmp_5,_sigValue_4,_tmp_4); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_8 = _sigIdx_8 + 1*_sigSizes_8[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_6); + ctx->field->add(_tmp_6,_const_3,_sigValue_6); + ctx->checkConstraint(_tmp_5, _tmp_6, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:37:4"); + /* out[1] * in[0] === out[0] */ + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_7); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_8); + ctx->field->mul(_tmp_7,_sigValue_7,_sigValue_8); + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_9); + ctx->checkConstraint(_tmp_7, _sigValue_9, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:38:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_9, 1); +} + +/* +Window4 +*/ +void Window4_2d34837f67f5f72b(Circom_CalcWit *ctx) { + // Header + int _compIdx; + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue = ctx->allocBigInts(1); + int _compIdx_1; + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _compIdx_2; + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_4; + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_5; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _compIdx_3; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + int _offset_6; + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_7; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + int _compIdx_4; + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_8; + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_9; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _compIdx_5; + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_10; + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_11; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _compIdx_6; + int _sigIdx_12; + Circom_Sizes _sigSizes_12; + int _offset_12; + int _sigIdx_13; + Circom_Sizes _sigSizes_13; + int _offset_13; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _compIdx_7; + int _sigIdx_14; + Circom_Sizes _sigSizes_14; + int _offset_14; + int _compIdx_8; + int _sigIdx_15; + Circom_Sizes _sigSizes_15; + int _offset_15; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _compIdx_9; + int _sigIdx_16; + Circom_Sizes _sigSizes_16; + int _offset_16; + int _compIdx_10; + int _sigIdx_17; + Circom_Sizes _sigSizes_17; + int _offset_17; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _compIdx_11; + int _sigIdx_18; + Circom_Sizes _sigSizes_18; + int _offset_18; + int _sigIdx_19; + Circom_Sizes _sigSizes_19; + int _offset_19; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + int _compIdx_12; + int _sigIdx_20; + Circom_Sizes _sigSizes_20; + int _offset_20; + int _sigIdx_21; + Circom_Sizes _sigSizes_21; + int _offset_21; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + int _compIdx_13; + int _sigIdx_22; + Circom_Sizes _sigSizes_22; + int _offset_22; + int _compIdx_14; + int _sigIdx_23; + Circom_Sizes _sigSizes_23; + int _offset_23; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + int _compIdx_15; + int _sigIdx_24; + Circom_Sizes _sigSizes_24; + int _offset_24; + int _compIdx_16; + int _sigIdx_25; + Circom_Sizes _sigSizes_25; + int _offset_25; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + int _compIdx_17; + int _sigIdx_26; + Circom_Sizes _sigSizes_26; + int _offset_26; + int _compIdx_18; + int _sigIdx_27; + Circom_Sizes _sigSizes_27; + int _offset_27; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + int _compIdx_19; + int _sigIdx_28; + Circom_Sizes _sigSizes_28; + int _offset_28; + int _compIdx_20; + int _sigIdx_29; + Circom_Sizes _sigSizes_29; + int _offset_29; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + int _compIdx_21; + int _sigIdx_30; + Circom_Sizes _sigSizes_30; + int _offset_30; + int _sigIdx_31; + Circom_Sizes _sigSizes_31; + int _offset_31; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + int _compIdx_22; + int _sigIdx_32; + Circom_Sizes _sigSizes_32; + int _offset_32; + int _sigIdx_33; + Circom_Sizes _sigSizes_33; + int _offset_33; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + int _compIdx_23; + int _sigIdx_34; + Circom_Sizes _sigSizes_34; + int _offset_34; + int _compIdx_24; + int _sigIdx_35; + Circom_Sizes _sigSizes_35; + int _offset_35; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + int _compIdx_25; + int _sigIdx_36; + Circom_Sizes _sigSizes_36; + int _offset_36; + int _compIdx_26; + int _sigIdx_37; + Circom_Sizes _sigSizes_37; + int _offset_37; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + int _compIdx_27; + int _sigIdx_38; + Circom_Sizes _sigSizes_38; + int _offset_38; + int _compIdx_28; + int _sigIdx_39; + Circom_Sizes _sigSizes_39; + int _offset_39; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + int _compIdx_29; + int _sigIdx_40; + Circom_Sizes _sigSizes_40; + int _offset_40; + int _compIdx_30; + int _sigIdx_41; + Circom_Sizes _sigSizes_41; + int _offset_41; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + int _compIdx_31; + int _sigIdx_42; + Circom_Sizes _sigSizes_42; + int _offset_42; + int _sigIdx_43; + Circom_Sizes _sigSizes_43; + int _offset_43; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + int _compIdx_32; + int _sigIdx_44; + Circom_Sizes _sigSizes_44; + int _offset_44; + int _sigIdx_45; + Circom_Sizes _sigSizes_45; + int _offset_45; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + int _compIdx_33; + int _sigIdx_46; + Circom_Sizes _sigSizes_46; + int _offset_46; + int _compIdx_34; + int _sigIdx_47; + Circom_Sizes _sigSizes_47; + int _offset_47; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _compIdx_35; + int _sigIdx_48; + Circom_Sizes _sigSizes_48; + int _offset_48; + int _compIdx_36; + int _sigIdx_49; + Circom_Sizes _sigSizes_49; + int _offset_49; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + int _compIdx_37; + int _sigIdx_50; + Circom_Sizes _sigSizes_50; + int _offset_50; + int _compIdx_38; + int _sigIdx_51; + Circom_Sizes _sigSizes_51; + int _offset_51; + PBigInt _sigValue_25 = ctx->allocBigInts(1); + int _compIdx_39; + int _sigIdx_52; + Circom_Sizes _sigSizes_52; + int _offset_52; + int _compIdx_40; + int _sigIdx_53; + Circom_Sizes _sigSizes_53; + int _offset_53; + PBigInt _sigValue_26 = ctx->allocBigInts(1); + int _compIdx_41; + int _sigIdx_54; + Circom_Sizes _sigSizes_54; + int _offset_54; + int _sigIdx_55; + Circom_Sizes _sigSizes_55; + int _offset_55; + PBigInt _sigValue_27 = ctx->allocBigInts(1); + int _compIdx_42; + int _sigIdx_56; + Circom_Sizes _sigSizes_56; + int _offset_56; + int _sigIdx_57; + Circom_Sizes _sigSizes_57; + int _offset_57; + PBigInt _sigValue_28 = ctx->allocBigInts(1); + int _compIdx_43; + int _sigIdx_58; + Circom_Sizes _sigSizes_58; + int _offset_58; + int _compIdx_44; + int _sigIdx_59; + Circom_Sizes _sigSizes_59; + int _offset_59; + PBigInt _sigValue_29 = ctx->allocBigInts(1); + int _compIdx_45; + int _sigIdx_60; + Circom_Sizes _sigSizes_60; + int _offset_60; + int _compIdx_46; + int _sigIdx_61; + Circom_Sizes _sigSizes_61; + int _offset_61; + PBigInt _sigValue_30 = ctx->allocBigInts(1); + int _compIdx_47; + int _sigIdx_62; + Circom_Sizes _sigSizes_62; + int _offset_62; + int _compIdx_48; + int _sigIdx_63; + Circom_Sizes _sigSizes_63; + int _offset_63; + PBigInt _sigValue_31 = ctx->allocBigInts(1); + int _compIdx_49; + int _sigIdx_64; + Circom_Sizes _sigSizes_64; + int _offset_64; + int _compIdx_50; + int _sigIdx_65; + Circom_Sizes _sigSizes_65; + int _offset_65; + PBigInt _sigValue_32 = ctx->allocBigInts(1); + int _compIdx_51; + int _sigIdx_66; + Circom_Sizes _sigSizes_66; + int _offset_66; + int _sigIdx_67; + Circom_Sizes _sigSizes_67; + int _offset_67; + PBigInt _sigValue_33 = ctx->allocBigInts(1); + int _compIdx_52; + int _sigIdx_68; + Circom_Sizes _sigSizes_68; + int _offset_68; + int _sigIdx_69; + Circom_Sizes _sigSizes_69; + int _offset_69; + PBigInt _sigValue_34 = ctx->allocBigInts(1); + int _compIdx_53; + int _sigIdx_70; + Circom_Sizes _sigSizes_70; + int _offset_70; + int _compIdx_54; + int _sigIdx_71; + Circom_Sizes _sigSizes_71; + int _offset_71; + PBigInt _sigValue_35 = ctx->allocBigInts(1); + int _compIdx_55; + int _sigIdx_72; + Circom_Sizes _sigSizes_72; + int _offset_72; + int _compIdx_56; + int _sigIdx_73; + Circom_Sizes _sigSizes_73; + int _offset_73; + PBigInt _sigValue_36 = ctx->allocBigInts(1); + int _compIdx_57; + int _sigIdx_74; + Circom_Sizes _sigSizes_74; + int _offset_74; + int _compIdx_58; + int _sigIdx_75; + Circom_Sizes _sigSizes_75; + int _offset_75; + PBigInt _sigValue_37 = ctx->allocBigInts(1); + int _compIdx_59; + int _sigIdx_76; + Circom_Sizes _sigSizes_76; + int _offset_76; + int _compIdx_60; + int _sigIdx_77; + Circom_Sizes _sigSizes_77; + int _offset_77; + PBigInt _sigValue_38 = ctx->allocBigInts(1); + int _compIdx_61; + int _sigIdx_78; + Circom_Sizes _sigSizes_78; + int _offset_78; + int _sigIdx_79; + Circom_Sizes _sigSizes_79; + int _offset_79; + PBigInt _sigValue_39 = ctx->allocBigInts(1); + int _compIdx_62; + int _sigIdx_80; + Circom_Sizes _sigSizes_80; + int _offset_80; + int _sigIdx_81; + Circom_Sizes _sigSizes_81; + int _offset_81; + PBigInt _sigValue_40 = ctx->allocBigInts(1); + int _compIdx_63; + int _sigIdx_82; + Circom_Sizes _sigSizes_82; + int _offset_82; + int _compIdx_64; + int _sigIdx_83; + Circom_Sizes _sigSizes_83; + int _offset_83; + PBigInt _sigValue_41 = ctx->allocBigInts(1); + int _compIdx_65; + int _sigIdx_84; + Circom_Sizes _sigSizes_84; + int _offset_84; + int _compIdx_66; + int _sigIdx_85; + Circom_Sizes _sigSizes_85; + int _offset_85; + PBigInt _sigValue_42 = ctx->allocBigInts(1); + int _compIdx_67; + int _sigIdx_86; + Circom_Sizes _sigSizes_86; + int _offset_86; + int _compIdx_68; + int _sigIdx_87; + Circom_Sizes _sigSizes_87; + int _offset_87; + PBigInt _sigValue_43 = ctx->allocBigInts(1); + int _compIdx_69; + int _sigIdx_88; + Circom_Sizes _sigSizes_88; + int _offset_88; + int _compIdx_70; + int _sigIdx_89; + Circom_Sizes _sigSizes_89; + int _offset_89; + PBigInt _sigValue_44 = ctx->allocBigInts(1); + int _compIdx_71; + int _sigIdx_90; + Circom_Sizes _sigSizes_90; + int _offset_90; + PBigInt _sigValue_45 = ctx->allocBigInts(1); + int _sigIdx_91; + Circom_Sizes _sigSizes_91; + int _offset_91; + int _compIdx_72; + int _sigIdx_92; + Circom_Sizes _sigSizes_92; + int _offset_92; + PBigInt _sigValue_46 = ctx->allocBigInts(1); + int _sigIdx_93; + Circom_Sizes _sigSizes_93; + int _offset_93; + int _compIdx_73; + int _sigIdx_94; + Circom_Sizes _sigSizes_94; + int _offset_94; + PBigInt _sigValue_47 = ctx->allocBigInts(1); + int _sigIdx_95; + Circom_Sizes _sigSizes_95; + int _offset_95; + int _compIdx_74; + int _sigIdx_96; + Circom_Sizes _sigSizes_96; + int _offset_96; + PBigInt _sigValue_48 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "2", 10); + PBigInt _tmp_1 = ctx->allocBigInts(1); + int _sigIdx_97; + Circom_Sizes _sigSizes_97; + int _offset_97; + PBigInt _sigValue_49 = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _compIdx_75; + int _sigIdx_98; + Circom_Sizes _sigSizes_98; + int _offset_98; + PBigInt _sigValue_50 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_99; + Circom_Sizes _sigSizes_99; + int _offset_99; + + + /* signal input in[4] */ + + /* signal input base[2] */ + + /* signal output out[2] */ + + /* signal output out8[2] */ + + /* component mux = MultiMux3(2) */ + + /* mux.s[0] <== in[0] */ + _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); + _offset = _sigIdx + 0*_sigSizes[1]; + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); + ctx->setSignal(_compIdx, _offset, _sigValue); + + /* mux.s[1] <== in[1] */ + _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); + _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); + ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); + + /* mux.s[2] <== in[2] */ + _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63ee4c86020b22LL /* s */); + _offset_4 = _sigIdx_4 + 2*_sigSizes_4[1]; + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_5 = _sigIdx_5 + 2*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_5, _sigValue_2); + ctx->setSignal(_compIdx_2, _offset_4, _sigValue_2); + + /* component dbl2 = MontgomeryDouble() */ + + /* component adr3 = MontgomeryAdd() */ + + /* component adr4 = MontgomeryAdd() */ + + /* component adr5 = MontgomeryAdd() */ + + /* component adr6 = MontgomeryAdd() */ + + /* component adr7 = MontgomeryAdd() */ + + /* component adr8 = MontgomeryAdd() */ + + /* mux.c[0][0] <== base[0] */ + _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_6 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_6 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); + _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1] + 0*_sigSizes_6[2]; + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_7 = _sigIdx_7 + 0*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_3); + ctx->setSignal(_compIdx_3, _offset_6, _sigValue_3); + + /* mux.c[1][0] <== base[1] */ + _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_8 = ctx->getSignalOffset(_compIdx_4, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_8 = ctx->getSignalSizes(_compIdx_4, 0xaf63de4c8601eff2LL /* c */); + _offset_8 = _sigIdx_8 + 1*_sigSizes_8[1] + 0*_sigSizes_8[2]; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_4); + ctx->setSignal(_compIdx_4, _offset_8, _sigValue_4); + + /* dbl2.in[0] <== base[0] */ + _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_10 = ctx->getSignalOffset(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); + _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_5); + ctx->setSignal(_compIdx_5, _offset_10, _sigValue_5); + + /* dbl2.in[1] <== base[1] */ + _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_12 = ctx->getSignalOffset(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_12 = ctx->getSignalSizes(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); + _offset_12 = _sigIdx_12 + 1*_sigSizes_12[1]; + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_13 = _sigIdx_13 + 1*_sigSizes_13[1]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_6); + ctx->setSignal(_compIdx_6, _offset_12, _sigValue_6); + + /* mux.c[0][1] <== dbl2.out[0] */ + _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_14 = ctx->getSignalOffset(_compIdx_7, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_14 = ctx->getSignalSizes(_compIdx_7, 0xaf63de4c8601eff2LL /* c */); + _offset_14 = _sigIdx_14 + 0*_sigSizes_14[1] + 1*_sigSizes_14[2]; + _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_15 = ctx->getSignalOffset(_compIdx_8, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_15 = ctx->getSignalSizes(_compIdx_8, 0x19f79b1921bbcfffLL /* out */); + _offset_15 = _sigIdx_15 + 0*_sigSizes_15[1]; + ctx->getSignal(_compIdx_8, _offset_15, _sigValue_7); + ctx->setSignal(_compIdx_7, _offset_14, _sigValue_7); + + /* mux.c[1][1] <== dbl2.out[1] */ + _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_16 = ctx->getSignalOffset(_compIdx_9, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_16 = ctx->getSignalSizes(_compIdx_9, 0xaf63de4c8601eff2LL /* c */); + _offset_16 = _sigIdx_16 + 1*_sigSizes_16[1] + 1*_sigSizes_16[2]; + _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_17 = ctx->getSignalOffset(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_17 = ctx->getSignalSizes(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); + _offset_17 = _sigIdx_17 + 1*_sigSizes_17[1]; + ctx->getSignal(_compIdx_10, _offset_17, _sigValue_8); + ctx->setSignal(_compIdx_9, _offset_16, _sigValue_8); + + /* adr3.in1[0] <== base[0] */ + _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_18 = ctx->getSignalOffset(_compIdx_11, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_18 = ctx->getSignalSizes(_compIdx_11, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_18 = _sigIdx_18 + 0*_sigSizes_18[1]; + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_19 = _sigIdx_19 + 0*_sigSizes_19[1]; + ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_9); + ctx->setSignal(_compIdx_11, _offset_18, _sigValue_9); + + /* adr3.in1[1] <== base[1] */ + _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_20 = ctx->getSignalOffset(_compIdx_12, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_20 = ctx->getSignalSizes(_compIdx_12, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_20 = _sigIdx_20 + 1*_sigSizes_20[1]; + _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_21 = _sigIdx_21 + 1*_sigSizes_21[1]; + ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_10); + ctx->setSignal(_compIdx_12, _offset_20, _sigValue_10); + + /* adr3.in2[0] <== dbl2.out[0] */ + _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_22 = ctx->getSignalOffset(_compIdx_13, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_22 = ctx->getSignalSizes(_compIdx_13, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_22 = _sigIdx_22 + 0*_sigSizes_22[1]; + _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_23 = ctx->getSignalOffset(_compIdx_14, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_23 = ctx->getSignalSizes(_compIdx_14, 0x19f79b1921bbcfffLL /* out */); + _offset_23 = _sigIdx_23 + 0*_sigSizes_23[1]; + ctx->getSignal(_compIdx_14, _offset_23, _sigValue_11); + ctx->setSignal(_compIdx_13, _offset_22, _sigValue_11); + + /* adr3.in2[1] <== dbl2.out[1] */ + _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_24 = ctx->getSignalOffset(_compIdx_15, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_24 = ctx->getSignalSizes(_compIdx_15, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_24 = _sigIdx_24 + 1*_sigSizes_24[1]; + _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); + _sigIdx_25 = ctx->getSignalOffset(_compIdx_16, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_25 = ctx->getSignalSizes(_compIdx_16, 0x19f79b1921bbcfffLL /* out */); + _offset_25 = _sigIdx_25 + 1*_sigSizes_25[1]; + ctx->getSignal(_compIdx_16, _offset_25, _sigValue_12); + ctx->setSignal(_compIdx_15, _offset_24, _sigValue_12); + + /* mux.c[0][2] <== adr3.out[0] */ + _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_26 = ctx->getSignalOffset(_compIdx_17, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_26 = ctx->getSignalSizes(_compIdx_17, 0xaf63de4c8601eff2LL /* c */); + _offset_26 = _sigIdx_26 + 0*_sigSizes_26[1] + 2*_sigSizes_26[2]; + _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_27 = ctx->getSignalOffset(_compIdx_18, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_27 = ctx->getSignalSizes(_compIdx_18, 0x19f79b1921bbcfffLL /* out */); + _offset_27 = _sigIdx_27 + 0*_sigSizes_27[1]; + ctx->getSignal(_compIdx_18, _offset_27, _sigValue_13); + ctx->setSignal(_compIdx_17, _offset_26, _sigValue_13); + + /* mux.c[1][2] <== adr3.out[1] */ + _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_28 = ctx->getSignalOffset(_compIdx_19, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_28 = ctx->getSignalSizes(_compIdx_19, 0xaf63de4c8601eff2LL /* c */); + _offset_28 = _sigIdx_28 + 1*_sigSizes_28[1] + 2*_sigSizes_28[2]; + _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_29 = ctx->getSignalOffset(_compIdx_20, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_29 = ctx->getSignalSizes(_compIdx_20, 0x19f79b1921bbcfffLL /* out */); + _offset_29 = _sigIdx_29 + 1*_sigSizes_29[1]; + ctx->getSignal(_compIdx_20, _offset_29, _sigValue_14); + ctx->setSignal(_compIdx_19, _offset_28, _sigValue_14); + + /* adr4.in1[0] <== base[0] */ + _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_30 = ctx->getSignalOffset(_compIdx_21, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_30 = ctx->getSignalSizes(_compIdx_21, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_30 = _sigIdx_30 + 0*_sigSizes_30[1]; + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_31 = _sigIdx_31 + 0*_sigSizes_31[1]; + ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_15); + ctx->setSignal(_compIdx_21, _offset_30, _sigValue_15); + + /* adr4.in1[1] <== base[1] */ + _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_32 = ctx->getSignalOffset(_compIdx_22, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_32 = ctx->getSignalSizes(_compIdx_22, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_32 = _sigIdx_32 + 1*_sigSizes_32[1]; + _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_33 = _sigIdx_33 + 1*_sigSizes_33[1]; + ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_16); + ctx->setSignal(_compIdx_22, _offset_32, _sigValue_16); + + /* adr4.in2[0] <== adr3.out[0] */ + _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_34 = ctx->getSignalOffset(_compIdx_23, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_34 = ctx->getSignalSizes(_compIdx_23, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_34 = _sigIdx_34 + 0*_sigSizes_34[1]; + _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_35 = ctx->getSignalOffset(_compIdx_24, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_35 = ctx->getSignalSizes(_compIdx_24, 0x19f79b1921bbcfffLL /* out */); + _offset_35 = _sigIdx_35 + 0*_sigSizes_35[1]; + ctx->getSignal(_compIdx_24, _offset_35, _sigValue_17); + ctx->setSignal(_compIdx_23, _offset_34, _sigValue_17); + + /* adr4.in2[1] <== adr3.out[1] */ + _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_36 = ctx->getSignalOffset(_compIdx_25, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_36 = ctx->getSignalSizes(_compIdx_25, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_36 = _sigIdx_36 + 1*_sigSizes_36[1]; + _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); + _sigIdx_37 = ctx->getSignalOffset(_compIdx_26, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_37 = ctx->getSignalSizes(_compIdx_26, 0x19f79b1921bbcfffLL /* out */); + _offset_37 = _sigIdx_37 + 1*_sigSizes_37[1]; + ctx->getSignal(_compIdx_26, _offset_37, _sigValue_18); + ctx->setSignal(_compIdx_25, _offset_36, _sigValue_18); + + /* mux.c[0][3] <== adr4.out[0] */ + _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_38 = ctx->getSignalOffset(_compIdx_27, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_38 = ctx->getSignalSizes(_compIdx_27, 0xaf63de4c8601eff2LL /* c */); + _offset_38 = _sigIdx_38 + 0*_sigSizes_38[1] + 3*_sigSizes_38[2]; + _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_39 = ctx->getSignalOffset(_compIdx_28, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_39 = ctx->getSignalSizes(_compIdx_28, 0x19f79b1921bbcfffLL /* out */); + _offset_39 = _sigIdx_39 + 0*_sigSizes_39[1]; + ctx->getSignal(_compIdx_28, _offset_39, _sigValue_19); + ctx->setSignal(_compIdx_27, _offset_38, _sigValue_19); + + /* mux.c[1][3] <== adr4.out[1] */ + _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_40 = ctx->getSignalOffset(_compIdx_29, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_40 = ctx->getSignalSizes(_compIdx_29, 0xaf63de4c8601eff2LL /* c */); + _offset_40 = _sigIdx_40 + 1*_sigSizes_40[1] + 3*_sigSizes_40[2]; + _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_41 = ctx->getSignalOffset(_compIdx_30, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_41 = ctx->getSignalSizes(_compIdx_30, 0x19f79b1921bbcfffLL /* out */); + _offset_41 = _sigIdx_41 + 1*_sigSizes_41[1]; + ctx->getSignal(_compIdx_30, _offset_41, _sigValue_20); + ctx->setSignal(_compIdx_29, _offset_40, _sigValue_20); + + /* adr5.in1[0] <== base[0] */ + _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_42 = ctx->getSignalOffset(_compIdx_31, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_42 = ctx->getSignalSizes(_compIdx_31, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_42 = _sigIdx_42 + 0*_sigSizes_42[1]; + _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_43 = _sigIdx_43 + 0*_sigSizes_43[1]; + ctx->getSignal(ctx->cIdx, _offset_43, _sigValue_21); + ctx->setSignal(_compIdx_31, _offset_42, _sigValue_21); + + /* adr5.in1[1] <== base[1] */ + _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_44 = ctx->getSignalOffset(_compIdx_32, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_44 = ctx->getSignalSizes(_compIdx_32, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_44 = _sigIdx_44 + 1*_sigSizes_44[1]; + _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_45 = _sigIdx_45 + 1*_sigSizes_45[1]; + ctx->getSignal(ctx->cIdx, _offset_45, _sigValue_22); + ctx->setSignal(_compIdx_32, _offset_44, _sigValue_22); + + /* adr5.in2[0] <== adr4.out[0] */ + _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_46 = ctx->getSignalOffset(_compIdx_33, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_46 = ctx->getSignalSizes(_compIdx_33, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_46 = _sigIdx_46 + 0*_sigSizes_46[1]; + _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_47 = ctx->getSignalOffset(_compIdx_34, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_47 = ctx->getSignalSizes(_compIdx_34, 0x19f79b1921bbcfffLL /* out */); + _offset_47 = _sigIdx_47 + 0*_sigSizes_47[1]; + ctx->getSignal(_compIdx_34, _offset_47, _sigValue_23); + ctx->setSignal(_compIdx_33, _offset_46, _sigValue_23); + + /* adr5.in2[1] <== adr4.out[1] */ + _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_48 = ctx->getSignalOffset(_compIdx_35, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_48 = ctx->getSignalSizes(_compIdx_35, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_48 = _sigIdx_48 + 1*_sigSizes_48[1]; + _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); + _sigIdx_49 = ctx->getSignalOffset(_compIdx_36, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_49 = ctx->getSignalSizes(_compIdx_36, 0x19f79b1921bbcfffLL /* out */); + _offset_49 = _sigIdx_49 + 1*_sigSizes_49[1]; + ctx->getSignal(_compIdx_36, _offset_49, _sigValue_24); + ctx->setSignal(_compIdx_35, _offset_48, _sigValue_24); + + /* mux.c[0][4] <== adr5.out[0] */ + _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_50 = ctx->getSignalOffset(_compIdx_37, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_50 = ctx->getSignalSizes(_compIdx_37, 0xaf63de4c8601eff2LL /* c */); + _offset_50 = _sigIdx_50 + 0*_sigSizes_50[1] + 4*_sigSizes_50[2]; + _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_51 = ctx->getSignalOffset(_compIdx_38, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_51 = ctx->getSignalSizes(_compIdx_38, 0x19f79b1921bbcfffLL /* out */); + _offset_51 = _sigIdx_51 + 0*_sigSizes_51[1]; + ctx->getSignal(_compIdx_38, _offset_51, _sigValue_25); + ctx->setSignal(_compIdx_37, _offset_50, _sigValue_25); + + /* mux.c[1][4] <== adr5.out[1] */ + _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_52 = ctx->getSignalOffset(_compIdx_39, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_52 = ctx->getSignalSizes(_compIdx_39, 0xaf63de4c8601eff2LL /* c */); + _offset_52 = _sigIdx_52 + 1*_sigSizes_52[1] + 4*_sigSizes_52[2]; + _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_53 = ctx->getSignalOffset(_compIdx_40, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_53 = ctx->getSignalSizes(_compIdx_40, 0x19f79b1921bbcfffLL /* out */); + _offset_53 = _sigIdx_53 + 1*_sigSizes_53[1]; + ctx->getSignal(_compIdx_40, _offset_53, _sigValue_26); + ctx->setSignal(_compIdx_39, _offset_52, _sigValue_26); + + /* adr6.in1[0] <== base[0] */ + _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_54 = ctx->getSignalOffset(_compIdx_41, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_54 = ctx->getSignalSizes(_compIdx_41, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_54 = _sigIdx_54 + 0*_sigSizes_54[1]; + _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_55 = _sigIdx_55 + 0*_sigSizes_55[1]; + ctx->getSignal(ctx->cIdx, _offset_55, _sigValue_27); + ctx->setSignal(_compIdx_41, _offset_54, _sigValue_27); + + /* adr6.in1[1] <== base[1] */ + _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_56 = ctx->getSignalOffset(_compIdx_42, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_56 = ctx->getSignalSizes(_compIdx_42, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_56 = _sigIdx_56 + 1*_sigSizes_56[1]; + _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_57 = _sigIdx_57 + 1*_sigSizes_57[1]; + ctx->getSignal(ctx->cIdx, _offset_57, _sigValue_28); + ctx->setSignal(_compIdx_42, _offset_56, _sigValue_28); + + /* adr6.in2[0] <== adr5.out[0] */ + _compIdx_43 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_58 = ctx->getSignalOffset(_compIdx_43, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_58 = ctx->getSignalSizes(_compIdx_43, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_58 = _sigIdx_58 + 0*_sigSizes_58[1]; + _compIdx_44 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_59 = ctx->getSignalOffset(_compIdx_44, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_59 = ctx->getSignalSizes(_compIdx_44, 0x19f79b1921bbcfffLL /* out */); + _offset_59 = _sigIdx_59 + 0*_sigSizes_59[1]; + ctx->getSignal(_compIdx_44, _offset_59, _sigValue_29); + ctx->setSignal(_compIdx_43, _offset_58, _sigValue_29); + + /* adr6.in2[1] <== adr5.out[1] */ + _compIdx_45 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_60 = ctx->getSignalOffset(_compIdx_45, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_60 = ctx->getSignalSizes(_compIdx_45, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_60 = _sigIdx_60 + 1*_sigSizes_60[1]; + _compIdx_46 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); + _sigIdx_61 = ctx->getSignalOffset(_compIdx_46, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_61 = ctx->getSignalSizes(_compIdx_46, 0x19f79b1921bbcfffLL /* out */); + _offset_61 = _sigIdx_61 + 1*_sigSizes_61[1]; + ctx->getSignal(_compIdx_46, _offset_61, _sigValue_30); + ctx->setSignal(_compIdx_45, _offset_60, _sigValue_30); + + /* mux.c[0][5] <== adr6.out[0] */ + _compIdx_47 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_62 = ctx->getSignalOffset(_compIdx_47, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_62 = ctx->getSignalSizes(_compIdx_47, 0xaf63de4c8601eff2LL /* c */); + _offset_62 = _sigIdx_62 + 0*_sigSizes_62[1] + 5*_sigSizes_62[2]; + _compIdx_48 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_63 = ctx->getSignalOffset(_compIdx_48, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_63 = ctx->getSignalSizes(_compIdx_48, 0x19f79b1921bbcfffLL /* out */); + _offset_63 = _sigIdx_63 + 0*_sigSizes_63[1]; + ctx->getSignal(_compIdx_48, _offset_63, _sigValue_31); + ctx->setSignal(_compIdx_47, _offset_62, _sigValue_31); + + /* mux.c[1][5] <== adr6.out[1] */ + _compIdx_49 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_64 = ctx->getSignalOffset(_compIdx_49, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_64 = ctx->getSignalSizes(_compIdx_49, 0xaf63de4c8601eff2LL /* c */); + _offset_64 = _sigIdx_64 + 1*_sigSizes_64[1] + 5*_sigSizes_64[2]; + _compIdx_50 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_65 = ctx->getSignalOffset(_compIdx_50, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_65 = ctx->getSignalSizes(_compIdx_50, 0x19f79b1921bbcfffLL /* out */); + _offset_65 = _sigIdx_65 + 1*_sigSizes_65[1]; + ctx->getSignal(_compIdx_50, _offset_65, _sigValue_32); + ctx->setSignal(_compIdx_49, _offset_64, _sigValue_32); + + /* adr7.in1[0] <== base[0] */ + _compIdx_51 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_66 = ctx->getSignalOffset(_compIdx_51, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_66 = ctx->getSignalSizes(_compIdx_51, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_66 = _sigIdx_66 + 0*_sigSizes_66[1]; + _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_67 = _sigIdx_67 + 0*_sigSizes_67[1]; + ctx->getSignal(ctx->cIdx, _offset_67, _sigValue_33); + ctx->setSignal(_compIdx_51, _offset_66, _sigValue_33); + + /* adr7.in1[1] <== base[1] */ + _compIdx_52 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_68 = ctx->getSignalOffset(_compIdx_52, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_68 = ctx->getSignalSizes(_compIdx_52, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_68 = _sigIdx_68 + 1*_sigSizes_68[1]; + _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_69 = _sigIdx_69 + 1*_sigSizes_69[1]; + ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_34); + ctx->setSignal(_compIdx_52, _offset_68, _sigValue_34); + + /* adr7.in2[0] <== adr6.out[0] */ + _compIdx_53 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_70 = ctx->getSignalOffset(_compIdx_53, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_70 = ctx->getSignalSizes(_compIdx_53, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_70 = _sigIdx_70 + 0*_sigSizes_70[1]; + _compIdx_54 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_71 = ctx->getSignalOffset(_compIdx_54, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_71 = ctx->getSignalSizes(_compIdx_54, 0x19f79b1921bbcfffLL /* out */); + _offset_71 = _sigIdx_71 + 0*_sigSizes_71[1]; + ctx->getSignal(_compIdx_54, _offset_71, _sigValue_35); + ctx->setSignal(_compIdx_53, _offset_70, _sigValue_35); + + /* adr7.in2[1] <== adr6.out[1] */ + _compIdx_55 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_72 = ctx->getSignalOffset(_compIdx_55, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_72 = ctx->getSignalSizes(_compIdx_55, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_72 = _sigIdx_72 + 1*_sigSizes_72[1]; + _compIdx_56 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); + _sigIdx_73 = ctx->getSignalOffset(_compIdx_56, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_73 = ctx->getSignalSizes(_compIdx_56, 0x19f79b1921bbcfffLL /* out */); + _offset_73 = _sigIdx_73 + 1*_sigSizes_73[1]; + ctx->getSignal(_compIdx_56, _offset_73, _sigValue_36); + ctx->setSignal(_compIdx_55, _offset_72, _sigValue_36); + + /* mux.c[0][6] <== adr7.out[0] */ + _compIdx_57 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_74 = ctx->getSignalOffset(_compIdx_57, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_74 = ctx->getSignalSizes(_compIdx_57, 0xaf63de4c8601eff2LL /* c */); + _offset_74 = _sigIdx_74 + 0*_sigSizes_74[1] + 6*_sigSizes_74[2]; + _compIdx_58 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_75 = ctx->getSignalOffset(_compIdx_58, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_75 = ctx->getSignalSizes(_compIdx_58, 0x19f79b1921bbcfffLL /* out */); + _offset_75 = _sigIdx_75 + 0*_sigSizes_75[1]; + ctx->getSignal(_compIdx_58, _offset_75, _sigValue_37); + ctx->setSignal(_compIdx_57, _offset_74, _sigValue_37); + + /* mux.c[1][6] <== adr7.out[1] */ + _compIdx_59 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_76 = ctx->getSignalOffset(_compIdx_59, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_76 = ctx->getSignalSizes(_compIdx_59, 0xaf63de4c8601eff2LL /* c */); + _offset_76 = _sigIdx_76 + 1*_sigSizes_76[1] + 6*_sigSizes_76[2]; + _compIdx_60 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_77 = ctx->getSignalOffset(_compIdx_60, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_77 = ctx->getSignalSizes(_compIdx_60, 0x19f79b1921bbcfffLL /* out */); + _offset_77 = _sigIdx_77 + 1*_sigSizes_77[1]; + ctx->getSignal(_compIdx_60, _offset_77, _sigValue_38); + ctx->setSignal(_compIdx_59, _offset_76, _sigValue_38); + + /* adr8.in1[0] <== base[0] */ + _compIdx_61 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_78 = ctx->getSignalOffset(_compIdx_61, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_78 = ctx->getSignalSizes(_compIdx_61, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_78 = _sigIdx_78 + 0*_sigSizes_78[1]; + _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_79 = _sigIdx_79 + 0*_sigSizes_79[1]; + ctx->getSignal(ctx->cIdx, _offset_79, _sigValue_39); + ctx->setSignal(_compIdx_61, _offset_78, _sigValue_39); + + /* adr8.in1[1] <== base[1] */ + _compIdx_62 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_80 = ctx->getSignalOffset(_compIdx_62, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_80 = ctx->getSignalSizes(_compIdx_62, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_80 = _sigIdx_80 + 1*_sigSizes_80[1]; + _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); + _offset_81 = _sigIdx_81 + 1*_sigSizes_81[1]; + ctx->getSignal(ctx->cIdx, _offset_81, _sigValue_40); + ctx->setSignal(_compIdx_62, _offset_80, _sigValue_40); + + /* adr8.in2[0] <== adr7.out[0] */ + _compIdx_63 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_82 = ctx->getSignalOffset(_compIdx_63, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_82 = ctx->getSignalSizes(_compIdx_63, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_82 = _sigIdx_82 + 0*_sigSizes_82[1]; + _compIdx_64 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_83 = ctx->getSignalOffset(_compIdx_64, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_83 = ctx->getSignalSizes(_compIdx_64, 0x19f79b1921bbcfffLL /* out */); + _offset_83 = _sigIdx_83 + 0*_sigSizes_83[1]; + ctx->getSignal(_compIdx_64, _offset_83, _sigValue_41); + ctx->setSignal(_compIdx_63, _offset_82, _sigValue_41); + + /* adr8.in2[1] <== adr7.out[1] */ + _compIdx_65 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_84 = ctx->getSignalOffset(_compIdx_65, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_84 = ctx->getSignalSizes(_compIdx_65, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_84 = _sigIdx_84 + 1*_sigSizes_84[1]; + _compIdx_66 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); + _sigIdx_85 = ctx->getSignalOffset(_compIdx_66, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_85 = ctx->getSignalSizes(_compIdx_66, 0x19f79b1921bbcfffLL /* out */); + _offset_85 = _sigIdx_85 + 1*_sigSizes_85[1]; + ctx->getSignal(_compIdx_66, _offset_85, _sigValue_42); + ctx->setSignal(_compIdx_65, _offset_84, _sigValue_42); + + /* mux.c[0][7] <== adr8.out[0] */ + _compIdx_67 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_86 = ctx->getSignalOffset(_compIdx_67, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_86 = ctx->getSignalSizes(_compIdx_67, 0xaf63de4c8601eff2LL /* c */); + _offset_86 = _sigIdx_86 + 0*_sigSizes_86[1] + 7*_sigSizes_86[2]; + _compIdx_68 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_87 = ctx->getSignalOffset(_compIdx_68, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_87 = ctx->getSignalSizes(_compIdx_68, 0x19f79b1921bbcfffLL /* out */); + _offset_87 = _sigIdx_87 + 0*_sigSizes_87[1]; + ctx->getSignal(_compIdx_68, _offset_87, _sigValue_43); + ctx->setSignal(_compIdx_67, _offset_86, _sigValue_43); + + /* mux.c[1][7] <== adr8.out[1] */ + _compIdx_69 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_88 = ctx->getSignalOffset(_compIdx_69, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_88 = ctx->getSignalSizes(_compIdx_69, 0xaf63de4c8601eff2LL /* c */); + _offset_88 = _sigIdx_88 + 1*_sigSizes_88[1] + 7*_sigSizes_88[2]; + _compIdx_70 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_89 = ctx->getSignalOffset(_compIdx_70, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_89 = ctx->getSignalSizes(_compIdx_70, 0x19f79b1921bbcfffLL /* out */); + _offset_89 = _sigIdx_89 + 1*_sigSizes_89[1]; + ctx->getSignal(_compIdx_70, _offset_89, _sigValue_44); + ctx->setSignal(_compIdx_69, _offset_88, _sigValue_44); + + /* out8[0] <== adr8.out[0] */ + _compIdx_71 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_90 = ctx->getSignalOffset(_compIdx_71, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_90 = ctx->getSignalSizes(_compIdx_71, 0x19f79b1921bbcfffLL /* out */); + _offset_90 = _sigIdx_90 + 0*_sigSizes_90[1]; + ctx->getSignal(_compIdx_71, _offset_90, _sigValue_45); + _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); + _offset_91 = _sigIdx_91 + 0*_sigSizes_91[1]; + ctx->setSignal(ctx->cIdx, _offset_91, _sigValue_45); + + /* out8[1] <== adr8.out[1] */ + _compIdx_72 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); + _sigIdx_92 = ctx->getSignalOffset(_compIdx_72, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_92 = ctx->getSignalSizes(_compIdx_72, 0x19f79b1921bbcfffLL /* out */); + _offset_92 = _sigIdx_92 + 1*_sigSizes_92[1]; + ctx->getSignal(_compIdx_72, _offset_92, _sigValue_46); + _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); + _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); + _offset_93 = _sigIdx_93 + 1*_sigSizes_93[1]; + ctx->setSignal(ctx->cIdx, _offset_93, _sigValue_46); + + /* out[0] <== mux.out[0] */ + _compIdx_73 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_94 = ctx->getSignalOffset(_compIdx_73, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_94 = ctx->getSignalSizes(_compIdx_73, 0x19f79b1921bbcfffLL /* out */); + _offset_94 = _sigIdx_94 + 0*_sigSizes_94[1]; + ctx->getSignal(_compIdx_73, _offset_94, _sigValue_47); + _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_95 = _sigIdx_95 + 0*_sigSizes_95[1]; + ctx->setSignal(ctx->cIdx, _offset_95, _sigValue_47); + + /* out[1] <== - mux.out[1]*2*in[3] + mux.out[1] */ + _compIdx_74 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_96 = ctx->getSignalOffset(_compIdx_74, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_96 = ctx->getSignalSizes(_compIdx_74, 0x19f79b1921bbcfffLL /* out */); + _offset_96 = _sigIdx_96 + 1*_sigSizes_96[1]; + ctx->getSignal(_compIdx_74, _offset_96, _sigValue_48); + ctx->field->neg(_tmp,_sigValue_48); + ctx->field->mul(_tmp_1,_tmp,_const); + _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_97 = _sigIdx_97 + 3*_sigSizes_97[1]; + ctx->getSignal(ctx->cIdx, _offset_97, _sigValue_49); + ctx->field->mul(_tmp_2,_tmp_1,_sigValue_49); + _compIdx_75 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); + _sigIdx_98 = ctx->getSignalOffset(_compIdx_75, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_98 = ctx->getSignalSizes(_compIdx_75, 0x19f79b1921bbcfffLL /* out */); + _offset_98 = _sigIdx_98 + 1*_sigSizes_98[1]; + ctx->getSignal(_compIdx_75, _offset_98, _sigValue_50); + ctx->field->add(_tmp_3,_tmp_2,_sigValue_50); + _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_99 = _sigIdx_99 + 1*_sigSizes_99[1]; + ctx->setSignal(ctx->cIdx, _offset_99, _tmp_3); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); + ctx->freeBigInts(_sigValue_25, 1); + ctx->freeBigInts(_sigValue_26, 1); + ctx->freeBigInts(_sigValue_27, 1); + ctx->freeBigInts(_sigValue_28, 1); + ctx->freeBigInts(_sigValue_29, 1); + ctx->freeBigInts(_sigValue_30, 1); + ctx->freeBigInts(_sigValue_31, 1); + ctx->freeBigInts(_sigValue_32, 1); + ctx->freeBigInts(_sigValue_33, 1); + ctx->freeBigInts(_sigValue_34, 1); + ctx->freeBigInts(_sigValue_35, 1); + ctx->freeBigInts(_sigValue_36, 1); + ctx->freeBigInts(_sigValue_37, 1); + ctx->freeBigInts(_sigValue_38, 1); + ctx->freeBigInts(_sigValue_39, 1); + ctx->freeBigInts(_sigValue_40, 1); + ctx->freeBigInts(_sigValue_41, 1); + ctx->freeBigInts(_sigValue_42, 1); + ctx->freeBigInts(_sigValue_43, 1); + ctx->freeBigInts(_sigValue_44, 1); + ctx->freeBigInts(_sigValue_45, 1); + ctx->freeBigInts(_sigValue_46, 1); + ctx->freeBigInts(_sigValue_47, 1); + ctx->freeBigInts(_sigValue_48, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_sigValue_49, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_50, 1); + ctx->freeBigInts(_tmp_3, 1); +} + +/* +MontgomeryDouble +*/ +void MontgomeryDouble_90f61203260940df(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_10; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_11; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_2; + int _sigIdx_3; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "3", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_2; + int _offset_13; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "337396", 10); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_5; + Circom_Sizes _sigSizes_3; + int _offset_15; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "2", 10); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_6; + int _sigIdx_7; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_4; + int _offset_17; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "2", 10); + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _sigIdx_9; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "3", 10); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_5; + int _offset_19; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "337396", 10); + PBigInt _tmp_20 = ctx->allocBigInts(1); + PBigInt _tmp_21 = ctx->allocBigInts(1); + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + int _sigIdx_11; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "1", 10); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _sigIdx_12; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "168698", 10); + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _sigIdx_13; + Circom_Sizes _sigSizes_6; + int _offset_22; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "2", 10); + PBigInt _tmp_26 = ctx->allocBigInts(1); + PBigInt _tmp_27 = ctx->allocBigInts(1); + int _sigIdx_14; + Circom_Sizes _sigSizes_7; + int _offset_23; + int _sigIdx_15; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + int _sigIdx_16; + Circom_Sizes _sigSizes_8; + int _offset_24; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_9; + int _offset_25; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + PBigInt _tmp_28 = ctx->allocBigInts(1); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _sigIdx_18; + Circom_Sizes _sigSizes_10; + int _offset_26; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _sigIdx_19; + Circom_Sizes _sigSizes_11; + int _offset_27; + + + /* signal input in[2] */ + + /* signal output out[2] */ + + /* var a = 168700 */ + + /* var d = 168696 */ + + /* var A = (2 * (a + d)) / (a - d) */ + + /* var B = 4 / (a - d) */ + + /* signal lamda */ + + /* signal x1_2 */ + + /* x1_2 <== in[0] * in[0] */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_10 = _sigIdx + 0*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_11 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_1); + ctx->field->mul(_tmp_6,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); + ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp_6); + + /* lamda <-- (3*x1_2 + 2*A*in[0] + 1 ) / (2*B*in[1]) */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); + ctx->field->mul(_tmp_7,_const,_sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_13 = _sigIdx_4 + 0*_sigSizes_2[1]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); + ctx->field->mul(_tmp_9,_const_1,_sigValue_3); + ctx->field->add(_tmp_10,_tmp_7,_tmp_9); + ctx->field->add(_tmp_11,_tmp_10,_const_2); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_15 = _sigIdx_5 + 1*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_4); + ctx->field->mul(_tmp_13,_const_3,_sigValue_4); + ctx->field->div(_tmp_14,_tmp_11,_tmp_13); + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->setSignal(ctx->cIdx, _sigIdx_6, _tmp_14); + + /* lamda * (2*B*in[1]) === (3*x1_2 + 2*A*in[0] + 1 ) */ + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_17 = _sigIdx_8 + 1*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_6); + ctx->field->mul(_tmp_16,_const_4,_sigValue_6); + ctx->field->mul(_tmp_17,_sigValue_5,_tmp_16); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); + ctx->field->mul(_tmp_18,_const_5,_sigValue_7); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_19 = _sigIdx_10 + 0*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_8); + ctx->field->mul(_tmp_20,_const_6,_sigValue_8); + ctx->field->add(_tmp_21,_tmp_18,_tmp_20); + ctx->field->add(_tmp_22,_tmp_21,_const_7); + ctx->checkConstraint(_tmp_17, _tmp_22, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:137:4"); + /* out[0] <== B*lamda*lamda - A - 2*in[0] */ + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_9); + ctx->field->mul(_tmp_23,_const_8,_sigValue_9); + _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_10); + ctx->field->mul(_tmp_24,_tmp_23,_sigValue_10); + ctx->field->sub(_tmp_25,_tmp_24,_const_9); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_22 = _sigIdx_13 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_22, _sigValue_11); + ctx->field->mul(_tmp_26,_const_10,_sigValue_11); + ctx->field->sub(_tmp_27,_tmp_25,_tmp_26); + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_23 = _sigIdx_14 + 0*_sigSizes_7[1]; + ctx->setSignal(ctx->cIdx, _offset_23, _tmp_27); + + /* out[1] <== lamda * (in[0] - out[0]) - in[1] */ + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_12); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_24 = _sigIdx_16 + 0*_sigSizes_8[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_13); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_25 = _sigIdx_17 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_14); + ctx->field->sub(_tmp_28,_sigValue_13,_sigValue_14); + ctx->field->mul(_tmp_29,_sigValue_12,_tmp_28); + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_26 = _sigIdx_18 + 1*_sigSizes_10[1]; + ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_15); + ctx->field->sub(_tmp_30,_tmp_29,_sigValue_15); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_27 = _sigIdx_19 + 1*_sigSizes_11[1]; + ctx->setSignal(ctx->cIdx, _offset_27, _tmp_30); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_tmp_30, 1); +} + +/* +MontgomeryAdd +*/ +void MontgomeryAdd_6479fdda8bf6c089(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset_10; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_11; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_12; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_13; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _sigIdx_4; + int _sigIdx_5; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + int _offset_14; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + int _offset_15; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _tmp_10 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_6; + int _offset_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + int _offset_17; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_10; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "1", 10); + PBigInt _tmp_12 = ctx->allocBigInts(1); + int _sigIdx_11; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "168698", 10); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_12; + Circom_Sizes _sigSizes_8; + int _offset_20; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _sigIdx_13; + Circom_Sizes _sigSizes_9; + int _offset_21; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + PBigInt _tmp_16 = ctx->allocBigInts(1); + int _sigIdx_14; + Circom_Sizes _sigSizes_10; + int _offset_22; + int _sigIdx_15; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + int _sigIdx_16; + Circom_Sizes _sigSizes_11; + int _offset_23; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_12; + int _offset_24; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_18; + Circom_Sizes _sigSizes_13; + int _offset_25; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _sigIdx_19; + Circom_Sizes _sigSizes_14; + int _offset_26; + + + /* signal input in1[2] */ + + /* signal input in2[2] */ + + /* signal output out[2] */ + + /* var a = 168700 */ + + /* var d = 168696 */ + + /* var A = (2 * (a + d)) / (a - d) */ + + /* var B = 4 / (a - d) */ + + /* signal lamda */ + + /* lamda <-- (in2[1] - in1[1]) / (in2[0] - in1[0]) */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_10 = _sigIdx + 1*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_11 = _sigIdx_1 + 1*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_1); + ctx->field->sub(_tmp_6,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_12 = _sigIdx_2 + 0*_sigSizes_2[1]; + ctx->getSignal(ctx->cIdx, _offset_12, _sigValue_2); + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_13 = _sigIdx_3 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); + ctx->field->sub(_tmp_7,_sigValue_2,_sigValue_3); + ctx->field->div(_tmp_8,_tmp_6,_tmp_7); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->setSignal(ctx->cIdx, _sigIdx_4, _tmp_8); + + /* lamda * (in2[0] - in1[0]) === (in2[1] - in1[1]) */ + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_14 = _sigIdx_6 + 0*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_14, _sigValue_5); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_15 = _sigIdx_7 + 0*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_6); + ctx->field->sub(_tmp_9,_sigValue_5,_sigValue_6); + ctx->field->mul(_tmp_10,_sigValue_4,_tmp_9); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_16 = _sigIdx_8 + 1*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_16, _sigValue_7); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_17 = _sigIdx_9 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_8); + ctx->field->sub(_tmp_11,_sigValue_7,_sigValue_8); + ctx->checkConstraint(_tmp_10, _tmp_11, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:102:4"); + /* out[0] <== B*lamda*lamda - A - in1[0] -in2[0] */ + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_9); + ctx->field->mul(_tmp_12,_const,_sigValue_9); + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_10); + ctx->field->mul(_tmp_13,_tmp_12,_sigValue_10); + ctx->field->sub(_tmp_14,_tmp_13,_const_1); + _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_20 = _sigIdx_12 + 0*_sigSizes_8[1]; + ctx->getSignal(ctx->cIdx, _offset_20, _sigValue_11); + ctx->field->sub(_tmp_15,_tmp_14,_sigValue_11); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); + _offset_21 = _sigIdx_13 + 0*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_12); + ctx->field->sub(_tmp_16,_tmp_15,_sigValue_12); + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_22 = _sigIdx_14 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_22, _tmp_16); + + /* out[1] <== lamda * (in1[0] - out[0]) - in1[1] */ + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); + ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_13); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_23 = _sigIdx_16 + 0*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_23, _sigValue_14); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_24 = _sigIdx_17 + 0*_sigSizes_12[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_15); + ctx->field->sub(_tmp_17,_sigValue_14,_sigValue_15); + ctx->field->mul(_tmp_18,_sigValue_13,_tmp_17); + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); + _offset_25 = _sigIdx_18 + 1*_sigSizes_13[1]; + ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_16); + ctx->field->sub(_tmp_19,_tmp_18,_sigValue_16); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_26 = _sigIdx_19 + 1*_sigSizes_14[1]; + ctx->setSignal(ctx->cIdx, _offset_26, _tmp_19); + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_tmp_19, 1); +} + +/* +MultiMux3 +n=2 +*/ +void MultiMux3_af32615da3b0d5ce(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_2; + int _offset_6; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_3; + int _offset_8; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _sigIdx_5; + Circom_Sizes _sigSizes_4; + int _offset_10; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_6; + Circom_Sizes _sigSizes_5; + int _offset_12; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + int _sigIdx_7; + Circom_Sizes _sigSizes_6; + int _offset_14; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _tmp_5 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_7; + int _offset_16; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_9; + Circom_Sizes _sigSizes_8; + int _offset_18; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_9; + int _offset_20; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _sigIdx_11; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + PBigInt _tmp_9 = ctx->allocBigInts(1); + int _sigIdx_12; + Circom_Sizes _sigSizes_10; + int _offset_22; + int _sigIdx_13; + Circom_Sizes _sigSizes_11; + int _offset_24; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + int _sigIdx_14; + Circom_Sizes _sigSizes_12; + int _offset_26; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + PBigInt _tmp_10 = ctx->allocBigInts(1); + int _sigIdx_15; + Circom_Sizes _sigSizes_13; + int _offset_28; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_16; + Circom_Sizes _sigSizes_14; + int _offset_30; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + PBigInt _tmp_12 = ctx->allocBigInts(1); + int _sigIdx_17; + Circom_Sizes _sigSizes_15; + int _offset_31; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _sigIdx_18; + Circom_Sizes _sigSizes_16; + int _offset_33; + int _sigIdx_19; + Circom_Sizes _sigSizes_17; + int _offset_35; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + int _sigIdx_20; + Circom_Sizes _sigSizes_18; + int _offset_37; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_21; + Circom_Sizes _sigSizes_19; + int _offset_39; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _sigIdx_22; + Circom_Sizes _sigSizes_20; + int _offset_41; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _tmp_16 = ctx->allocBigInts(1); + int _sigIdx_23; + Circom_Sizes _sigSizes_21; + int _offset_42; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _sigIdx_24; + Circom_Sizes _sigSizes_22; + int _offset_44; + int _sigIdx_25; + Circom_Sizes _sigSizes_23; + int _offset_46; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + int _sigIdx_26; + Circom_Sizes _sigSizes_24; + int _offset_48; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_27; + Circom_Sizes _sigSizes_25; + int _offset_50; + int _sigIdx_28; + Circom_Sizes _sigSizes_26; + int _offset_52; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _sigIdx_29; + Circom_Sizes _sigSizes_27; + int _offset_54; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + PBigInt _tmp_19 = ctx->allocBigInts(1); + int _sigIdx_30; + Circom_Sizes _sigSizes_28; + int _offset_56; + PBigInt _sigValue_25 = ctx->allocBigInts(1); + PBigInt _tmp_20 = ctx->allocBigInts(1); + int _sigIdx_31; + Circom_Sizes _sigSizes_29; + int _offset_58; + PBigInt _sigValue_26 = ctx->allocBigInts(1); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _sigIdx_32; + PBigInt _sigValue_27 = ctx->allocBigInts(1); + PBigInt _tmp_22 = ctx->allocBigInts(1); + int _sigIdx_33; + Circom_Sizes _sigSizes_30; + int _offset_60; + int _sigIdx_34; + Circom_Sizes _sigSizes_31; + int _offset_62; + PBigInt _sigValue_28 = ctx->allocBigInts(1); + int _sigIdx_35; + Circom_Sizes _sigSizes_32; + int _offset_64; + PBigInt _sigValue_29 = ctx->allocBigInts(1); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _sigIdx_36; + Circom_Sizes _sigSizes_33; + int _offset_65; + PBigInt _sigValue_30 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _sigIdx_37; + Circom_Sizes _sigSizes_34; + int _offset_67; + int _sigIdx_38; + Circom_Sizes _sigSizes_35; + int _offset_69; + PBigInt _sigValue_31 = ctx->allocBigInts(1); + int _sigIdx_39; + Circom_Sizes _sigSizes_36; + int _offset_71; + PBigInt _sigValue_32 = ctx->allocBigInts(1); + PBigInt _tmp_25 = ctx->allocBigInts(1); + int _sigIdx_40; + Circom_Sizes _sigSizes_37; + int _offset_72; + PBigInt _sigValue_33 = ctx->allocBigInts(1); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _sigIdx_41; + Circom_Sizes _sigSizes_38; + int _offset_74; + int _sigIdx_42; + Circom_Sizes _sigSizes_39; + int _offset_76; + PBigInt _sigValue_34 = ctx->allocBigInts(1); + int _sigIdx_43; + Circom_Sizes _sigSizes_40; + int _offset_78; + int _sigIdx_44; + Circom_Sizes _sigSizes_41; + int _offset_80; + PBigInt _sigValue_35 = ctx->allocBigInts(1); + int _sigIdx_45; + Circom_Sizes _sigSizes_42; + int _offset_82; + PBigInt _sigValue_36 = ctx->allocBigInts(1); + PBigInt _tmp_27 = ctx->allocBigInts(1); + int _sigIdx_46; + Circom_Sizes _sigSizes_43; + int _offset_84; + PBigInt _sigValue_37 = ctx->allocBigInts(1); + PBigInt _tmp_28 = ctx->allocBigInts(1); + int _sigIdx_47; + Circom_Sizes _sigSizes_44; + int _offset_86; + PBigInt _sigValue_38 = ctx->allocBigInts(1); + PBigInt _tmp_29 = ctx->allocBigInts(1); + int _sigIdx_48; + Circom_Sizes _sigSizes_45; + int _offset_87; + PBigInt _sigValue_39 = ctx->allocBigInts(1); + PBigInt _tmp_30 = ctx->allocBigInts(1); + int _sigIdx_49; + Circom_Sizes _sigSizes_46; + int _offset_89; + PBigInt _sigValue_40 = ctx->allocBigInts(1); + int _sigIdx_50; + Circom_Sizes _sigSizes_47; + int _offset_91; + PBigInt _sigValue_41 = ctx->allocBigInts(1); + PBigInt _tmp_31 = ctx->allocBigInts(1); + int _sigIdx_51; + Circom_Sizes _sigSizes_48; + int _offset_93; + PBigInt _sigValue_42 = ctx->allocBigInts(1); + PBigInt _tmp_32 = ctx->allocBigInts(1); + int _sigIdx_52; + Circom_Sizes _sigSizes_49; + int _offset_95; + PBigInt _sigValue_43 = ctx->allocBigInts(1); + PBigInt _tmp_33 = ctx->allocBigInts(1); + PBigInt _tmp_34 = ctx->allocBigInts(1); + int _sigIdx_53; + Circom_Sizes _sigSizes_50; + int _offset_97; + PBigInt _tmp_36 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _sigIdx_54; + Circom_Sizes _sigSizes_51; + PBigInt _v_49; + int _offset_103; + PBigInt _sigValue_44 = ctx->allocBigInts(1); + int _sigIdx_55; + Circom_Sizes _sigSizes_52; + PBigInt _v_50; + int _offset_105; + PBigInt _sigValue_45 = ctx->allocBigInts(1); + PBigInt _tmp_37 = ctx->allocBigInts(1); + int _sigIdx_56; + Circom_Sizes _sigSizes_53; + PBigInt _v_51; + int _offset_107; + PBigInt _sigValue_46 = ctx->allocBigInts(1); + PBigInt _tmp_38 = ctx->allocBigInts(1); + int _sigIdx_57; + Circom_Sizes _sigSizes_54; + PBigInt _v_52; + int _offset_109; + PBigInt _sigValue_47 = ctx->allocBigInts(1); + PBigInt _tmp_39 = ctx->allocBigInts(1); + int _sigIdx_58; + Circom_Sizes _sigSizes_55; + PBigInt _v_53; + int _offset_111; + PBigInt _sigValue_48 = ctx->allocBigInts(1); + PBigInt _tmp_40 = ctx->allocBigInts(1); + int _sigIdx_59; + Circom_Sizes _sigSizes_56; + PBigInt _v_54; + int _offset_113; + PBigInt _sigValue_49 = ctx->allocBigInts(1); + PBigInt _tmp_41 = ctx->allocBigInts(1); + int _sigIdx_60; + Circom_Sizes _sigSizes_57; + PBigInt _v_55; + int _offset_115; + PBigInt _sigValue_50 = ctx->allocBigInts(1); + PBigInt _tmp_42 = ctx->allocBigInts(1); + int _sigIdx_61; + Circom_Sizes _sigSizes_58; + PBigInt _v_56; + int _offset_117; + PBigInt _sigValue_51 = ctx->allocBigInts(1); + PBigInt _tmp_43 = ctx->allocBigInts(1); + int _sigIdx_62; + PBigInt _sigValue_52 = ctx->allocBigInts(1); + PBigInt _tmp_44 = ctx->allocBigInts(1); + int _sigIdx_63; + Circom_Sizes _sigSizes_59; + PBigInt _v_57; + int _offset_119; + int _sigIdx_64; + Circom_Sizes _sigSizes_60; + PBigInt _v_58; + int _offset_121; + PBigInt _sigValue_53 = ctx->allocBigInts(1); + int _sigIdx_65; + Circom_Sizes _sigSizes_61; + PBigInt _v_59; + int _offset_123; + PBigInt _sigValue_54 = ctx->allocBigInts(1); + PBigInt _tmp_45 = ctx->allocBigInts(1); + int _sigIdx_66; + Circom_Sizes _sigSizes_62; + PBigInt _v_60; + int _offset_125; + PBigInt _sigValue_55 = ctx->allocBigInts(1); + PBigInt _tmp_46 = ctx->allocBigInts(1); + int _sigIdx_67; + Circom_Sizes _sigSizes_63; + PBigInt _v_61; + int _offset_127; + PBigInt _sigValue_56 = ctx->allocBigInts(1); + PBigInt _tmp_47 = ctx->allocBigInts(1); + int _sigIdx_68; + Circom_Sizes _sigSizes_64; + int _offset_128; + PBigInt _sigValue_57 = ctx->allocBigInts(1); + PBigInt _tmp_48 = ctx->allocBigInts(1); + int _sigIdx_69; + Circom_Sizes _sigSizes_65; + PBigInt _v_62; + int _offset_130; + int _sigIdx_70; + Circom_Sizes _sigSizes_66; + PBigInt _v_63; + int _offset_132; + PBigInt _sigValue_58 = ctx->allocBigInts(1); + int _sigIdx_71; + Circom_Sizes _sigSizes_67; + PBigInt _v_64; + int _offset_134; + PBigInt _sigValue_59 = ctx->allocBigInts(1); + PBigInt _tmp_49 = ctx->allocBigInts(1); + int _sigIdx_72; + Circom_Sizes _sigSizes_68; + PBigInt _v_65; + int _offset_136; + PBigInt _sigValue_60 = ctx->allocBigInts(1); + PBigInt _tmp_50 = ctx->allocBigInts(1); + int _sigIdx_73; + Circom_Sizes _sigSizes_69; + PBigInt _v_66; + int _offset_138; + PBigInt _sigValue_61 = ctx->allocBigInts(1); + PBigInt _tmp_51 = ctx->allocBigInts(1); + int _sigIdx_74; + Circom_Sizes _sigSizes_70; + int _offset_139; + PBigInt _sigValue_62 = ctx->allocBigInts(1); + PBigInt _tmp_52 = ctx->allocBigInts(1); + int _sigIdx_75; + Circom_Sizes _sigSizes_71; + PBigInt _v_67; + int _offset_141; + int _sigIdx_76; + Circom_Sizes _sigSizes_72; + PBigInt _v_68; + int _offset_143; + PBigInt _sigValue_63 = ctx->allocBigInts(1); + int _sigIdx_77; + Circom_Sizes _sigSizes_73; + PBigInt _v_69; + int _offset_145; + PBigInt _sigValue_64 = ctx->allocBigInts(1); + PBigInt _tmp_53 = ctx->allocBigInts(1); + int _sigIdx_78; + Circom_Sizes _sigSizes_74; + PBigInt _v_70; + int _offset_147; + int _sigIdx_79; + Circom_Sizes _sigSizes_75; + PBigInt _v_71; + int _offset_149; + PBigInt _sigValue_65 = ctx->allocBigInts(1); + int _sigIdx_80; + Circom_Sizes _sigSizes_76; + PBigInt _v_72; + int _offset_151; + PBigInt _sigValue_66 = ctx->allocBigInts(1); + PBigInt _tmp_54 = ctx->allocBigInts(1); + int _sigIdx_81; + Circom_Sizes _sigSizes_77; + PBigInt _v_73; + int _offset_153; + PBigInt _sigValue_67 = ctx->allocBigInts(1); + PBigInt _tmp_55 = ctx->allocBigInts(1); + int _sigIdx_82; + Circom_Sizes _sigSizes_78; + PBigInt _v_74; + int _offset_155; + PBigInt _sigValue_68 = ctx->allocBigInts(1); + PBigInt _tmp_56 = ctx->allocBigInts(1); + int _sigIdx_83; + PBigInt _sigValue_69 = ctx->allocBigInts(1); + PBigInt _tmp_57 = ctx->allocBigInts(1); + int _sigIdx_84; + Circom_Sizes _sigSizes_79; + PBigInt _v_75; + int _offset_157; + int _sigIdx_85; + Circom_Sizes _sigSizes_80; + PBigInt _v_76; + int _offset_159; + PBigInt _sigValue_70 = ctx->allocBigInts(1); + int _sigIdx_86; + Circom_Sizes _sigSizes_81; + PBigInt _v_77; + int _offset_161; + PBigInt _sigValue_71 = ctx->allocBigInts(1); + PBigInt _tmp_58 = ctx->allocBigInts(1); + int _sigIdx_87; + Circom_Sizes _sigSizes_82; + int _offset_162; + PBigInt _sigValue_72 = ctx->allocBigInts(1); + PBigInt _tmp_59 = ctx->allocBigInts(1); + int _sigIdx_88; + Circom_Sizes _sigSizes_83; + PBigInt _v_78; + int _offset_164; + int _sigIdx_89; + Circom_Sizes _sigSizes_84; + PBigInt _v_79; + int _offset_166; + PBigInt _sigValue_73 = ctx->allocBigInts(1); + int _sigIdx_90; + Circom_Sizes _sigSizes_85; + PBigInt _v_80; + int _offset_168; + PBigInt _sigValue_74 = ctx->allocBigInts(1); + PBigInt _tmp_60 = ctx->allocBigInts(1); + int _sigIdx_91; + Circom_Sizes _sigSizes_86; + int _offset_169; + PBigInt _sigValue_75 = ctx->allocBigInts(1); + PBigInt _tmp_61 = ctx->allocBigInts(1); + int _sigIdx_92; + Circom_Sizes _sigSizes_87; + PBigInt _v_81; + int _offset_171; + int _sigIdx_93; + Circom_Sizes _sigSizes_88; + PBigInt _v_82; + int _offset_173; + PBigInt _sigValue_76 = ctx->allocBigInts(1); + int _sigIdx_94; + Circom_Sizes _sigSizes_89; + PBigInt _v_83; + int _offset_175; + int _sigIdx_95; + Circom_Sizes _sigSizes_90; + PBigInt _v_84; + int _offset_177; + PBigInt _sigValue_77 = ctx->allocBigInts(1); + int _sigIdx_96; + Circom_Sizes _sigSizes_91; + PBigInt _v_85; + int _offset_179; + PBigInt _sigValue_78 = ctx->allocBigInts(1); + PBigInt _tmp_62 = ctx->allocBigInts(1); + int _sigIdx_97; + Circom_Sizes _sigSizes_92; + PBigInt _v_86; + int _offset_181; + PBigInt _sigValue_79 = ctx->allocBigInts(1); + PBigInt _tmp_63 = ctx->allocBigInts(1); + int _sigIdx_98; + Circom_Sizes _sigSizes_93; + PBigInt _v_87; + int _offset_183; + PBigInt _sigValue_80 = ctx->allocBigInts(1); + PBigInt _tmp_64 = ctx->allocBigInts(1); + int _sigIdx_99; + Circom_Sizes _sigSizes_94; + int _offset_184; + PBigInt _sigValue_81 = ctx->allocBigInts(1); + PBigInt _tmp_65 = ctx->allocBigInts(1); + int _sigIdx_100; + Circom_Sizes _sigSizes_95; + PBigInt _v_88; + int _offset_186; + PBigInt _sigValue_82 = ctx->allocBigInts(1); + int _sigIdx_101; + Circom_Sizes _sigSizes_96; + PBigInt _v_89; + int _offset_188; + PBigInt _sigValue_83 = ctx->allocBigInts(1); + PBigInt _tmp_66 = ctx->allocBigInts(1); + int _sigIdx_102; + Circom_Sizes _sigSizes_97; + PBigInt _v_90; + int _offset_190; + PBigInt _sigValue_84 = ctx->allocBigInts(1); + PBigInt _tmp_67 = ctx->allocBigInts(1); + int _sigIdx_103; + Circom_Sizes _sigSizes_98; + PBigInt _v_91; + int _offset_192; + PBigInt _sigValue_85 = ctx->allocBigInts(1); + PBigInt _tmp_68 = ctx->allocBigInts(1); + PBigInt _tmp_69 = ctx->allocBigInts(1); + int _sigIdx_104; + Circom_Sizes _sigSizes_99; + PBigInt _v_92; + int _offset_194; + PBigInt _v_93; + PBigInt _tmp_70 = ctx->allocBigInts(1); + PBigInt _v_94; + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "2", 10); + PBigInt _tmp_71 = ctx->allocBigInts(1); + + + /* signal input c[n][8] */ + + /* signal input s[3] */ + + /* signal output out[n] */ + + /* signal a210[n] */ + + /* signal a21[n] */ + + /* signal a20[n] */ + + /* signal a2[n] */ + + /* signal a10[n] */ + + /* signal a1[n] */ + + /* signal a0[n] */ + + /* signal a[n] */ + + /* signal s10 */ + + /* s10 <== s[1] * s[0] */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset = _sigIdx + 1*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); + ctx->field->mul(_tmp,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); + + /* for (var i=0,igetSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_6 = _sigIdx_3 + 0*_sigSizes_2[1] + 7*_sigSizes_2[2]; + ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_8 = _sigIdx_4 + 0*_sigSizes_3[1] + 6*_sigSizes_3[2]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_3); + ctx->field->sub(_tmp_2,_sigValue_2,_sigValue_3); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_10 = _sigIdx_5 + 0*_sigSizes_4[1] + 5*_sigSizes_4[2]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_4); + ctx->field->sub(_tmp_3,_tmp_2,_sigValue_4); + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_12 = _sigIdx_6 + 0*_sigSizes_5[1] + 4*_sigSizes_5[2]; + ctx->getSignal(ctx->cIdx, _offset_12, _sigValue_5); + ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_14 = _sigIdx_7 + 0*_sigSizes_6[1] + 3*_sigSizes_6[2]; + ctx->getSignal(ctx->cIdx, _offset_14, _sigValue_6); + ctx->field->sub(_tmp_5,_tmp_4,_sigValue_6); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_16 = _sigIdx_8 + 0*_sigSizes_7[1] + 2*_sigSizes_7[2]; + ctx->getSignal(ctx->cIdx, _offset_16, _sigValue_7); + ctx->field->add(_tmp_6,_tmp_5,_sigValue_7); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_18 = _sigIdx_9 + 0*_sigSizes_8[1] + 1*_sigSizes_8[2]; + ctx->getSignal(ctx->cIdx, _offset_18, _sigValue_8); + ctx->field->add(_tmp_7,_tmp_6,_sigValue_8); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_20 = _sigIdx_10 + 0*_sigSizes_9[1] + 0*_sigSizes_9[2]; + ctx->getSignal(ctx->cIdx, _offset_20, _sigValue_9); + ctx->field->sub(_tmp_8,_tmp_7,_sigValue_9); + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_10); + ctx->field->mul(_tmp_9,_tmp_8,_sigValue_10); + _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _offset_22 = _sigIdx_12 + 0*_sigSizes_10[1]; + ctx->setSignal(ctx->cIdx, _offset_22, _tmp_9); + + /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s[1] */ + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_24 = _sigIdx_13 + 0*_sigSizes_11[1] + 6*_sigSizes_11[2]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_11); + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_26 = _sigIdx_14 + 0*_sigSizes_12[1] + 4*_sigSizes_12[2]; + ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_12); + ctx->field->sub(_tmp_10,_sigValue_11,_sigValue_12); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_28 = _sigIdx_15 + 0*_sigSizes_13[1] + 2*_sigSizes_13[2]; + ctx->getSignal(ctx->cIdx, _offset_28, _sigValue_13); + ctx->field->sub(_tmp_11,_tmp_10,_sigValue_13); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_30 = _sigIdx_16 + 0*_sigSizes_14[1] + 0*_sigSizes_14[2]; + ctx->getSignal(ctx->cIdx, _offset_30, _sigValue_14); + ctx->field->add(_tmp_12,_tmp_11,_sigValue_14); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_31 = _sigIdx_17 + 1*_sigSizes_15[1]; + ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_15); + ctx->field->mul(_tmp_13,_tmp_12,_sigValue_15); + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_16 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _offset_33 = _sigIdx_18 + 0*_sigSizes_16[1]; + ctx->setSignal(ctx->cIdx, _offset_33, _tmp_13); + + /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s[0] */ + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_35 = _sigIdx_19 + 0*_sigSizes_17[1] + 5*_sigSizes_17[2]; + ctx->getSignal(ctx->cIdx, _offset_35, _sigValue_16); + _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_37 = _sigIdx_20 + 0*_sigSizes_18[1] + 4*_sigSizes_18[2]; + ctx->getSignal(ctx->cIdx, _offset_37, _sigValue_17); + ctx->field->sub(_tmp_14,_sigValue_16,_sigValue_17); + _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_39 = _sigIdx_21 + 0*_sigSizes_19[1] + 1*_sigSizes_19[2]; + ctx->getSignal(ctx->cIdx, _offset_39, _sigValue_18); + ctx->field->sub(_tmp_15,_tmp_14,_sigValue_18); + _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_20 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_41 = _sigIdx_22 + 0*_sigSizes_20[1] + 0*_sigSizes_20[2]; + ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_19); + ctx->field->add(_tmp_16,_tmp_15,_sigValue_19); + _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_42 = _sigIdx_23 + 0*_sigSizes_21[1]; + ctx->getSignal(ctx->cIdx, _offset_42, _sigValue_20); + ctx->field->mul(_tmp_17,_tmp_16,_sigValue_20); + _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_22 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _offset_44 = _sigIdx_24 + 0*_sigSizes_22[1]; + ctx->setSignal(ctx->cIdx, _offset_44, _tmp_17); + + /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) */ + _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_23 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_46 = _sigIdx_25 + 0*_sigSizes_23[1] + 4*_sigSizes_23[2]; + ctx->getSignal(ctx->cIdx, _offset_46, _sigValue_21); + _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_24 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_48 = _sigIdx_26 + 0*_sigSizes_24[1] + 0*_sigSizes_24[2]; + ctx->getSignal(ctx->cIdx, _offset_48, _sigValue_22); + ctx->field->sub(_tmp_18,_sigValue_21,_sigValue_22); + _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_25 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _offset_50 = _sigIdx_27 + 0*_sigSizes_25[1]; + ctx->setSignal(ctx->cIdx, _offset_50, _tmp_18); + + /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ + _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_26 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_52 = _sigIdx_28 + 0*_sigSizes_26[1] + 3*_sigSizes_26[2]; + ctx->getSignal(ctx->cIdx, _offset_52, _sigValue_23); + _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_27 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_54 = _sigIdx_29 + 0*_sigSizes_27[1] + 2*_sigSizes_27[2]; + ctx->getSignal(ctx->cIdx, _offset_54, _sigValue_24); + ctx->field->sub(_tmp_19,_sigValue_23,_sigValue_24); + _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_28 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_56 = _sigIdx_30 + 0*_sigSizes_28[1] + 1*_sigSizes_28[2]; + ctx->getSignal(ctx->cIdx, _offset_56, _sigValue_25); + ctx->field->sub(_tmp_20,_tmp_19,_sigValue_25); + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_29 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_58 = _sigIdx_31 + 0*_sigSizes_29[1] + 0*_sigSizes_29[2]; + ctx->getSignal(ctx->cIdx, _offset_58, _sigValue_26); + ctx->field->add(_tmp_21,_tmp_20,_sigValue_26); + _sigIdx_32 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_32, _sigValue_27); + ctx->field->mul(_tmp_22,_tmp_21,_sigValue_27); + _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_30 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _offset_60 = _sigIdx_33 + 0*_sigSizes_30[1]; + ctx->setSignal(ctx->cIdx, _offset_60, _tmp_22); + + /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ + _sigIdx_34 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_62 = _sigIdx_34 + 0*_sigSizes_31[1] + 2*_sigSizes_31[2]; + ctx->getSignal(ctx->cIdx, _offset_62, _sigValue_28); + _sigIdx_35 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_32 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_64 = _sigIdx_35 + 0*_sigSizes_32[1] + 0*_sigSizes_32[2]; + ctx->getSignal(ctx->cIdx, _offset_64, _sigValue_29); + ctx->field->sub(_tmp_23,_sigValue_28,_sigValue_29); + _sigIdx_36 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_65 = _sigIdx_36 + 1*_sigSizes_33[1]; + ctx->getSignal(ctx->cIdx, _offset_65, _sigValue_30); + ctx->field->mul(_tmp_24,_tmp_23,_sigValue_30); + _sigIdx_37 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_34 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _offset_67 = _sigIdx_37 + 0*_sigSizes_34[1]; + ctx->setSignal(ctx->cIdx, _offset_67, _tmp_24); + + /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ + _sigIdx_38 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_35 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_69 = _sigIdx_38 + 0*_sigSizes_35[1] + 1*_sigSizes_35[2]; + ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_31); + _sigIdx_39 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_36 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_71 = _sigIdx_39 + 0*_sigSizes_36[1] + 0*_sigSizes_36[2]; + ctx->getSignal(ctx->cIdx, _offset_71, _sigValue_32); + ctx->field->sub(_tmp_25,_sigValue_31,_sigValue_32); + _sigIdx_40 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_37 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_72 = _sigIdx_40 + 0*_sigSizes_37[1]; + ctx->getSignal(ctx->cIdx, _offset_72, _sigValue_33); + ctx->field->mul(_tmp_26,_tmp_25,_sigValue_33); + _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_38 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _offset_74 = _sigIdx_41 + 0*_sigSizes_38[1]; + ctx->setSignal(ctx->cIdx, _offset_74, _tmp_26); + + /* a[i] <== ( c[i][ 0] ) */ + _sigIdx_42 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_39 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _offset_76 = _sigIdx_42 + 0*_sigSizes_39[1] + 0*_sigSizes_39[2]; + ctx->getSignal(ctx->cIdx, _offset_76, _sigValue_34); + _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_40 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _offset_78 = _sigIdx_43 + 0*_sigSizes_40[1]; + ctx->setSignal(ctx->cIdx, _offset_78, _sigValue_34); + + /* out[i] <== ( a210[i] + a21[i] + a20[i] + a2[i] ) * s[2] + + ( a10[i] + a1[i] + a0[i] + a[i] ) */ + _sigIdx_44 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _offset_80 = _sigIdx_44 + 0*_sigSizes_41[1]; + ctx->getSignal(ctx->cIdx, _offset_80, _sigValue_35); + _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_42 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _offset_82 = _sigIdx_45 + 0*_sigSizes_42[1]; + ctx->getSignal(ctx->cIdx, _offset_82, _sigValue_36); + ctx->field->add(_tmp_27,_sigValue_35,_sigValue_36); + _sigIdx_46 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _offset_84 = _sigIdx_46 + 0*_sigSizes_43[1]; + ctx->getSignal(ctx->cIdx, _offset_84, _sigValue_37); + ctx->field->add(_tmp_28,_tmp_27,_sigValue_37); + _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_44 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _offset_86 = _sigIdx_47 + 0*_sigSizes_44[1]; + ctx->getSignal(ctx->cIdx, _offset_86, _sigValue_38); + ctx->field->add(_tmp_29,_tmp_28,_sigValue_38); + _sigIdx_48 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_87 = _sigIdx_48 + 2*_sigSizes_45[1]; + ctx->getSignal(ctx->cIdx, _offset_87, _sigValue_39); + ctx->field->mul(_tmp_30,_tmp_29,_sigValue_39); + _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_46 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _offset_89 = _sigIdx_49 + 0*_sigSizes_46[1]; + ctx->getSignal(ctx->cIdx, _offset_89, _sigValue_40); + _sigIdx_50 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _offset_91 = _sigIdx_50 + 0*_sigSizes_47[1]; + ctx->getSignal(ctx->cIdx, _offset_91, _sigValue_41); + ctx->field->add(_tmp_31,_sigValue_40,_sigValue_41); + _sigIdx_51 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_48 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _offset_93 = _sigIdx_51 + 0*_sigSizes_48[1]; + ctx->getSignal(ctx->cIdx, _offset_93, _sigValue_42); + ctx->field->add(_tmp_32,_tmp_31,_sigValue_42); + _sigIdx_52 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _offset_95 = _sigIdx_52 + 0*_sigSizes_49[1]; + ctx->getSignal(ctx->cIdx, _offset_95, _sigValue_43); + ctx->field->add(_tmp_33,_tmp_32,_sigValue_43); + ctx->field->add(_tmp_34,_tmp_30,_tmp_33); + _sigIdx_53 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_50 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_97 = _sigIdx_53 + 0*_sigSizes_50[1]; + ctx->setSignal(ctx->cIdx, _offset_97, _tmp_34); + mpz_set_str(_tmp_36[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_36); + while (_cond) { + + /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ + _sigIdx_54 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_51 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_49 = i + 0; + _offset_103 = _sigIdx_54 + ctx->field->toInt(_v_49)*_sigSizes_51[1] + 7*_sigSizes_51[2]; + ctx->getSignal(ctx->cIdx, _offset_103, _sigValue_44); + _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_52 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_50 = i + 0; + _offset_105 = _sigIdx_55 + ctx->field->toInt(_v_50)*_sigSizes_52[1] + 6*_sigSizes_52[2]; + ctx->getSignal(ctx->cIdx, _offset_105, _sigValue_45); + ctx->field->sub(_tmp_37,_sigValue_44,_sigValue_45); + _sigIdx_56 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_53 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_51 = i + 0; + _offset_107 = _sigIdx_56 + ctx->field->toInt(_v_51)*_sigSizes_53[1] + 5*_sigSizes_53[2]; + ctx->getSignal(ctx->cIdx, _offset_107, _sigValue_46); + ctx->field->sub(_tmp_38,_tmp_37,_sigValue_46); + _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_54 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_52 = i + 0; + _offset_109 = _sigIdx_57 + ctx->field->toInt(_v_52)*_sigSizes_54[1] + 4*_sigSizes_54[2]; + ctx->getSignal(ctx->cIdx, _offset_109, _sigValue_47); + ctx->field->add(_tmp_39,_tmp_38,_sigValue_47); + _sigIdx_58 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_53 = i + 0; + _offset_111 = _sigIdx_58 + ctx->field->toInt(_v_53)*_sigSizes_55[1] + 3*_sigSizes_55[2]; + ctx->getSignal(ctx->cIdx, _offset_111, _sigValue_48); + ctx->field->sub(_tmp_40,_tmp_39,_sigValue_48); + _sigIdx_59 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_56 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_54 = i + 0; + _offset_113 = _sigIdx_59 + ctx->field->toInt(_v_54)*_sigSizes_56[1] + 2*_sigSizes_56[2]; + ctx->getSignal(ctx->cIdx, _offset_113, _sigValue_49); + ctx->field->add(_tmp_41,_tmp_40,_sigValue_49); + _sigIdx_60 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_55 = i + 0; + _offset_115 = _sigIdx_60 + ctx->field->toInt(_v_55)*_sigSizes_57[1] + 1*_sigSizes_57[2]; + ctx->getSignal(ctx->cIdx, _offset_115, _sigValue_50); + ctx->field->add(_tmp_42,_tmp_41,_sigValue_50); + _sigIdx_61 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_58 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_56 = i + 0; + _offset_117 = _sigIdx_61 + ctx->field->toInt(_v_56)*_sigSizes_58[1] + 0*_sigSizes_58[2]; + ctx->getSignal(ctx->cIdx, _offset_117, _sigValue_51); + ctx->field->sub(_tmp_43,_tmp_42,_sigValue_51); + _sigIdx_62 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_62, _sigValue_52); + ctx->field->mul(_tmp_44,_tmp_43,_sigValue_52); + _sigIdx_63 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_59 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _v_57 = i + 0; + _offset_119 = _sigIdx_63 + ctx->field->toInt(_v_57)*_sigSizes_59[1]; + ctx->setSignal(ctx->cIdx, _offset_119, _tmp_44); + + /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s[1] */ + _sigIdx_64 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_60 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_58 = i + 0; + _offset_121 = _sigIdx_64 + ctx->field->toInt(_v_58)*_sigSizes_60[1] + 6*_sigSizes_60[2]; + ctx->getSignal(ctx->cIdx, _offset_121, _sigValue_53); + _sigIdx_65 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_61 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_59 = i + 0; + _offset_123 = _sigIdx_65 + ctx->field->toInt(_v_59)*_sigSizes_61[1] + 4*_sigSizes_61[2]; + ctx->getSignal(ctx->cIdx, _offset_123, _sigValue_54); + ctx->field->sub(_tmp_45,_sigValue_53,_sigValue_54); + _sigIdx_66 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_62 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_60 = i + 0; + _offset_125 = _sigIdx_66 + ctx->field->toInt(_v_60)*_sigSizes_62[1] + 2*_sigSizes_62[2]; + ctx->getSignal(ctx->cIdx, _offset_125, _sigValue_55); + ctx->field->sub(_tmp_46,_tmp_45,_sigValue_55); + _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_63 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_61 = i + 0; + _offset_127 = _sigIdx_67 + ctx->field->toInt(_v_61)*_sigSizes_63[1] + 0*_sigSizes_63[2]; + ctx->getSignal(ctx->cIdx, _offset_127, _sigValue_56); + ctx->field->add(_tmp_47,_tmp_46,_sigValue_56); + _sigIdx_68 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_64 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_128 = _sigIdx_68 + 1*_sigSizes_64[1]; + ctx->getSignal(ctx->cIdx, _offset_128, _sigValue_57); + ctx->field->mul(_tmp_48,_tmp_47,_sigValue_57); + _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_65 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _v_62 = i + 0; + _offset_130 = _sigIdx_69 + ctx->field->toInt(_v_62)*_sigSizes_65[1]; + ctx->setSignal(ctx->cIdx, _offset_130, _tmp_48); + + /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s[0] */ + _sigIdx_70 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_66 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_63 = i + 0; + _offset_132 = _sigIdx_70 + ctx->field->toInt(_v_63)*_sigSizes_66[1] + 5*_sigSizes_66[2]; + ctx->getSignal(ctx->cIdx, _offset_132, _sigValue_58); + _sigIdx_71 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_64 = i + 0; + _offset_134 = _sigIdx_71 + ctx->field->toInt(_v_64)*_sigSizes_67[1] + 4*_sigSizes_67[2]; + ctx->getSignal(ctx->cIdx, _offset_134, _sigValue_59); + ctx->field->sub(_tmp_49,_sigValue_58,_sigValue_59); + _sigIdx_72 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_68 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_65 = i + 0; + _offset_136 = _sigIdx_72 + ctx->field->toInt(_v_65)*_sigSizes_68[1] + 1*_sigSizes_68[2]; + ctx->getSignal(ctx->cIdx, _offset_136, _sigValue_60); + ctx->field->sub(_tmp_50,_tmp_49,_sigValue_60); + _sigIdx_73 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_66 = i + 0; + _offset_138 = _sigIdx_73 + ctx->field->toInt(_v_66)*_sigSizes_69[1] + 0*_sigSizes_69[2]; + ctx->getSignal(ctx->cIdx, _offset_138, _sigValue_61); + ctx->field->add(_tmp_51,_tmp_50,_sigValue_61); + _sigIdx_74 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_70 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_139 = _sigIdx_74 + 0*_sigSizes_70[1]; + ctx->getSignal(ctx->cIdx, _offset_139, _sigValue_62); + ctx->field->mul(_tmp_52,_tmp_51,_sigValue_62); + _sigIdx_75 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_71 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _v_67 = i + 0; + _offset_141 = _sigIdx_75 + ctx->field->toInt(_v_67)*_sigSizes_71[1]; + ctx->setSignal(ctx->cIdx, _offset_141, _tmp_52); + + /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) */ + _sigIdx_76 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_72 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_68 = i + 0; + _offset_143 = _sigIdx_76 + ctx->field->toInt(_v_68)*_sigSizes_72[1] + 4*_sigSizes_72[2]; + ctx->getSignal(ctx->cIdx, _offset_143, _sigValue_63); + _sigIdx_77 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_73 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_69 = i + 0; + _offset_145 = _sigIdx_77 + ctx->field->toInt(_v_69)*_sigSizes_73[1] + 0*_sigSizes_73[2]; + ctx->getSignal(ctx->cIdx, _offset_145, _sigValue_64); + ctx->field->sub(_tmp_53,_sigValue_63,_sigValue_64); + _sigIdx_78 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_74 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _v_70 = i + 0; + _offset_147 = _sigIdx_78 + ctx->field->toInt(_v_70)*_sigSizes_74[1]; + ctx->setSignal(ctx->cIdx, _offset_147, _tmp_53); + + /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ + _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_75 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_71 = i + 0; + _offset_149 = _sigIdx_79 + ctx->field->toInt(_v_71)*_sigSizes_75[1] + 3*_sigSizes_75[2]; + ctx->getSignal(ctx->cIdx, _offset_149, _sigValue_65); + _sigIdx_80 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_76 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_72 = i + 0; + _offset_151 = _sigIdx_80 + ctx->field->toInt(_v_72)*_sigSizes_76[1] + 2*_sigSizes_76[2]; + ctx->getSignal(ctx->cIdx, _offset_151, _sigValue_66); + ctx->field->sub(_tmp_54,_sigValue_65,_sigValue_66); + _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_77 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_73 = i + 0; + _offset_153 = _sigIdx_81 + ctx->field->toInt(_v_73)*_sigSizes_77[1] + 1*_sigSizes_77[2]; + ctx->getSignal(ctx->cIdx, _offset_153, _sigValue_67); + ctx->field->sub(_tmp_55,_tmp_54,_sigValue_67); + _sigIdx_82 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_78 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_74 = i + 0; + _offset_155 = _sigIdx_82 + ctx->field->toInt(_v_74)*_sigSizes_78[1] + 0*_sigSizes_78[2]; + ctx->getSignal(ctx->cIdx, _offset_155, _sigValue_68); + ctx->field->add(_tmp_56,_tmp_55,_sigValue_68); + _sigIdx_83 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); + ctx->getSignal(ctx->cIdx, _sigIdx_83, _sigValue_69); + ctx->field->mul(_tmp_57,_tmp_56,_sigValue_69); + _sigIdx_84 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _v_75 = i + 0; + _offset_157 = _sigIdx_84 + ctx->field->toInt(_v_75)*_sigSizes_79[1]; + ctx->setSignal(ctx->cIdx, _offset_157, _tmp_57); + + /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ + _sigIdx_85 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_80 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_76 = i + 0; + _offset_159 = _sigIdx_85 + ctx->field->toInt(_v_76)*_sigSizes_80[1] + 2*_sigSizes_80[2]; + ctx->getSignal(ctx->cIdx, _offset_159, _sigValue_70); + _sigIdx_86 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_77 = i + 0; + _offset_161 = _sigIdx_86 + ctx->field->toInt(_v_77)*_sigSizes_81[1] + 0*_sigSizes_81[2]; + ctx->getSignal(ctx->cIdx, _offset_161, _sigValue_71); + ctx->field->sub(_tmp_58,_sigValue_70,_sigValue_71); + _sigIdx_87 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_82 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_162 = _sigIdx_87 + 1*_sigSizes_82[1]; + ctx->getSignal(ctx->cIdx, _offset_162, _sigValue_72); + ctx->field->mul(_tmp_59,_tmp_58,_sigValue_72); + _sigIdx_88 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_83 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _v_78 = i + 0; + _offset_164 = _sigIdx_88 + ctx->field->toInt(_v_78)*_sigSizes_83[1]; + ctx->setSignal(ctx->cIdx, _offset_164, _tmp_59); + + /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ + _sigIdx_89 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_84 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_79 = i + 0; + _offset_166 = _sigIdx_89 + ctx->field->toInt(_v_79)*_sigSizes_84[1] + 1*_sigSizes_84[2]; + ctx->getSignal(ctx->cIdx, _offset_166, _sigValue_73); + _sigIdx_90 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_85 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_80 = i + 0; + _offset_168 = _sigIdx_90 + ctx->field->toInt(_v_80)*_sigSizes_85[1] + 0*_sigSizes_85[2]; + ctx->getSignal(ctx->cIdx, _offset_168, _sigValue_74); + ctx->field->sub(_tmp_60,_sigValue_73,_sigValue_74); + _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_86 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_169 = _sigIdx_91 + 0*_sigSizes_86[1]; + ctx->getSignal(ctx->cIdx, _offset_169, _sigValue_75); + ctx->field->mul(_tmp_61,_tmp_60,_sigValue_75); + _sigIdx_92 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_87 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _v_81 = i + 0; + _offset_171 = _sigIdx_92 + ctx->field->toInt(_v_81)*_sigSizes_87[1]; + ctx->setSignal(ctx->cIdx, _offset_171, _tmp_61); + + /* a[i] <== ( c[i][ 0] ) */ + _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _sigSizes_88 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); + _v_82 = i + 0; + _offset_173 = _sigIdx_93 + ctx->field->toInt(_v_82)*_sigSizes_88[1] + 0*_sigSizes_88[2]; + ctx->getSignal(ctx->cIdx, _offset_173, _sigValue_76); + _sigIdx_94 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_89 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _v_83 = i + 0; + _offset_175 = _sigIdx_94 + ctx->field->toInt(_v_83)*_sigSizes_89[1]; + ctx->setSignal(ctx->cIdx, _offset_175, _sigValue_76); + + /* out[i] <== ( a210[i] + a21[i] + a20[i] + a2[i] ) * s[2] + + ( a10[i] + a1[i] + a0[i] + a[i] ) */ + _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _sigSizes_90 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); + _v_84 = i + 0; + _offset_177 = _sigIdx_95 + ctx->field->toInt(_v_84)*_sigSizes_90[1]; + ctx->getSignal(ctx->cIdx, _offset_177, _sigValue_77); + _sigIdx_96 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); + _v_85 = i + 0; + _offset_179 = _sigIdx_96 + ctx->field->toInt(_v_85)*_sigSizes_91[1]; + ctx->getSignal(ctx->cIdx, _offset_179, _sigValue_78); + ctx->field->add(_tmp_62,_sigValue_77,_sigValue_78); + _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _sigSizes_92 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); + _v_86 = i + 0; + _offset_181 = _sigIdx_97 + ctx->field->toInt(_v_86)*_sigSizes_92[1]; + ctx->getSignal(ctx->cIdx, _offset_181, _sigValue_79); + ctx->field->add(_tmp_63,_tmp_62,_sigValue_79); + _sigIdx_98 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); + _v_87 = i + 0; + _offset_183 = _sigIdx_98 + ctx->field->toInt(_v_87)*_sigSizes_93[1]; + ctx->getSignal(ctx->cIdx, _offset_183, _sigValue_80); + ctx->field->add(_tmp_64,_tmp_63,_sigValue_80); + _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _sigSizes_94 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); + _offset_184 = _sigIdx_99 + 2*_sigSizes_94[1]; + ctx->getSignal(ctx->cIdx, _offset_184, _sigValue_81); + ctx->field->mul(_tmp_65,_tmp_64,_sigValue_81); + _sigIdx_100 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); + _v_88 = i + 0; + _offset_186 = _sigIdx_100 + ctx->field->toInt(_v_88)*_sigSizes_95[1]; + ctx->getSignal(ctx->cIdx, _offset_186, _sigValue_82); + _sigIdx_101 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _sigSizes_96 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); + _v_89 = i + 0; + _offset_188 = _sigIdx_101 + ctx->field->toInt(_v_89)*_sigSizes_96[1]; + ctx->getSignal(ctx->cIdx, _offset_188, _sigValue_83); + ctx->field->add(_tmp_66,_sigValue_82,_sigValue_83); + _sigIdx_102 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); + _v_90 = i + 0; + _offset_190 = _sigIdx_102 + ctx->field->toInt(_v_90)*_sigSizes_97[1]; + ctx->getSignal(ctx->cIdx, _offset_190, _sigValue_84); + ctx->field->add(_tmp_67,_tmp_66,_sigValue_84); + _sigIdx_103 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _sigSizes_98 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); + _v_91 = i + 0; + _offset_192 = _sigIdx_103 + ctx->field->toInt(_v_91)*_sigSizes_98[1]; + ctx->getSignal(ctx->cIdx, _offset_192, _sigValue_85); + ctx->field->add(_tmp_68,_tmp_67,_sigValue_85); + ctx->field->add(_tmp_69,_tmp_65,_tmp_68); + _sigIdx_104 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_92 = i + 0; + _offset_194 = _sigIdx_104 + ctx->field->toInt(_v_92)*_sigSizes_99[1]; + ctx->setSignal(ctx->cIdx, _offset_194, _tmp_69); + _v_93 = i + 0; + ctx->field->add(_tmp_70, _v_93, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_70, 1); + _v_94 = i + 0; + ctx->field->lt(_tmp_71,_v_94,_const); + _cond = ctx->field->isTrue(_tmp_71); + } + + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_sigValue_25, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_sigValue_26, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_27, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_sigValue_28, 1); + ctx->freeBigInts(_sigValue_29, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_30, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_sigValue_31, 1); + ctx->freeBigInts(_sigValue_32, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_sigValue_33, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_34, 1); + ctx->freeBigInts(_sigValue_35, 1); + ctx->freeBigInts(_sigValue_36, 1); + ctx->freeBigInts(_tmp_27, 1); + ctx->freeBigInts(_sigValue_37, 1); + ctx->freeBigInts(_tmp_28, 1); + ctx->freeBigInts(_sigValue_38, 1); + ctx->freeBigInts(_tmp_29, 1); + ctx->freeBigInts(_sigValue_39, 1); + ctx->freeBigInts(_tmp_30, 1); + ctx->freeBigInts(_sigValue_40, 1); + ctx->freeBigInts(_sigValue_41, 1); + ctx->freeBigInts(_tmp_31, 1); + ctx->freeBigInts(_sigValue_42, 1); + ctx->freeBigInts(_tmp_32, 1); + ctx->freeBigInts(_sigValue_43, 1); + ctx->freeBigInts(_tmp_33, 1); + ctx->freeBigInts(_tmp_34, 1); + ctx->freeBigInts(_tmp_36, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_44, 1); + ctx->freeBigInts(_sigValue_45, 1); + ctx->freeBigInts(_tmp_37, 1); + ctx->freeBigInts(_sigValue_46, 1); + ctx->freeBigInts(_tmp_38, 1); + ctx->freeBigInts(_sigValue_47, 1); + ctx->freeBigInts(_tmp_39, 1); + ctx->freeBigInts(_sigValue_48, 1); + ctx->freeBigInts(_tmp_40, 1); + ctx->freeBigInts(_sigValue_49, 1); + ctx->freeBigInts(_tmp_41, 1); + ctx->freeBigInts(_sigValue_50, 1); + ctx->freeBigInts(_tmp_42, 1); + ctx->freeBigInts(_sigValue_51, 1); + ctx->freeBigInts(_tmp_43, 1); + ctx->freeBigInts(_sigValue_52, 1); + ctx->freeBigInts(_tmp_44, 1); + ctx->freeBigInts(_sigValue_53, 1); + ctx->freeBigInts(_sigValue_54, 1); + ctx->freeBigInts(_tmp_45, 1); + ctx->freeBigInts(_sigValue_55, 1); + ctx->freeBigInts(_tmp_46, 1); + ctx->freeBigInts(_sigValue_56, 1); + ctx->freeBigInts(_tmp_47, 1); + ctx->freeBigInts(_sigValue_57, 1); + ctx->freeBigInts(_tmp_48, 1); + ctx->freeBigInts(_sigValue_58, 1); + ctx->freeBigInts(_sigValue_59, 1); + ctx->freeBigInts(_tmp_49, 1); + ctx->freeBigInts(_sigValue_60, 1); + ctx->freeBigInts(_tmp_50, 1); + ctx->freeBigInts(_sigValue_61, 1); + ctx->freeBigInts(_tmp_51, 1); + ctx->freeBigInts(_sigValue_62, 1); + ctx->freeBigInts(_tmp_52, 1); + ctx->freeBigInts(_sigValue_63, 1); + ctx->freeBigInts(_sigValue_64, 1); + ctx->freeBigInts(_tmp_53, 1); + ctx->freeBigInts(_sigValue_65, 1); + ctx->freeBigInts(_sigValue_66, 1); + ctx->freeBigInts(_tmp_54, 1); + ctx->freeBigInts(_sigValue_67, 1); + ctx->freeBigInts(_tmp_55, 1); + ctx->freeBigInts(_sigValue_68, 1); + ctx->freeBigInts(_tmp_56, 1); + ctx->freeBigInts(_sigValue_69, 1); + ctx->freeBigInts(_tmp_57, 1); + ctx->freeBigInts(_sigValue_70, 1); + ctx->freeBigInts(_sigValue_71, 1); + ctx->freeBigInts(_tmp_58, 1); + ctx->freeBigInts(_sigValue_72, 1); + ctx->freeBigInts(_tmp_59, 1); + ctx->freeBigInts(_sigValue_73, 1); + ctx->freeBigInts(_sigValue_74, 1); + ctx->freeBigInts(_tmp_60, 1); + ctx->freeBigInts(_sigValue_75, 1); + ctx->freeBigInts(_tmp_61, 1); + ctx->freeBigInts(_sigValue_76, 1); + ctx->freeBigInts(_sigValue_77, 1); + ctx->freeBigInts(_sigValue_78, 1); + ctx->freeBigInts(_tmp_62, 1); + ctx->freeBigInts(_sigValue_79, 1); + ctx->freeBigInts(_tmp_63, 1); + ctx->freeBigInts(_sigValue_80, 1); + ctx->freeBigInts(_tmp_64, 1); + ctx->freeBigInts(_sigValue_81, 1); + ctx->freeBigInts(_tmp_65, 1); + ctx->freeBigInts(_sigValue_82, 1); + ctx->freeBigInts(_sigValue_83, 1); + ctx->freeBigInts(_tmp_66, 1); + ctx->freeBigInts(_sigValue_84, 1); + ctx->freeBigInts(_tmp_67, 1); + ctx->freeBigInts(_sigValue_85, 1); + ctx->freeBigInts(_tmp_68, 1); + ctx->freeBigInts(_tmp_69, 1); + ctx->freeBigInts(_tmp_70, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_71, 1); +} + +/* +Montgomery2Edwards +*/ +void Montgomery2Edwards_f4648cd1308b7594(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + Circom_Sizes _sigSizes; + int _offset; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes_1; + int _offset_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_2; + Circom_Sizes _sigSizes_2; + int _offset_2; + int _sigIdx_3; + Circom_Sizes _sigSizes_3; + int _offset_3; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "1", 10); + PBigInt _tmp_1 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_4; + int _offset_4; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "1", 10); + PBigInt _tmp_2 = ctx->allocBigInts(1); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_5; + Circom_Sizes _sigSizes_5; + int _offset_5; + int _sigIdx_6; + Circom_Sizes _sigSizes_6; + int _offset_6; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + int _sigIdx_7; + Circom_Sizes _sigSizes_7; + int _offset_7; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_8; + int _offset_8; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_9; + Circom_Sizes _sigSizes_9; + int _offset_9; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + int _sigIdx_10; + Circom_Sizes _sigSizes_10; + int _offset_10; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_5 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_11; + Circom_Sizes _sigSizes_11; + int _offset_11; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + + + /* signal input in[2] */ + + /* signal output out[2] */ + + /* out[0] <-- in[0] / in[1] */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset = _sigIdx + 0*_sigSizes[1]; + ctx->getSignal(ctx->cIdx, _offset, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_1 = _sigIdx_1 + 1*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); + ctx->field->div(_tmp,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_2 = _sigIdx_2 + 0*_sigSizes_2[1]; + ctx->setSignal(ctx->cIdx, _offset_2, _tmp); + + /* out[1] <-- (in[0] - 1) / (in[0] + 1) */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_3 = _sigIdx_3 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_2); + ctx->field->sub(_tmp_1,_sigValue_2,_const); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_4 = _sigIdx_4 + 0*_sigSizes_4[1]; + ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_3); + ctx->field->add(_tmp_2,_sigValue_3,_const_1); + ctx->field->div(_tmp_3,_tmp_1,_tmp_2); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_5 = _sigIdx_5 + 1*_sigSizes_5[1]; + ctx->setSignal(ctx->cIdx, _offset_5, _tmp_3); + + /* out[0] * in[1] === in[0] */ + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_4); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_7 = _sigIdx_7 + 1*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_5); + ctx->field->mul(_tmp_4,_sigValue_4,_sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_8 = _sigIdx_8 + 0*_sigSizes_8[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_6); + ctx->checkConstraint(_tmp_4, _sigValue_6, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:55:4"); + /* out[1] * (in[0] + 1) === in[0] - 1 */ + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; + ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_7); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_8); + ctx->field->add(_tmp_5,_sigValue_8,_const_2); + ctx->field->mul(_tmp_6,_sigValue_7,_tmp_5); + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; + ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_9); + ctx->field->sub(_tmp_7,_sigValue_9,_const_3); + ctx->checkConstraint(_tmp_6, _tmp_7, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:56:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_7, 1); +} + +/* +BabyAdd +*/ +void BabyAdd_4d10bd4b8f5eb590(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + PBigInt _sigValue = ctx->allocBigInts(1); + int _sigIdx_1; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + PBigInt _tmp = ctx->allocBigInts(1); + int _sigIdx_2; + int _sigIdx_3; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + int _sigIdx_4; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _tmp_1 = ctx->allocBigInts(1); + int _sigIdx_5; + int _sigIdx_6; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "21888242871839275222246405745257275088548364400416034343698204186575808326917", 10); + PBigInt _tmp_3 = ctx->allocBigInts(1); + int _sigIdx_7; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + int _sigIdx_8; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + int _sigIdx_9; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _tmp_5 = ctx->allocBigInts(1); + PBigInt _tmp_6 = ctx->allocBigInts(1); + int _sigIdx_10; + int _sigIdx_11; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + int _sigIdx_12; + PBigInt _sigValue_9 = ctx->allocBigInts(1); + PBigInt _tmp_7 = ctx->allocBigInts(1); + int _sigIdx_13; + int _sigIdx_14; + PBigInt _sigValue_10 = ctx->allocBigInts(1); + int _sigIdx_15; + PBigInt _sigValue_11 = ctx->allocBigInts(1); + PBigInt _tmp_8 = ctx->allocBigInts(1); + int _sigIdx_16; + PBigInt _sigValue_12 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "168696", 10); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_17; + int _sigIdx_18; + PBigInt _sigValue_13 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "168696", 10); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "1", 10); + PBigInt _tmp_13 = ctx->allocBigInts(1); + int _sigIdx_19; + PBigInt _sigValue_14 = ctx->allocBigInts(1); + PBigInt _tmp_14 = ctx->allocBigInts(1); + int _sigIdx_20; + PBigInt _sigValue_15 = ctx->allocBigInts(1); + int _sigIdx_21; + PBigInt _sigValue_16 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + int _sigIdx_22; + PBigInt _sigValue_17 = ctx->allocBigInts(1); + int _sigIdx_23; + PBigInt _sigValue_18 = ctx->allocBigInts(1); + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "168700", 10); + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _tmp_17 = ctx->allocBigInts(1); + int _sigIdx_24; + PBigInt _sigValue_19 = ctx->allocBigInts(1); + PBigInt _tmp_18 = ctx->allocBigInts(1); + int _sigIdx_25; + PBigInt _sigValue_20 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "168696", 10); + PBigInt _tmp_19 = ctx->allocBigInts(1); + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "1", 10); + PBigInt _tmp_20 = ctx->allocBigInts(1); + PBigInt _tmp_21 = ctx->allocBigInts(1); + int _sigIdx_26; + int _sigIdx_27; + PBigInt _sigValue_21 = ctx->allocBigInts(1); + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "168696", 10); + PBigInt _tmp_22 = ctx->allocBigInts(1); + PBigInt _const_9; + _const_9 = ctx->allocBigInts(1); + mpz_set_str(_const_9[0], "1", 10); + PBigInt _tmp_23 = ctx->allocBigInts(1); + int _sigIdx_28; + PBigInt _sigValue_22 = ctx->allocBigInts(1); + PBigInt _tmp_24 = ctx->allocBigInts(1); + int _sigIdx_29; + PBigInt _sigValue_23 = ctx->allocBigInts(1); + int _sigIdx_30; + PBigInt _sigValue_24 = ctx->allocBigInts(1); + PBigInt _const_10; + _const_10 = ctx->allocBigInts(1); + mpz_set_str(_const_10[0], "168700", 10); + PBigInt _tmp_25 = ctx->allocBigInts(1); + PBigInt _tmp_26 = ctx->allocBigInts(1); + int _sigIdx_31; + PBigInt _sigValue_25 = ctx->allocBigInts(1); + PBigInt _tmp_27 = ctx->allocBigInts(1); + + + /* signal input x1 */ + + /* signal input y1 */ + + /* signal input x2 */ + + /* signal input y2 */ + + /* signal output xout */ + + /* signal output yout */ + + /* signal beta */ + + /* signal gamma */ + + /* signal delta */ + + /* signal tau */ + + /* var a = 168700 */ + + /* var d = 168696 */ + + /* beta <== x1*y2 */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); + ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue_1); + ctx->field->mul(_tmp,_sigValue,_sigValue_1); + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); + + /* gamma <== y1*x2 */ + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_4, _sigValue_3); + ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); + + /* delta <== (-a*x1+y1)*(x2 + y2) */ + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_6, _sigValue_4); + ctx->field->mul(_tmp_3,_const,_sigValue_4); + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); + ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); + ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_8, _sigValue_6); + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); + ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); + ctx->field->add(_tmp_5,_sigValue_6,_sigValue_7); + ctx->field->mul(_tmp_6,_tmp_4,_tmp_5); + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->setSignal(ctx->cIdx, _sigIdx_10, _tmp_6); + + /* tau <== beta * gamma */ + _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_8); + _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_9); + ctx->field->mul(_tmp_7,_sigValue_8,_sigValue_9); + _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->setSignal(ctx->cIdx, _sigIdx_13, _tmp_7); + + /* xout <-- (beta + gamma) / (1+ d*tau) */ + _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_14, _sigValue_10); + _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_11); + ctx->field->add(_tmp_8,_sigValue_10,_sigValue_11); + _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_16, _sigValue_12); + ctx->field->mul(_tmp_9,_const_1,_sigValue_12); + ctx->field->add(_tmp_10,_const_2,_tmp_9); + ctx->field->div(_tmp_11,_tmp_8,_tmp_10); + _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); + ctx->setSignal(ctx->cIdx, _sigIdx_17, _tmp_11); + + /* (1+ d*tau) * xout === (beta + gamma) */ + _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_18, _sigValue_13); + ctx->field->mul(_tmp_12,_const_3,_sigValue_13); + ctx->field->add(_tmp_13,_const_4,_tmp_12); + _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); + ctx->getSignal(ctx->cIdx, _sigIdx_19, _sigValue_14); + ctx->field->mul(_tmp_14,_tmp_13,_sigValue_14); + _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_20, _sigValue_15); + _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_21, _sigValue_16); + ctx->field->add(_tmp_15,_sigValue_15,_sigValue_16); + ctx->checkConstraint(_tmp_14, _tmp_15, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:45:4"); + /* yout <-- (delta + a*beta - gamma) / (1-d*tau) */ + _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->getSignal(ctx->cIdx, _sigIdx_22, _sigValue_17); + _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_23, _sigValue_18); + ctx->field->mul(_tmp_16,_const_5,_sigValue_18); + ctx->field->add(_tmp_17,_sigValue_17,_tmp_16); + _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_24, _sigValue_19); + ctx->field->sub(_tmp_18,_tmp_17,_sigValue_19); + _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_25, _sigValue_20); + ctx->field->mul(_tmp_19,_const_6,_sigValue_20); + ctx->field->sub(_tmp_20,_const_7,_tmp_19); + ctx->field->div(_tmp_21,_tmp_18,_tmp_20); + _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); + ctx->setSignal(ctx->cIdx, _sigIdx_26, _tmp_21); + + /* (1-d*tau)*yout === (delta + a*beta - gamma) */ + _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); + ctx->getSignal(ctx->cIdx, _sigIdx_27, _sigValue_21); + ctx->field->mul(_tmp_22,_const_8,_sigValue_21); + ctx->field->sub(_tmp_23,_const_9,_tmp_22); + _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); + ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_22); + ctx->field->mul(_tmp_24,_tmp_23,_sigValue_22); + _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); + ctx->getSignal(ctx->cIdx, _sigIdx_29, _sigValue_23); + _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); + ctx->getSignal(ctx->cIdx, _sigIdx_30, _sigValue_24); + ctx->field->mul(_tmp_25,_const_10,_sigValue_24); + ctx->field->add(_tmp_26,_sigValue_23,_tmp_25); + _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); + ctx->getSignal(ctx->cIdx, _sigIdx_31, _sigValue_25); + ctx->field->sub(_tmp_27,_tmp_26,_sigValue_25); + ctx->checkConstraint(_tmp_24, _tmp_27, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:48:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_tmp, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_tmp_5, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_sigValue_8, 1); + ctx->freeBigInts(_sigValue_9, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(_sigValue_10, 1); + ctx->freeBigInts(_sigValue_11, 1); + ctx->freeBigInts(_tmp_8, 1); + ctx->freeBigInts(_sigValue_12, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_13, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_sigValue_14, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_sigValue_15, 1); + ctx->freeBigInts(_sigValue_16, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_sigValue_17, 1); + ctx->freeBigInts(_sigValue_18, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_sigValue_19, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_20, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_19, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_20, 1); + ctx->freeBigInts(_tmp_21, 1); + ctx->freeBigInts(_sigValue_21, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_22, 1); + ctx->freeBigInts(_const_9, 1); + ctx->freeBigInts(_tmp_23, 1); + ctx->freeBigInts(_sigValue_22, 1); + ctx->freeBigInts(_tmp_24, 1); + ctx->freeBigInts(_sigValue_23, 1); + ctx->freeBigInts(_sigValue_24, 1); + ctx->freeBigInts(_const_10, 1); + ctx->freeBigInts(_tmp_25, 1); + ctx->freeBigInts(_tmp_26, 1); + ctx->freeBigInts(_sigValue_25, 1); + ctx->freeBigInts(_tmp_27, 1); +} + +/* +Num2Bits +n=253 +*/ +void Num2Bits_615abb7f710c8a84(Circom_CalcWit *ctx) { + // Header + int _sigIdx; + PBigInt _sigValue = ctx->allocBigInts(1); + PBigInt _const; + _const = ctx->allocBigInts(1); + mpz_set_str(_const[0], "0", 10); + PBigInt _tmp_1 = ctx->allocBigInts(1); + PBigInt _const_1; + _const_1 = ctx->allocBigInts(1); + mpz_set_str(_const_1[0], "1", 10); + PBigInt _tmp_2 = ctx->allocBigInts(1); + int _sigIdx_1; + Circom_Sizes _sigSizes; + int _offset_6; + int _sigIdx_2; + Circom_Sizes _sigSizes_1; + int _offset_8; + PBigInt _sigValue_1 = ctx->allocBigInts(1); + int _sigIdx_3; + Circom_Sizes _sigSizes_2; + int _offset_10; + PBigInt _sigValue_2 = ctx->allocBigInts(1); + PBigInt _const_2; + _const_2 = ctx->allocBigInts(1); + mpz_set_str(_const_2[0], "1", 10); + PBigInt _tmp_3 = ctx->allocBigInts(1); + PBigInt _tmp_4 = ctx->allocBigInts(1); + PBigInt _num_4 = ctx->allocBigInts(1); + int _sigIdx_4; + Circom_Sizes _sigSizes_3; + int _offset_13; + PBigInt _sigValue_3 = ctx->allocBigInts(1); + PBigInt _const_3; + _const_3 = ctx->allocBigInts(1); + mpz_set_str(_const_3[0], "1", 10); + PBigInt _tmp_6 = ctx->allocBigInts(1); + PBigInt _const_4; + _const_4 = ctx->allocBigInts(1); + mpz_set_str(_const_4[0], "0", 10); + PBigInt _tmp_7 = ctx->allocBigInts(1); + PBigInt lc1 = ctx->allocBigInts(1); + PBigInt _tmp_9 = ctx->allocBigInts(1); + PBigInt i = ctx->allocBigInts(1); + int _cond; + int _sigIdx_5; + PBigInt _sigValue_4 = ctx->allocBigInts(1); + PBigInt _v_12; + PBigInt _tmp_10 = ctx->allocBigInts(1); + PBigInt _const_5; + _const_5 = ctx->allocBigInts(1); + mpz_set_str(_const_5[0], "1", 10); + PBigInt _tmp_11 = ctx->allocBigInts(1); + int _sigIdx_6; + Circom_Sizes _sigSizes_4; + PBigInt _v_13; + int _offset_22; + int _sigIdx_7; + Circom_Sizes _sigSizes_5; + PBigInt _v_14; + int _offset_24; + PBigInt _sigValue_5 = ctx->allocBigInts(1); + int _sigIdx_8; + Circom_Sizes _sigSizes_6; + PBigInt _v_15; + int _offset_26; + PBigInt _sigValue_6 = ctx->allocBigInts(1); + PBigInt _const_6; + _const_6 = ctx->allocBigInts(1); + mpz_set_str(_const_6[0], "1", 10); + PBigInt _tmp_12 = ctx->allocBigInts(1); + PBigInt _tmp_13 = ctx->allocBigInts(1); + PBigInt _num_8 = ctx->allocBigInts(1); + PBigInt _v_16; + int _sigIdx_9; + Circom_Sizes _sigSizes_7; + PBigInt _v_17; + int _offset_29; + PBigInt _sigValue_7 = ctx->allocBigInts(1); + PBigInt _v_18; + PBigInt _const_7; + _const_7 = ctx->allocBigInts(1); + mpz_set_str(_const_7[0], "2", 10); + PBigInt _tmp_14 = ctx->allocBigInts(1); + PBigInt _tmp_15 = ctx->allocBigInts(1); + PBigInt _tmp_16 = ctx->allocBigInts(1); + PBigInt _v_19; + PBigInt _tmp_17 = ctx->allocBigInts(1); + PBigInt _v_20; + PBigInt _const_8; + _const_8 = ctx->allocBigInts(1); + mpz_set_str(_const_8[0], "253", 10); + PBigInt _tmp_18 = ctx->allocBigInts(1); + PBigInt _v_22; + int _sigIdx_10; + PBigInt _sigValue_8 = ctx->allocBigInts(1); + + + /* signal input in */ + + /* signal output out[n] */ + + /* var lc1=0 */ + + /* for (var i = 0,i> i) & 1 */ + _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); + ctx->field->shr(_tmp_1,_sigValue,_const); + ctx->field->band(_tmp_2,_tmp_1,_const_1); + _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_6 = _sigIdx_1 + 0*_sigSizes[1]; + ctx->setSignal(ctx->cIdx, _offset_6, _tmp_2); + + /* out[i] * (out[i] -1 ) === 0 */ + _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_8 = _sigIdx_2 + 0*_sigSizes_1[1]; + ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_1); + _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_10 = _sigIdx_3 + 0*_sigSizes_2[1]; + ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_2); + ctx->field->sub(_tmp_3,_sigValue_2,_const_2); + ctx->field->mul(_tmp_4,_sigValue_1,_tmp_3); + ctx->checkConstraint(_tmp_4, _num_4, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); + /* lc1 += out[i] * 2**i */ + _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _offset_13 = _sigIdx_4 + 0*_sigSizes_3[1]; + ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); + ctx->field->mul(_tmp_6,_sigValue_3,_const_3); + ctx->field->add(_tmp_7,_const_4,_tmp_6); + ctx->field->copyn(lc1, _tmp_7, 1); + mpz_set_str(_tmp_9[0], "1", 10); + mpz_set_str(i[0], "1", 10); + _cond = ctx->field->isTrue(_tmp_9); + while (_cond) { + + /* out[i] <-- (in >> i) & 1 */ + _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); + _v_12 = i + 0; + ctx->field->shr(_tmp_10,_sigValue_4,_v_12); + ctx->field->band(_tmp_11,_tmp_10,_const_5); + _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_13 = i + 0; + _offset_22 = _sigIdx_6 + ctx->field->toInt(_v_13)*_sigSizes_4[1]; + ctx->setSignal(ctx->cIdx, _offset_22, _tmp_11); + + /* out[i] * (out[i] -1 ) === 0 */ + _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_14 = i + 0; + _offset_24 = _sigIdx_7 + ctx->field->toInt(_v_14)*_sigSizes_5[1]; + ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_5); + _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_15 = i + 0; + _offset_26 = _sigIdx_8 + ctx->field->toInt(_v_15)*_sigSizes_6[1]; + ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_6); + ctx->field->sub(_tmp_12,_sigValue_6,_const_6); + ctx->field->mul(_tmp_13,_sigValue_5,_tmp_12); + ctx->checkConstraint(_tmp_13, _num_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); + /* lc1 += out[i] * 2**i */ + _v_16 = lc1 + 0; + _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); + _v_17 = i + 0; + _offset_29 = _sigIdx_9 + ctx->field->toInt(_v_17)*_sigSizes_7[1]; + ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_7); + _v_18 = i + 0; + ctx->field->pow(_tmp_14,_const_7,_v_18); + ctx->field->mul(_tmp_15,_sigValue_7,_tmp_14); + ctx->field->add(_tmp_16,_v_16,_tmp_15); + ctx->field->copyn(lc1, _tmp_16, 1); + _v_19 = i + 0; + ctx->field->add(_tmp_17, _v_19, &(ctx->field->one)); + ctx->field->copyn(i, _tmp_17, 1); + _v_20 = i + 0; + ctx->field->lt(_tmp_18,_v_20,_const_8); + _cond = ctx->field->isTrue(_tmp_18); + } + + /* lc1 === in */ + _v_22 = lc1 + 0; + _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); + ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_8); + ctx->checkConstraint(_v_22, _sigValue_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:35:4"); + // Footer + ctx->freeBigInts(_sigValue, 1); + ctx->freeBigInts(_const, 1); + ctx->freeBigInts(_tmp_1, 1); + ctx->freeBigInts(_const_1, 1); + ctx->freeBigInts(_tmp_2, 1); + ctx->freeBigInts(_sigValue_1, 1); + ctx->freeBigInts(_sigValue_2, 1); + ctx->freeBigInts(_const_2, 1); + ctx->freeBigInts(_tmp_3, 1); + ctx->freeBigInts(_tmp_4, 1); + ctx->freeBigInts(_num_4, 1); + ctx->freeBigInts(_sigValue_3, 1); + ctx->freeBigInts(_const_3, 1); + ctx->freeBigInts(_tmp_6, 1); + ctx->freeBigInts(_const_4, 1); + ctx->freeBigInts(_tmp_7, 1); + ctx->freeBigInts(lc1, 1); + ctx->freeBigInts(_tmp_9, 1); + ctx->freeBigInts(i, 1); + ctx->freeBigInts(_sigValue_4, 1); + ctx->freeBigInts(_tmp_10, 1); + ctx->freeBigInts(_const_5, 1); + ctx->freeBigInts(_tmp_11, 1); + ctx->freeBigInts(_sigValue_5, 1); + ctx->freeBigInts(_sigValue_6, 1); + ctx->freeBigInts(_const_6, 1); + ctx->freeBigInts(_tmp_12, 1); + ctx->freeBigInts(_tmp_13, 1); + ctx->freeBigInts(_num_8, 1); + ctx->freeBigInts(_sigValue_7, 1); + ctx->freeBigInts(_const_7, 1); + ctx->freeBigInts(_tmp_14, 1); + ctx->freeBigInts(_tmp_15, 1); + ctx->freeBigInts(_tmp_16, 1); + ctx->freeBigInts(_tmp_17, 1); + ctx->freeBigInts(_const_8, 1); + ctx->freeBigInts(_tmp_18, 1); + ctx->freeBigInts(_sigValue_8, 1); +} + +// Components +Circom_Component _components[772] = { + {_htMain,_entryTableMain,Main_49e763aed00877a8, 1} + ,{_htPedersen,_entryTablePedersen,Pedersen_3a5f42b6d718ae32, 256} + ,{_htSegment,_entryTableSegment,Segment_a5b1c16b0dc672ca, 202} + ,{_htSegment,_entryTableSegment_1,Segment_a5bfbd6b0dd2a95a, 58} + ,{_htEdwards2Montgomery,_entryTableEdwards2Montgomery,Edwards2Montgomery_1322d6544b8b5e68, 2} + ,{_htWindow4,_entryTableWindow4,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_1,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_2,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_3,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_4,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_5,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_6,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_7,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_8,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_9,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_10,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_11,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_12,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_13,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_14,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_15,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_16,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_17,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_18,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_19,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_20,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_21,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_22,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_23,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_24,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_25,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_26,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_27,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_28,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_29,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_30,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_31,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_32,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_33,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_34,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_35,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_36,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_37,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_38,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_39,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_40,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_41,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_42,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_43,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_44,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_45,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_46,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_47,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_48,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_49,Window4_2d34837f67f5f72b, 6} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_1,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_2,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_3,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_4,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_5,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_6,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_7,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_8,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_9,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_10,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_11,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_12,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_13,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_14,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_15,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_16,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_17,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_18,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_19,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_20,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_21,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_22,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_23,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_24,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_25,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_26,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_27,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_28,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_29,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_30,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_31,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_32,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_33,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_34,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_35,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_36,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_37,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_38,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_39,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_40,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_41,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_42,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_43,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_44,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_45,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_46,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_47,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_48,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_49,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_50,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_51,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_52,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_53,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_54,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_55,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_56,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_57,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_58,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_59,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_60,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_61,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_62,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_63,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_64,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_65,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_66,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_67,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_68,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_69,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_70,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_71,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_72,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_73,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_74,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_75,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_76,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_77,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_78,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_79,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_80,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_81,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_82,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_83,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_84,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_85,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_86,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_87,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_88,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_89,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_90,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_91,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_92,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_93,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_94,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_95,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_96,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_97,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_1,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_2,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_3,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_4,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_5,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_6,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_7,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_8,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_9,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_10,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_11,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_12,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_13,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_14,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_15,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_16,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_17,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_18,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_19,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_20,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_21,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_22,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_23,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_24,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_25,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_26,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_27,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_28,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_29,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_30,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_31,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_32,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_33,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_34,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_35,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_36,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_37,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_38,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_39,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_40,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_41,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_42,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_43,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_44,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_45,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_46,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_47,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_48,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_98,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_49,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_50,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_51,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_52,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_53,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_54,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_1,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_99,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_55,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_56,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_57,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_58,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_59,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_60,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_2,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_100,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_61,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_62,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_63,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_64,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_65,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_66,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_3,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_101,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_67,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_68,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_69,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_70,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_71,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_72,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_4,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_102,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_73,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_74,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_75,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_76,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_77,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_78,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_5,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_103,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_79,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_80,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_81,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_82,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_83,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_84,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_6,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_104,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_85,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_86,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_87,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_88,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_89,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_90,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_7,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_105,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_91,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_92,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_93,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_94,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_95,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_96,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_8,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_106,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_97,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_98,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_99,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_100,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_101,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_102,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_9,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_107,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_103,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_104,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_105,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_106,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_107,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_108,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_10,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_108,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_109,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_110,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_111,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_112,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_113,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_114,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_11,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_109,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_115,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_116,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_117,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_118,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_119,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_120,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_12,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_110,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_121,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_122,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_123,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_124,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_125,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_126,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_13,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_111,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_127,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_128,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_129,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_130,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_131,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_132,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_14,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_112,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_133,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_134,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_135,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_136,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_137,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_138,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_15,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_113,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_139,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_140,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_141,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_142,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_143,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_144,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_16,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_114,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_145,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_146,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_147,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_148,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_149,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_150,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_17,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_115,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_151,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_152,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_153,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_154,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_155,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_156,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_18,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_116,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_157,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_158,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_159,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_160,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_161,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_162,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_19,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_117,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_163,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_164,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_165,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_166,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_167,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_168,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_20,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_118,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_169,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_170,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_171,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_172,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_173,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_174,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_21,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_119,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_175,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_176,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_177,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_178,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_179,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_180,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_22,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_120,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_181,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_182,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_183,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_184,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_185,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_186,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_23,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_121,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_187,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_188,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_189,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_190,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_191,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_192,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_24,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_122,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_193,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_194,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_195,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_196,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_197,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_198,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_25,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_123,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_199,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_200,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_201,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_202,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_203,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_204,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_26,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_124,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_205,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_206,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_207,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_208,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_209,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_210,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_27,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_125,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_211,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_212,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_213,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_214,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_215,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_216,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_28,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_126,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_217,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_218,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_219,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_220,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_221,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_222,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_29,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_127,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_223,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_224,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_225,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_226,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_227,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_228,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_30,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_128,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_229,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_230,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_231,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_232,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_233,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_234,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_31,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_129,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_235,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_236,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_237,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_238,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_239,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_240,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_32,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_130,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_241,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_242,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_243,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_244,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_245,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_246,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_33,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_131,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_247,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_248,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_249,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_250,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_251,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_252,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_34,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_132,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_253,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_254,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_255,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_256,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_257,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_258,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_35,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_133,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_259,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_260,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_261,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_262,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_263,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_264,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_36,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_134,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_265,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_266,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_267,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_268,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_269,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_270,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_37,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_135,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_271,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_272,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_273,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_274,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_275,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_276,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_38,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_136,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_277,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_278,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_279,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_280,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_281,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_282,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_39,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_137,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_283,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_284,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_285,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_286,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_287,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_288,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_40,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_138,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_289,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_290,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_291,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_292,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_293,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_294,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_41,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_139,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_295,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_296,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_297,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_298,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_299,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_300,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_42,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_140,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_301,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_302,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_303,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_304,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_305,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_306,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_43,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_141,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_307,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_308,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_309,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_310,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_311,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_312,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_44,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_142,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_313,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_314,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_315,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_316,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_317,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_318,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_45,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_143,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_319,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_320,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_321,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_322,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_323,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_324,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_46,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_144,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_325,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_326,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_327,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_328,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_329,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_330,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_47,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_145,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_331,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_332,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_333,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_334,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_335,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_336,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_48,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_146,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_337,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_338,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_339,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_340,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_341,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_342,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_49,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_147,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_343,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_344,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_345,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_346,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_347,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_348,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htEdwards2Montgomery,_entryTableMontgomery2Edwards,Montgomery2Edwards_f4648cd1308b7594, 2} + ,{_htEdwards2Montgomery,_entryTableEdwards2Montgomery_1,Edwards2Montgomery_1322d6544b8b5e68, 2} + ,{_htWindow4,_entryTableWindow4_50,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_51,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_52,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_53,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_54,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_55,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_56,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_57,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_58,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_59,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_60,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_61,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_62,Window4_2d34837f67f5f72b, 6} + ,{_htWindow4,_entryTableWindow4_63,Window4_2d34837f67f5f72b, 6} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_148,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_149,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_150,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_151,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_152,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_153,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_154,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_155,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_156,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_157,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_158,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_159,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_160,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_161,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_162,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_163,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_164,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_165,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_166,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_167,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_168,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_169,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_170,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_171,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_172,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_173,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_349,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_350,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_351,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_352,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_353,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_354,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_355,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_356,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_357,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_358,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_359,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_360,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_361,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_50,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_174,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_362,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_363,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_364,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_365,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_366,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_367,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_51,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_175,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_368,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_369,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_370,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_371,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_372,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_373,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_52,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_176,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_374,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_375,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_376,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_377,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_378,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_379,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_53,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_177,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_380,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_381,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_382,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_383,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_384,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_385,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_54,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_178,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_386,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_387,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_388,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_389,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_390,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_391,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_55,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_179,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_392,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_393,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_394,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_395,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_396,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_397,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_56,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_180,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_398,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_399,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_400,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_401,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_402,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_403,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_57,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_181,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_404,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_405,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_406,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_407,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_408,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_409,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_58,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_182,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_410,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_411,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_412,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_413,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_414,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_415,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_59,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_183,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_416,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_417,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_418,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_419,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_420,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_421,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_60,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_184,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_422,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_423,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_424,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_425,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_426,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_427,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_61,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_185,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_428,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_429,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_430,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_431,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_432,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_433,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_62,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_186,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_434,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_435,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_436,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_437,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_438,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_439,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMultiMux3,_entryTableMultiMux3_63,MultiMux3_af32615da3b0d5ce, 19} + ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_187,MontgomeryDouble_90f61203260940df, 2} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_440,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_441,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_442,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_443,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_444,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_445,MontgomeryAdd_6479fdda8bf6c089, 4} + ,{_htEdwards2Montgomery,_entryTableMontgomery2Edwards_1,Montgomery2Edwards_f4648cd1308b7594, 2} + ,{_htBabyAdd,_entryTableBabyAdd,BabyAdd_4d10bd4b8f5eb590, 4} + ,{_htEdwards2Montgomery,_entryTableNum2Bits,Num2Bits_615abb7f710c8a84, 1} +}; + + +// mapIsArray +u32 _mapIsInput[254] = { + 0xFFFFFFF2,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFCF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x0FCCFFFF,0x0007FFFF,0x3C78F0C0,0x0FC78F1E,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0xC3F1E186,0x0001FFFF,0x8F1E3C30,0x0C31E3C7,0xFFFE1F8F,0xE180000F,0x1E3C78F1,0xFC78618F,0x007FFFF0,0xC78F0C00,0x0C78F1E3 +,0xFF87E3C3,0x600003FF,0x8F1E3C78,0x1E1863C7,0x1FFFFC3F,0xE3C30000,0x1E3C78F1,0xE1F8F0C3,0x0000FFFF,0xC78F1E18,0x8618F1E3,0xFFFF0FC7,0xF0C00007,0x8F1E3C78,0x7E3C30C7,0x003FFFF8,0xE3C78600,0x863C78F1,0xFFC3F1E1,0x300001FF,0xC78F1E3C,0x8F0C31E3,0x0FFFFE1F,0xF1E18000,0x8F1E3C78,0xF0FC7861,0x00007FFF,0xE3C78F0C,0xC30C78F1,0xFFFF87E3,0x78600003,0xC78F1E3C,0x3F1E1863,0x001FFFFC,0xF1E3C300,0xC31E3C78,0xFFE1F8F0,0x180000FF,0xE3C78F1E,0xC78618F1,0x07FFFF0F,0x78F0C000,0xC78F1E3C,0xF87E3C30,0x00003FFF,0xF1E3C786,0xE1863C78,0xFFFFC3F1,0x3C300001,0xE3C78F1E,0x1F8F0C31,0x000FFFFE,0x78F1E180,0x618F1E3C,0xFFF0FC78,0x0C00007F,0xF1E3C78F,0xE3C30C78,0x03FFFF87,0x3C786000,0x63C78F1E,0xFC3F1E18,0x00001FFF,0x78F1E3C3 +,0xF0C31E3C,0xFFFFE1F8,0x1E180000,0xF1E3C78F,0x0FC78618,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0xC3F1E186,0x0001FFFF,0x8F1E3C30,0x0C31E3C7,0xFFFE1F8F,0xE180000F,0x1E3C78F1,0xFC78618F,0x007FFFF0,0xC78F0C00,0x0C78F1E3,0xFF87E3C3,0x600003FF,0x8F1E3C78,0x1E1863C7,0x1FFFFC3F,0xE3C30000,0x1E3C78F1,0xE1F8F0C3,0x0000FFFF,0xC78F1E18,0x8618F1E3,0xFFFF0FC7,0xF0C00007 +,0x8F1E3C78,0xE63C30C7,0xFFFFFFFF,0xE67FFFFF,0x03FFFF87,0x3C786000,0xE3C78F1E,0x03FFFF87,0x3C786000,0x63C78F1E,0xFC3F1E18,0x00001FFF,0x78F1E3C3,0xF0C31E3C,0xFFFFE1F8,0x1E180000,0xF1E3C78F,0x0FC78618,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0x0F31E186,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 +}; + +// Signal Table +int _wit2sig[3382] = { + 0,7868,7869,1,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936 +,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000 +,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064 +,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,6203 +,6204,499,477,563,564,520,528,535,542,549,556,521,529,536,543,550,557,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,517,522,523,530,537,544,551,558,565,670,671,595,573,659,660,616,624,631,638,645,652,617,625,632,639,646,653,596,597,598,599,600 +,601,602,605,606,607,608,609,610,613,618,619,626,633,640,647,654,661,664,665,666,667,672,673,678,679,680,785,786,710,688,774,775,731,739,746,753,760,767,732,740,747,754,761,768,711,712,713,714,715,716,717,720,721,722,723,724,725,728,733,734,741,748,755,762 +,769,776,779,780,781,782,787,788,793,794,795,900,901,825,803,889,890,846,854,861,868,875,882,847,855,862,869,876,883,826,827,828,829,830,831,832,835,836,837,838,839,840,843,848,849,856,863,870,877,884,891,894,895,896,897,902,903,908,909,910,1015,1016,940,918 +,1004,1005,961,969,976,983,990,997,962,970,977,984,991,998,941,942,943,944,945,946,947,950,951,952,953,954,955,958,963,964,971,978,985,992,999,1006,1009,1010,1011,1012,1017,1018,1023,1024,1025,1130,1131,1055,1033,1119,1120,1076,1084,1091,1098,1105,1112,1077,1085,1092,1099,1106,1113,1056 +,1057,1058,1059,1060,1061,1062,1065,1066,1067,1068,1069,1070,1073,1078,1079,1086,1093,1100,1107,1114,1121,1124,1125,1126,1127,1132,1133,1138,1139,1140,1245,1246,1170,1148,1234,1235,1191,1199,1206,1213,1220,1227,1192,1200,1207,1214,1221,1228,1171,1172,1173,1174,1175,1176,1177,1180,1181,1182,1183,1184,1185,1188,1193,1194 +,1201,1208,1215,1222,1229,1236,1239,1240,1241,1242,1247,1248,1253,1254,1255,1360,1361,1285,1263,1349,1350,1306,1314,1321,1328,1335,1342,1307,1315,1322,1329,1336,1343,1286,1287,1288,1289,1290,1291,1292,1295,1296,1297,1298,1299,1300,1303,1308,1309,1316,1323,1330,1337,1344,1351,1354,1355,1356,1357,1362,1363,1368,1369,1370 +,1475,1476,1400,1378,1464,1465,1421,1429,1436,1443,1450,1457,1422,1430,1437,1444,1451,1458,1401,1402,1403,1404,1405,1406,1407,1410,1411,1412,1413,1414,1415,1418,1423,1424,1431,1438,1445,1452,1459,1466,1469,1470,1471,1472,1477,1478,1483,1484,1485,1590,1591,1515,1493,1579,1580,1536,1544,1551,1558,1565,1572,1537,1545,1552 +,1559,1566,1573,1516,1517,1518,1519,1520,1521,1522,1525,1526,1527,1528,1529,1530,1533,1538,1539,1546,1553,1560,1567,1574,1581,1584,1585,1586,1587,1592,1593,1598,1599,1600,1705,1706,1630,1608,1694,1695,1651,1659,1666,1673,1680,1687,1652,1660,1667,1674,1681,1688,1631,1632,1633,1634,1635,1636,1637,1640,1641,1642,1643,1644 +,1645,1648,1653,1654,1661,1668,1675,1682,1689,1696,1699,1700,1701,1702,1707,1708,1713,1714,1715,1820,1821,1745,1723,1809,1810,1766,1774,1781,1788,1795,1802,1767,1775,1782,1789,1796,1803,1746,1747,1748,1749,1750,1751,1752,1755,1756,1757,1758,1759,1760,1763,1768,1769,1776,1783,1790,1797,1804,1811,1814,1815,1816,1817,1822 +,1823,1828,1829,1830,1935,1936,1860,1838,1924,1925,1881,1889,1896,1903,1910,1917,1882,1890,1897,1904,1911,1918,1861,1862,1863,1864,1865,1866,1867,1870,1871,1872,1873,1874,1875,1878,1883,1884,1891,1898,1905,1912,1919,1926,1929,1930,1931,1932,1937,1938,1943,1944,1945,2050,2051,1975,1953,2039,2040,1996,2004,2011,2018,2025 +,2032,1997,2005,2012,2019,2026,2033,1976,1977,1978,1979,1980,1981,1982,1985,1986,1987,1988,1989,1990,1993,1998,1999,2006,2013,2020,2027,2034,2041,2044,2045,2046,2047,2052,2053,2058,2059,2060,2165,2166,2090,2068,2154,2155,2111,2119,2126,2133,2140,2147,2112,2120,2127,2134,2141,2148,2091,2092,2093,2094,2095,2096,2097,2100 +,2101,2102,2103,2104,2105,2108,2113,2114,2121,2128,2135,2142,2149,2156,2159,2160,2161,2162,2167,2168,2173,2174,2175,2280,2281,2205,2183,2269,2270,2226,2234,2241,2248,2255,2262,2227,2235,2242,2249,2256,2263,2206,2207,2208,2209,2210,2211,2212,2215,2216,2217,2218,2219,2220,2223,2228,2229,2236,2243,2250,2257,2264,2271,2274 +,2275,2276,2277,2282,2283,2288,2289,2290,2395,2396,2320,2298,2384,2385,2341,2349,2356,2363,2370,2377,2342,2350,2357,2364,2371,2378,2321,2322,2323,2324,2325,2326,2327,2330,2331,2332,2333,2334,2335,2338,2343,2344,2351,2358,2365,2372,2379,2386,2389,2390,2391,2392,2397,2398,2403,2404,2405,2510,2511,2435,2413,2499,2500,2456 +,2464,2471,2478,2485,2492,2457,2465,2472,2479,2486,2493,2436,2437,2438,2439,2440,2441,2442,2445,2446,2447,2448,2449,2450,2453,2458,2459,2466,2473,2480,2487,2494,2501,2504,2505,2506,2507,2512,2513,2518,2519,2520,2625,2626,2550,2528,2614,2615,2571,2579,2586,2593,2600,2607,2572,2580,2587,2594,2601,2608,2551,2552,2553,2554 +,2555,2556,2557,2560,2561,2562,2563,2564,2565,2568,2573,2574,2581,2588,2595,2602,2609,2616,2619,2620,2621,2622,2627,2628,2633,2634,2635,2740,2741,2665,2643,2729,2730,2686,2694,2701,2708,2715,2722,2687,2695,2702,2709,2716,2723,2666,2667,2668,2669,2670,2671,2672,2675,2676,2677,2678,2679,2680,2683,2688,2689,2696,2703,2710 +,2717,2724,2731,2734,2735,2736,2737,2742,2743,2748,2749,2750,2855,2856,2780,2758,2844,2845,2801,2809,2816,2823,2830,2837,2802,2810,2817,2824,2831,2838,2781,2782,2783,2784,2785,2786,2787,2790,2791,2792,2793,2794,2795,2798,2803,2804,2811,2818,2825,2832,2839,2846,2849,2850,2851,2852,2857,2858,2863,2864,2865,2970,2971,2895 +,2873,2959,2960,2916,2924,2931,2938,2945,2952,2917,2925,2932,2939,2946,2953,2896,2897,2898,2899,2900,2901,2902,2905,2906,2907,2908,2909,2910,2913,2918,2919,2926,2933,2940,2947,2954,2961,2964,2965,2966,2967,2972,2973,2978,2979,2980,3085,3086,3010,2988,3074,3075,3031,3039,3046,3053,3060,3067,3032,3040,3047,3054,3061,3068 +,3011,3012,3013,3014,3015,3016,3017,3020,3021,3022,3023,3024,3025,3028,3033,3034,3041,3048,3055,3062,3069,3076,3079,3080,3081,3082,3087,3088,3093,3094,3095,3200,3201,3125,3103,3189,3190,3146,3154,3161,3168,3175,3182,3147,3155,3162,3169,3176,3183,3126,3127,3128,3129,3130,3131,3132,3135,3136,3137,3138,3139,3140,3143,3148 +,3149,3156,3163,3170,3177,3184,3191,3194,3195,3196,3197,3202,3203,3208,3209,3210,3315,3316,3240,3218,3304,3305,3261,3269,3276,3283,3290,3297,3262,3270,3277,3284,3291,3298,3241,3242,3243,3244,3245,3246,3247,3250,3251,3252,3253,3254,3255,3258,3263,3264,3271,3278,3285,3292,3299,3306,3309,3310,3311,3312,3317,3318,3323,3324 +,3325,3430,3431,3355,3333,3419,3420,3376,3384,3391,3398,3405,3412,3377,3385,3392,3399,3406,3413,3356,3357,3358,3359,3360,3361,3362,3365,3366,3367,3368,3369,3370,3373,3378,3379,3386,3393,3400,3407,3414,3421,3424,3425,3426,3427,3432,3433,3438,3439,3440,3545,3546,3470,3448,3534,3535,3491,3499,3506,3513,3520,3527,3492,3500 +,3507,3514,3521,3528,3471,3472,3473,3474,3475,3476,3477,3480,3481,3482,3483,3484,3485,3488,3493,3494,3501,3508,3515,3522,3529,3536,3539,3540,3541,3542,3547,3548,3553,3554,3555,3660,3661,3585,3563,3649,3650,3606,3614,3621,3628,3635,3642,3607,3615,3622,3629,3636,3643,3586,3587,3588,3589,3590,3591,3592,3595,3596,3597,3598 +,3599,3600,3603,3608,3609,3616,3623,3630,3637,3644,3651,3654,3655,3656,3657,3662,3663,3668,3669,3670,3775,3776,3700,3678,3764,3765,3721,3729,3736,3743,3750,3757,3722,3730,3737,3744,3751,3758,3701,3702,3703,3704,3705,3706,3707,3710,3711,3712,3713,3714,3715,3718,3723,3724,3731,3738,3745,3752,3759,3766,3769,3770,3771,3772 +,3777,3778,3783,3784,3785,3890,3891,3815,3793,3879,3880,3836,3844,3851,3858,3865,3872,3837,3845,3852,3859,3866,3873,3816,3817,3818,3819,3820,3821,3822,3825,3826,3827,3828,3829,3830,3833,3838,3839,3846,3853,3860,3867,3874,3881,3884,3885,3886,3887,3892,3893,3898,3899,3900,4005,4006,3930,3908,3994,3995,3951,3959,3966,3973 +,3980,3987,3952,3960,3967,3974,3981,3988,3931,3932,3933,3934,3935,3936,3937,3940,3941,3942,3943,3944,3945,3948,3953,3954,3961,3968,3975,3982,3989,3996,3999,4000,4001,4002,4007,4008,4013,4014,4015,4120,4121,4045,4023,4109,4110,4066,4074,4081,4088,4095,4102,4067,4075,4082,4089,4096,4103,4046,4047,4048,4049,4050,4051,4052 +,4055,4056,4057,4058,4059,4060,4063,4068,4069,4076,4083,4090,4097,4104,4111,4114,4115,4116,4117,4122,4123,4128,4129,4130,4235,4236,4160,4138,4224,4225,4181,4189,4196,4203,4210,4217,4182,4190,4197,4204,4211,4218,4161,4162,4163,4164,4165,4166,4167,4170,4171,4172,4173,4174,4175,4178,4183,4184,4191,4198,4205,4212,4219,4226 +,4229,4230,4231,4232,4237,4238,4243,4244,4245,4350,4351,4275,4253,4339,4340,4296,4304,4311,4318,4325,4332,4297,4305,4312,4319,4326,4333,4276,4277,4278,4279,4280,4281,4282,4285,4286,4287,4288,4289,4290,4293,4298,4299,4306,4313,4320,4327,4334,4341,4344,4345,4346,4347,4352,4353,4358,4359,4360,4465,4466,4390,4368,4454,4455 +,4411,4419,4426,4433,4440,4447,4412,4420,4427,4434,4441,4448,4391,4392,4393,4394,4395,4396,4397,4400,4401,4402,4403,4404,4405,4408,4413,4414,4421,4428,4435,4442,4449,4456,4459,4460,4461,4462,4467,4468,4473,4474,4475,4580,4581,4505,4483,4569,4570,4526,4534,4541,4548,4555,4562,4527,4535,4542,4549,4556,4563,4506,4507,4508 +,4509,4510,4511,4512,4515,4516,4517,4518,4519,4520,4523,4528,4529,4536,4543,4550,4557,4564,4571,4574,4575,4576,4577,4582,4583,4588,4589,4590,4695,4696,4620,4598,4684,4685,4641,4649,4656,4663,4670,4677,4642,4650,4657,4664,4671,4678,4621,4622,4623,4624,4625,4626,4627,4630,4631,4632,4633,4634,4635,4638,4643,4644,4651,4658 +,4665,4672,4679,4686,4689,4690,4691,4692,4697,4698,4703,4704,4705,4810,4811,4735,4713,4799,4800,4756,4764,4771,4778,4785,4792,4757,4765,4772,4779,4786,4793,4736,4737,4738,4739,4740,4741,4742,4745,4746,4747,4748,4749,4750,4753,4758,4759,4766,4773,4780,4787,4794,4801,4804,4805,4806,4807,4812,4813,4818,4819,4820,4925,4926 +,4850,4828,4914,4915,4871,4879,4886,4893,4900,4907,4872,4880,4887,4894,4901,4908,4851,4852,4853,4854,4855,4856,4857,4860,4861,4862,4863,4864,4865,4868,4873,4874,4881,4888,4895,4902,4909,4916,4919,4920,4921,4922,4927,4928,4933,4934,4935,5040,5041,4965,4943,5029,5030,4986,4994,5001,5008,5015,5022,4987,4995,5002,5009,5016 +,5023,4966,4967,4968,4969,4970,4971,4972,4975,4976,4977,4978,4979,4980,4983,4988,4989,4996,5003,5010,5017,5024,5031,5034,5035,5036,5037,5042,5043,5048,5049,5050,5155,5156,5080,5058,5144,5145,5101,5109,5116,5123,5130,5137,5102,5110,5117,5124,5131,5138,5081,5082,5083,5084,5085,5086,5087,5090,5091,5092,5093,5094,5095,5098 +,5103,5104,5111,5118,5125,5132,5139,5146,5149,5150,5151,5152,5157,5158,5163,5164,5165,5270,5271,5195,5173,5259,5260,5216,5224,5231,5238,5245,5252,5217,5225,5232,5239,5246,5253,5196,5197,5198,5199,5200,5201,5202,5205,5206,5207,5208,5209,5210,5213,5218,5219,5226,5233,5240,5247,5254,5261,5264,5265,5266,5267,5272,5273,5278 +,5279,5280,5385,5386,5310,5288,5374,5375,5331,5339,5346,5353,5360,5367,5332,5340,5347,5354,5361,5368,5311,5312,5313,5314,5315,5316,5317,5320,5321,5322,5323,5324,5325,5328,5333,5334,5341,5348,5355,5362,5369,5376,5379,5380,5381,5382,5387,5388,5393,5394,5395,5500,5501,5425,5403,5489,5490,5446,5454,5461,5468,5475,5482,5447 +,5455,5462,5469,5476,5483,5426,5427,5428,5429,5430,5431,5432,5435,5436,5437,5438,5439,5440,5443,5448,5449,5456,5463,5470,5477,5484,5491,5494,5495,5496,5497,5502,5503,5508,5509,5510,5615,5616,5540,5518,5604,5605,5561,5569,5576,5583,5590,5597,5562,5570,5577,5584,5591,5598,5541,5542,5543,5544,5545,5546,5547,5550,5551,5552 +,5553,5554,5555,5558,5563,5564,5571,5578,5585,5592,5599,5606,5609,5610,5611,5612,5617,5618,5623,5624,5625,5730,5731,5655,5633,5719,5720,5676,5684,5691,5698,5705,5712,5677,5685,5692,5699,5706,5713,5656,5657,5658,5659,5660,5661,5662,5665,5666,5667,5668,5669,5670,5673,5678,5679,5686,5693,5700,5707,5714,5721,5724,5725,5726 +,5727,5732,5733,5738,5739,5740,5845,5846,5770,5748,5834,5835,5791,5799,5806,5813,5820,5827,5792,5800,5807,5814,5821,5828,5771,5772,5773,5774,5775,5776,5777,5780,5781,5782,5783,5784,5785,5788,5793,5794,5801,5808,5815,5822,5829,5836,5839,5840,5841,5842,5847,5848,5853,5854,5855,5960,5961,5885,5863,5949,5950,5906,5914,5921 +,5928,5935,5942,5907,5915,5922,5929,5936,5943,5886,5887,5888,5889,5890,5891,5892,5895,5896,5897,5898,5899,5900,5903,5908,5909,5916,5923,5930,5937,5944,5951,5954,5955,5956,5957,5962,5963,5968,5969,5970,6075,6076,6000,5978,6064,6065,6021,6029,6036,6043,6050,6057,6022,6030,6037,6044,6051,6058,6001,6002,6003,6004,6005,6006 +,6007,6010,6011,6012,6013,6014,6015,6018,6023,6024,6031,6038,6045,6052,6059,6066,6069,6070,6071,6072,6077,6078,6083,6084,6085,6190,6191,6115,6093,6179,6180,6136,6144,6151,6158,6165,6172,6137,6145,6152,6159,6166,6173,6116,6117,6118,6119,6120,6121,6122,6125,6126,6127,6128,6129,6130,6133,6138,6139,6146,6153,6160,6167,6174 +,6181,6184,6185,6186,6187,6192,6193,6198,6199,6200,7862,7863,6298,6276,6362,6363,6319,6327,6334,6341,6348,6355,6320,6328,6335,6342,6349,6356,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6313,6316,6321,6322,6329,6336,6343,6350,6357,6364,6469,6470,6394,6372,6458,6459,6415,6423,6430,6437,6444,6451 +,6416,6424,6431,6438,6445,6452,6395,6396,6397,6398,6399,6400,6401,6404,6405,6406,6407,6408,6409,6412,6417,6418,6425,6432,6439,6446,6453,6460,6463,6464,6465,6466,6471,6472,6477,6478,6479,6584,6585,6509,6487,6573,6574,6530,6538,6545,6552,6559,6566,6531,6539,6546,6553,6560,6567,6510,6511,6512,6513,6514,6515,6516,6519,6520 +,6521,6522,6523,6524,6527,6532,6533,6540,6547,6554,6561,6568,6575,6578,6579,6580,6581,6586,6587,6592,6593,6594,6699,6700,6624,6602,6688,6689,6645,6653,6660,6667,6674,6681,6646,6654,6661,6668,6675,6682,6625,6626,6627,6628,6629,6630,6631,6634,6635,6636,6637,6638,6639,6642,6647,6648,6655,6662,6669,6676,6683,6690,6693,6694 +,6695,6696,6701,6702,6707,6708,6709,6814,6815,6739,6717,6803,6804,6760,6768,6775,6782,6789,6796,6761,6769,6776,6783,6790,6797,6740,6741,6742,6743,6744,6745,6746,6749,6750,6751,6752,6753,6754,6757,6762,6763,6770,6777,6784,6791,6798,6805,6808,6809,6810,6811,6816,6817,6822,6823,6824,6929,6930,6854,6832,6918,6919,6875,6883 +,6890,6897,6904,6911,6876,6884,6891,6898,6905,6912,6855,6856,6857,6858,6859,6860,6861,6864,6865,6866,6867,6868,6869,6872,6877,6878,6885,6892,6899,6906,6913,6920,6923,6924,6925,6926,6931,6932,6937,6938,6939,7044,7045,6969,6947,7033,7034,6990,6998,7005,7012,7019,7026,6991,6999,7006,7013,7020,7027,6970,6971,6972,6973,6974 +,6975,6976,6979,6980,6981,6982,6983,6984,6987,6992,6993,7000,7007,7014,7021,7028,7035,7038,7039,7040,7041,7046,7047,7052,7053,7054,7159,7160,7084,7062,7148,7149,7105,7113,7120,7127,7134,7141,7106,7114,7121,7128,7135,7142,7085,7086,7087,7088,7089,7090,7091,7094,7095,7096,7097,7098,7099,7102,7107,7108,7115,7122,7129,7136 +,7143,7150,7153,7154,7155,7156,7161,7162,7167,7168,7169,7274,7275,7199,7177,7263,7264,7220,7228,7235,7242,7249,7256,7221,7229,7236,7243,7250,7257,7200,7201,7202,7203,7204,7205,7206,7209,7210,7211,7212,7213,7214,7217,7222,7223,7230,7237,7244,7251,7258,7265,7268,7269,7270,7271,7276,7277,7282,7283,7284,7389,7390,7314,7292 +,7378,7379,7335,7343,7350,7357,7364,7371,7336,7344,7351,7358,7365,7372,7315,7316,7317,7318,7319,7320,7321,7324,7325,7326,7327,7328,7329,7332,7337,7338,7345,7352,7359,7366,7373,7380,7383,7384,7385,7386,7391,7392,7397,7398,7399,7504,7505,7429,7407,7493,7494,7450,7458,7465,7472,7479,7486,7451,7459,7466,7473,7480,7487,7430 +,7431,7432,7433,7434,7435,7436,7439,7440,7441,7442,7443,7444,7447,7452,7453,7460,7467,7474,7481,7488,7495,7498,7499,7500,7501,7506,7507,7512,7513,7514,7619,7620,7544,7522,7608,7609,7565,7573,7580,7587,7594,7601,7566,7574,7581,7588,7595,7602,7545,7546,7547,7548,7549,7550,7551,7554,7555,7556,7557,7558,7559,7562,7567,7568 +,7575,7582,7589,7596,7603,7610,7613,7614,7615,7616,7621,7622,7627,7628,7629,7734,7735,7659,7637,7723,7724,7680,7688,7695,7702,7709,7716,7681,7689,7696,7703,7710,7717,7660,7661,7662,7663,7664,7665,7666,7669,7670,7671,7672,7673,7674,7677,7682,7683,7690,7697,7704,7711,7718,7725,7728,7729,7730,7731,7736,7737,7742,7743,7744 +,7849,7850,7774,7752,7838,7839,7795,7803,7810,7817,7824,7831,7796,7804,7811,7818,7825,7832,7775,7776,7777,7778,7779,7780,7781,7784,7785,7786,7787,7788,7789,7792,7797,7798,7805,7812,7819,7826,7833,7840,7843,7844,7845,7846,7851,7852,7857,7858,7859,7870,7871,7872,7873 +}; + +Circom_Circuit _circuit = { + NSignals, + NComponents, + NInputs, + NOutputs, + NVars, + _wit2sig, + _components, + _mapIsInput, + __P__ +}; diff --git a/test/circuits/pedersen2_test.sym b/test/circuits/pedersen2_test.sym new file mode 100644 index 0000000..933e8de --- /dev/null +++ b/test/circuits/pedersen2_test.sym @@ -0,0 +1,8127 @@ +1,3,main.in +2,1,main.out[0] +3,2,main.out[1] +4,3382,main.pedersen.in[0] +5,4,main.pedersen.in[1] +6,5,main.pedersen.in[2] +7,6,main.pedersen.in[3] +8,7,main.pedersen.in[4] +9,8,main.pedersen.in[5] +10,9,main.pedersen.in[6] +11,10,main.pedersen.in[7] +12,11,main.pedersen.in[8] +13,12,main.pedersen.in[9] +14,13,main.pedersen.in[10] +15,14,main.pedersen.in[11] +16,15,main.pedersen.in[12] +17,16,main.pedersen.in[13] +18,17,main.pedersen.in[14] +19,18,main.pedersen.in[15] +20,19,main.pedersen.in[16] +21,20,main.pedersen.in[17] +22,21,main.pedersen.in[18] +23,22,main.pedersen.in[19] +24,23,main.pedersen.in[20] +25,24,main.pedersen.in[21] +26,25,main.pedersen.in[22] +27,26,main.pedersen.in[23] +28,27,main.pedersen.in[24] +29,28,main.pedersen.in[25] +30,29,main.pedersen.in[26] +31,30,main.pedersen.in[27] +32,31,main.pedersen.in[28] +33,32,main.pedersen.in[29] +34,33,main.pedersen.in[30] +35,34,main.pedersen.in[31] +36,35,main.pedersen.in[32] +37,36,main.pedersen.in[33] +38,37,main.pedersen.in[34] +39,38,main.pedersen.in[35] +40,39,main.pedersen.in[36] +41,40,main.pedersen.in[37] +42,41,main.pedersen.in[38] +43,42,main.pedersen.in[39] +44,43,main.pedersen.in[40] +45,44,main.pedersen.in[41] +46,45,main.pedersen.in[42] +47,46,main.pedersen.in[43] +48,47,main.pedersen.in[44] +49,48,main.pedersen.in[45] +50,49,main.pedersen.in[46] +51,50,main.pedersen.in[47] +52,51,main.pedersen.in[48] +53,52,main.pedersen.in[49] +54,53,main.pedersen.in[50] +55,54,main.pedersen.in[51] +56,55,main.pedersen.in[52] +57,56,main.pedersen.in[53] +58,57,main.pedersen.in[54] +59,58,main.pedersen.in[55] +60,59,main.pedersen.in[56] +61,60,main.pedersen.in[57] +62,61,main.pedersen.in[58] +63,62,main.pedersen.in[59] +64,63,main.pedersen.in[60] +65,64,main.pedersen.in[61] +66,65,main.pedersen.in[62] +67,66,main.pedersen.in[63] +68,67,main.pedersen.in[64] +69,68,main.pedersen.in[65] +70,69,main.pedersen.in[66] +71,70,main.pedersen.in[67] +72,71,main.pedersen.in[68] +73,72,main.pedersen.in[69] +74,73,main.pedersen.in[70] +75,74,main.pedersen.in[71] +76,75,main.pedersen.in[72] +77,76,main.pedersen.in[73] +78,77,main.pedersen.in[74] +79,78,main.pedersen.in[75] +80,79,main.pedersen.in[76] +81,80,main.pedersen.in[77] +82,81,main.pedersen.in[78] +83,82,main.pedersen.in[79] +84,83,main.pedersen.in[80] +85,84,main.pedersen.in[81] +86,85,main.pedersen.in[82] +87,86,main.pedersen.in[83] +88,87,main.pedersen.in[84] +89,88,main.pedersen.in[85] +90,89,main.pedersen.in[86] +91,90,main.pedersen.in[87] +92,91,main.pedersen.in[88] +93,92,main.pedersen.in[89] +94,93,main.pedersen.in[90] +95,94,main.pedersen.in[91] +96,95,main.pedersen.in[92] +97,96,main.pedersen.in[93] +98,97,main.pedersen.in[94] +99,98,main.pedersen.in[95] +100,99,main.pedersen.in[96] +101,100,main.pedersen.in[97] +102,101,main.pedersen.in[98] +103,102,main.pedersen.in[99] +104,103,main.pedersen.in[100] +105,104,main.pedersen.in[101] +106,105,main.pedersen.in[102] +107,106,main.pedersen.in[103] +108,107,main.pedersen.in[104] +109,108,main.pedersen.in[105] +110,109,main.pedersen.in[106] +111,110,main.pedersen.in[107] +112,111,main.pedersen.in[108] +113,112,main.pedersen.in[109] +114,113,main.pedersen.in[110] +115,114,main.pedersen.in[111] +116,115,main.pedersen.in[112] +117,116,main.pedersen.in[113] +118,117,main.pedersen.in[114] +119,118,main.pedersen.in[115] +120,119,main.pedersen.in[116] +121,120,main.pedersen.in[117] +122,121,main.pedersen.in[118] +123,122,main.pedersen.in[119] +124,123,main.pedersen.in[120] +125,124,main.pedersen.in[121] +126,125,main.pedersen.in[122] +127,126,main.pedersen.in[123] +128,127,main.pedersen.in[124] +129,128,main.pedersen.in[125] +130,129,main.pedersen.in[126] +131,130,main.pedersen.in[127] +132,131,main.pedersen.in[128] +133,132,main.pedersen.in[129] +134,133,main.pedersen.in[130] +135,134,main.pedersen.in[131] +136,135,main.pedersen.in[132] +137,136,main.pedersen.in[133] +138,137,main.pedersen.in[134] +139,138,main.pedersen.in[135] +140,139,main.pedersen.in[136] +141,140,main.pedersen.in[137] +142,141,main.pedersen.in[138] +143,142,main.pedersen.in[139] +144,143,main.pedersen.in[140] +145,144,main.pedersen.in[141] +146,145,main.pedersen.in[142] +147,146,main.pedersen.in[143] +148,147,main.pedersen.in[144] +149,148,main.pedersen.in[145] +150,149,main.pedersen.in[146] +151,150,main.pedersen.in[147] +152,151,main.pedersen.in[148] +153,152,main.pedersen.in[149] +154,153,main.pedersen.in[150] +155,154,main.pedersen.in[151] +156,155,main.pedersen.in[152] +157,156,main.pedersen.in[153] +158,157,main.pedersen.in[154] +159,158,main.pedersen.in[155] +160,159,main.pedersen.in[156] +161,160,main.pedersen.in[157] +162,161,main.pedersen.in[158] +163,162,main.pedersen.in[159] +164,163,main.pedersen.in[160] +165,164,main.pedersen.in[161] +166,165,main.pedersen.in[162] +167,166,main.pedersen.in[163] +168,167,main.pedersen.in[164] +169,168,main.pedersen.in[165] +170,169,main.pedersen.in[166] +171,170,main.pedersen.in[167] +172,171,main.pedersen.in[168] +173,172,main.pedersen.in[169] +174,173,main.pedersen.in[170] +175,174,main.pedersen.in[171] +176,175,main.pedersen.in[172] +177,176,main.pedersen.in[173] +178,177,main.pedersen.in[174] +179,178,main.pedersen.in[175] +180,179,main.pedersen.in[176] +181,180,main.pedersen.in[177] +182,181,main.pedersen.in[178] +183,182,main.pedersen.in[179] +184,183,main.pedersen.in[180] +185,184,main.pedersen.in[181] +186,185,main.pedersen.in[182] +187,186,main.pedersen.in[183] +188,187,main.pedersen.in[184] +189,188,main.pedersen.in[185] +190,189,main.pedersen.in[186] +191,190,main.pedersen.in[187] +192,191,main.pedersen.in[188] +193,192,main.pedersen.in[189] +194,193,main.pedersen.in[190] +195,194,main.pedersen.in[191] +196,195,main.pedersen.in[192] +197,196,main.pedersen.in[193] +198,197,main.pedersen.in[194] +199,198,main.pedersen.in[195] +200,199,main.pedersen.in[196] +201,200,main.pedersen.in[197] +202,201,main.pedersen.in[198] +203,202,main.pedersen.in[199] +204,203,main.pedersen.in[200] +205,204,main.pedersen.in[201] +206,205,main.pedersen.in[202] +207,206,main.pedersen.in[203] +208,207,main.pedersen.in[204] +209,208,main.pedersen.in[205] +210,209,main.pedersen.in[206] +211,210,main.pedersen.in[207] +212,211,main.pedersen.in[208] +213,212,main.pedersen.in[209] +214,213,main.pedersen.in[210] +215,214,main.pedersen.in[211] +216,215,main.pedersen.in[212] +217,216,main.pedersen.in[213] +218,217,main.pedersen.in[214] +219,218,main.pedersen.in[215] +220,219,main.pedersen.in[216] +221,220,main.pedersen.in[217] +222,221,main.pedersen.in[218] +223,222,main.pedersen.in[219] +224,223,main.pedersen.in[220] +225,224,main.pedersen.in[221] +226,225,main.pedersen.in[222] +227,226,main.pedersen.in[223] +228,227,main.pedersen.in[224] +229,228,main.pedersen.in[225] +230,229,main.pedersen.in[226] +231,230,main.pedersen.in[227] +232,231,main.pedersen.in[228] +233,232,main.pedersen.in[229] +234,233,main.pedersen.in[230] +235,234,main.pedersen.in[231] +236,235,main.pedersen.in[232] +237,236,main.pedersen.in[233] +238,237,main.pedersen.in[234] +239,238,main.pedersen.in[235] +240,239,main.pedersen.in[236] +241,240,main.pedersen.in[237] +242,241,main.pedersen.in[238] +243,242,main.pedersen.in[239] +244,243,main.pedersen.in[240] +245,244,main.pedersen.in[241] +246,245,main.pedersen.in[242] +247,246,main.pedersen.in[243] +248,247,main.pedersen.in[244] +249,248,main.pedersen.in[245] +250,249,main.pedersen.in[246] +251,250,main.pedersen.in[247] +252,251,main.pedersen.in[248] +253,252,main.pedersen.in[249] +254,253,main.pedersen.in[250] +255,254,main.pedersen.in[251] +256,255,main.pedersen.in[252] +257,3511,main.pedersen.in[253] +258,3512,main.pedersen.in[254] +259,3513,main.pedersen.in[255] +260,1,main.pedersen.out[0] +261,2,main.pedersen.out[1] +262,3382,main.pedersen.segments[0].in[0] +263,4,main.pedersen.segments[0].in[1] +264,5,main.pedersen.segments[0].in[2] +265,6,main.pedersen.segments[0].in[3] +266,7,main.pedersen.segments[0].in[4] +267,8,main.pedersen.segments[0].in[5] +268,9,main.pedersen.segments[0].in[6] +269,10,main.pedersen.segments[0].in[7] +270,11,main.pedersen.segments[0].in[8] +271,12,main.pedersen.segments[0].in[9] +272,13,main.pedersen.segments[0].in[10] +273,14,main.pedersen.segments[0].in[11] +274,15,main.pedersen.segments[0].in[12] +275,16,main.pedersen.segments[0].in[13] +276,17,main.pedersen.segments[0].in[14] +277,18,main.pedersen.segments[0].in[15] +278,19,main.pedersen.segments[0].in[16] +279,20,main.pedersen.segments[0].in[17] +280,21,main.pedersen.segments[0].in[18] +281,22,main.pedersen.segments[0].in[19] +282,23,main.pedersen.segments[0].in[20] +283,24,main.pedersen.segments[0].in[21] +284,25,main.pedersen.segments[0].in[22] +285,26,main.pedersen.segments[0].in[23] +286,27,main.pedersen.segments[0].in[24] +287,28,main.pedersen.segments[0].in[25] +288,29,main.pedersen.segments[0].in[26] +289,30,main.pedersen.segments[0].in[27] +290,31,main.pedersen.segments[0].in[28] +291,32,main.pedersen.segments[0].in[29] +292,33,main.pedersen.segments[0].in[30] +293,34,main.pedersen.segments[0].in[31] +294,35,main.pedersen.segments[0].in[32] +295,36,main.pedersen.segments[0].in[33] +296,37,main.pedersen.segments[0].in[34] +297,38,main.pedersen.segments[0].in[35] +298,39,main.pedersen.segments[0].in[36] +299,40,main.pedersen.segments[0].in[37] +300,41,main.pedersen.segments[0].in[38] +301,42,main.pedersen.segments[0].in[39] +302,43,main.pedersen.segments[0].in[40] +303,44,main.pedersen.segments[0].in[41] +304,45,main.pedersen.segments[0].in[42] +305,46,main.pedersen.segments[0].in[43] +306,47,main.pedersen.segments[0].in[44] +307,48,main.pedersen.segments[0].in[45] +308,49,main.pedersen.segments[0].in[46] +309,50,main.pedersen.segments[0].in[47] +310,51,main.pedersen.segments[0].in[48] +311,52,main.pedersen.segments[0].in[49] +312,53,main.pedersen.segments[0].in[50] +313,54,main.pedersen.segments[0].in[51] +314,55,main.pedersen.segments[0].in[52] +315,56,main.pedersen.segments[0].in[53] +316,57,main.pedersen.segments[0].in[54] +317,58,main.pedersen.segments[0].in[55] +318,59,main.pedersen.segments[0].in[56] +319,60,main.pedersen.segments[0].in[57] +320,61,main.pedersen.segments[0].in[58] +321,62,main.pedersen.segments[0].in[59] +322,63,main.pedersen.segments[0].in[60] +323,64,main.pedersen.segments[0].in[61] +324,65,main.pedersen.segments[0].in[62] +325,66,main.pedersen.segments[0].in[63] +326,67,main.pedersen.segments[0].in[64] +327,68,main.pedersen.segments[0].in[65] +328,69,main.pedersen.segments[0].in[66] +329,70,main.pedersen.segments[0].in[67] +330,71,main.pedersen.segments[0].in[68] +331,72,main.pedersen.segments[0].in[69] +332,73,main.pedersen.segments[0].in[70] +333,74,main.pedersen.segments[0].in[71] +334,75,main.pedersen.segments[0].in[72] +335,76,main.pedersen.segments[0].in[73] +336,77,main.pedersen.segments[0].in[74] +337,78,main.pedersen.segments[0].in[75] +338,79,main.pedersen.segments[0].in[76] +339,80,main.pedersen.segments[0].in[77] +340,81,main.pedersen.segments[0].in[78] +341,82,main.pedersen.segments[0].in[79] +342,83,main.pedersen.segments[0].in[80] +343,84,main.pedersen.segments[0].in[81] +344,85,main.pedersen.segments[0].in[82] +345,86,main.pedersen.segments[0].in[83] +346,87,main.pedersen.segments[0].in[84] +347,88,main.pedersen.segments[0].in[85] +348,89,main.pedersen.segments[0].in[86] +349,90,main.pedersen.segments[0].in[87] +350,91,main.pedersen.segments[0].in[88] +351,92,main.pedersen.segments[0].in[89] +352,93,main.pedersen.segments[0].in[90] +353,94,main.pedersen.segments[0].in[91] +354,95,main.pedersen.segments[0].in[92] +355,96,main.pedersen.segments[0].in[93] +356,97,main.pedersen.segments[0].in[94] +357,98,main.pedersen.segments[0].in[95] +358,99,main.pedersen.segments[0].in[96] +359,100,main.pedersen.segments[0].in[97] +360,101,main.pedersen.segments[0].in[98] +361,102,main.pedersen.segments[0].in[99] +362,103,main.pedersen.segments[0].in[100] +363,104,main.pedersen.segments[0].in[101] +364,105,main.pedersen.segments[0].in[102] +365,106,main.pedersen.segments[0].in[103] +366,107,main.pedersen.segments[0].in[104] +367,108,main.pedersen.segments[0].in[105] +368,109,main.pedersen.segments[0].in[106] +369,110,main.pedersen.segments[0].in[107] +370,111,main.pedersen.segments[0].in[108] +371,112,main.pedersen.segments[0].in[109] +372,113,main.pedersen.segments[0].in[110] +373,114,main.pedersen.segments[0].in[111] +374,115,main.pedersen.segments[0].in[112] +375,116,main.pedersen.segments[0].in[113] +376,117,main.pedersen.segments[0].in[114] +377,118,main.pedersen.segments[0].in[115] +378,119,main.pedersen.segments[0].in[116] +379,120,main.pedersen.segments[0].in[117] +380,121,main.pedersen.segments[0].in[118] +381,122,main.pedersen.segments[0].in[119] +382,123,main.pedersen.segments[0].in[120] +383,124,main.pedersen.segments[0].in[121] +384,125,main.pedersen.segments[0].in[122] +385,126,main.pedersen.segments[0].in[123] +386,127,main.pedersen.segments[0].in[124] +387,128,main.pedersen.segments[0].in[125] +388,129,main.pedersen.segments[0].in[126] +389,130,main.pedersen.segments[0].in[127] +390,131,main.pedersen.segments[0].in[128] +391,132,main.pedersen.segments[0].in[129] +392,133,main.pedersen.segments[0].in[130] +393,134,main.pedersen.segments[0].in[131] +394,135,main.pedersen.segments[0].in[132] +395,136,main.pedersen.segments[0].in[133] +396,137,main.pedersen.segments[0].in[134] +397,138,main.pedersen.segments[0].in[135] +398,139,main.pedersen.segments[0].in[136] +399,140,main.pedersen.segments[0].in[137] +400,141,main.pedersen.segments[0].in[138] +401,142,main.pedersen.segments[0].in[139] +402,143,main.pedersen.segments[0].in[140] +403,144,main.pedersen.segments[0].in[141] +404,145,main.pedersen.segments[0].in[142] +405,146,main.pedersen.segments[0].in[143] +406,147,main.pedersen.segments[0].in[144] +407,148,main.pedersen.segments[0].in[145] +408,149,main.pedersen.segments[0].in[146] +409,150,main.pedersen.segments[0].in[147] +410,151,main.pedersen.segments[0].in[148] +411,152,main.pedersen.segments[0].in[149] +412,153,main.pedersen.segments[0].in[150] +413,154,main.pedersen.segments[0].in[151] +414,155,main.pedersen.segments[0].in[152] +415,156,main.pedersen.segments[0].in[153] +416,157,main.pedersen.segments[0].in[154] +417,158,main.pedersen.segments[0].in[155] +418,159,main.pedersen.segments[0].in[156] +419,160,main.pedersen.segments[0].in[157] +420,161,main.pedersen.segments[0].in[158] +421,162,main.pedersen.segments[0].in[159] +422,163,main.pedersen.segments[0].in[160] +423,164,main.pedersen.segments[0].in[161] +424,165,main.pedersen.segments[0].in[162] +425,166,main.pedersen.segments[0].in[163] +426,167,main.pedersen.segments[0].in[164] +427,168,main.pedersen.segments[0].in[165] +428,169,main.pedersen.segments[0].in[166] +429,170,main.pedersen.segments[0].in[167] +430,171,main.pedersen.segments[0].in[168] +431,172,main.pedersen.segments[0].in[169] +432,173,main.pedersen.segments[0].in[170] +433,174,main.pedersen.segments[0].in[171] +434,175,main.pedersen.segments[0].in[172] +435,176,main.pedersen.segments[0].in[173] +436,177,main.pedersen.segments[0].in[174] +437,178,main.pedersen.segments[0].in[175] +438,179,main.pedersen.segments[0].in[176] +439,180,main.pedersen.segments[0].in[177] +440,181,main.pedersen.segments[0].in[178] +441,182,main.pedersen.segments[0].in[179] +442,183,main.pedersen.segments[0].in[180] +443,184,main.pedersen.segments[0].in[181] +444,185,main.pedersen.segments[0].in[182] +445,186,main.pedersen.segments[0].in[183] +446,187,main.pedersen.segments[0].in[184] +447,188,main.pedersen.segments[0].in[185] +448,189,main.pedersen.segments[0].in[186] +449,190,main.pedersen.segments[0].in[187] +450,191,main.pedersen.segments[0].in[188] +451,192,main.pedersen.segments[0].in[189] +452,193,main.pedersen.segments[0].in[190] +453,194,main.pedersen.segments[0].in[191] +454,195,main.pedersen.segments[0].in[192] +455,196,main.pedersen.segments[0].in[193] +456,197,main.pedersen.segments[0].in[194] +457,198,main.pedersen.segments[0].in[195] +458,199,main.pedersen.segments[0].in[196] +459,200,main.pedersen.segments[0].in[197] +460,201,main.pedersen.segments[0].in[198] +461,202,main.pedersen.segments[0].in[199] +462,3514,main.pedersen.segments[0].base[0] +463,3515,main.pedersen.segments[0].base[1] +464,256,main.pedersen.segments[0].out[0] +465,257,main.pedersen.segments[0].out[1] +466,3514,main.pedersen.segments[0].e2m.in[0] +467,3515,main.pedersen.segments[0].e2m.in[1] +468,3383,main.pedersen.segments[0].e2m.out[0] +469,3384,main.pedersen.segments[0].e2m.out[1] +470,3382,main.pedersen.segments[0].windows[0].in[0] +471,4,main.pedersen.segments[0].windows[0].in[1] +472,5,main.pedersen.segments[0].windows[0].in[2] +473,6,main.pedersen.segments[0].windows[0].in[3] +474,3383,main.pedersen.segments[0].windows[0].base[0] +475,3384,main.pedersen.segments[0].windows[0].base[1] +476,258,main.pedersen.segments[0].windows[0].out[0] +477,259,main.pedersen.segments[0].windows[0].out[1] +478,260,main.pedersen.segments[0].windows[0].out8[0] +479,261,main.pedersen.segments[0].windows[0].out8[1] +480,3383,main.pedersen.segments[0].windows[0].mux.c[0][0] +481,262,main.pedersen.segments[0].windows[0].mux.c[0][1] +482,263,main.pedersen.segments[0].windows[0].mux.c[0][2] +483,264,main.pedersen.segments[0].windows[0].mux.c[0][3] +484,265,main.pedersen.segments[0].windows[0].mux.c[0][4] +485,266,main.pedersen.segments[0].windows[0].mux.c[0][5] +486,267,main.pedersen.segments[0].windows[0].mux.c[0][6] +487,260,main.pedersen.segments[0].windows[0].mux.c[0][7] +488,3384,main.pedersen.segments[0].windows[0].mux.c[1][0] +489,268,main.pedersen.segments[0].windows[0].mux.c[1][1] +490,269,main.pedersen.segments[0].windows[0].mux.c[1][2] +491,270,main.pedersen.segments[0].windows[0].mux.c[1][3] +492,271,main.pedersen.segments[0].windows[0].mux.c[1][4] +493,272,main.pedersen.segments[0].windows[0].mux.c[1][5] +494,273,main.pedersen.segments[0].windows[0].mux.c[1][6] +495,261,main.pedersen.segments[0].windows[0].mux.c[1][7] +496,3382,main.pedersen.segments[0].windows[0].mux.s[0] +497,4,main.pedersen.segments[0].windows[0].mux.s[1] +498,5,main.pedersen.segments[0].windows[0].mux.s[2] +499,258,main.pedersen.segments[0].windows[0].mux.out[0] +500,274,main.pedersen.segments[0].windows[0].mux.out[1] +501,275,main.pedersen.segments[0].windows[0].mux.a210[0] +502,276,main.pedersen.segments[0].windows[0].mux.a210[1] +503,277,main.pedersen.segments[0].windows[0].mux.a21[0] +504,278,main.pedersen.segments[0].windows[0].mux.a21[1] +505,279,main.pedersen.segments[0].windows[0].mux.a20[0] +506,280,main.pedersen.segments[0].windows[0].mux.a20[1] +507,281,main.pedersen.segments[0].windows[0].mux.a2[0] +508,282,main.pedersen.segments[0].windows[0].mux.a2[1] +509,283,main.pedersen.segments[0].windows[0].mux.a10[0] +510,284,main.pedersen.segments[0].windows[0].mux.a10[1] +511,285,main.pedersen.segments[0].windows[0].mux.a1[0] +512,286,main.pedersen.segments[0].windows[0].mux.a1[1] +513,287,main.pedersen.segments[0].windows[0].mux.a0[0] +514,288,main.pedersen.segments[0].windows[0].mux.a0[1] +515,3383,main.pedersen.segments[0].windows[0].mux.a[0] +516,3384,main.pedersen.segments[0].windows[0].mux.a[1] +517,289,main.pedersen.segments[0].windows[0].mux.s10 +518,3383,main.pedersen.segments[0].windows[0].dbl2.in[0] +519,3384,main.pedersen.segments[0].windows[0].dbl2.in[1] +520,262,main.pedersen.segments[0].windows[0].dbl2.out[0] +521,268,main.pedersen.segments[0].windows[0].dbl2.out[1] +522,290,main.pedersen.segments[0].windows[0].dbl2.lamda +523,291,main.pedersen.segments[0].windows[0].dbl2.x1_2 +524,3383,main.pedersen.segments[0].windows[0].adr3.in1[0] +525,3384,main.pedersen.segments[0].windows[0].adr3.in1[1] +526,262,main.pedersen.segments[0].windows[0].adr3.in2[0] +527,268,main.pedersen.segments[0].windows[0].adr3.in2[1] +528,263,main.pedersen.segments[0].windows[0].adr3.out[0] +529,269,main.pedersen.segments[0].windows[0].adr3.out[1] +530,292,main.pedersen.segments[0].windows[0].adr3.lamda +531,3383,main.pedersen.segments[0].windows[0].adr4.in1[0] +532,3384,main.pedersen.segments[0].windows[0].adr4.in1[1] +533,263,main.pedersen.segments[0].windows[0].adr4.in2[0] +534,269,main.pedersen.segments[0].windows[0].adr4.in2[1] +535,264,main.pedersen.segments[0].windows[0].adr4.out[0] +536,270,main.pedersen.segments[0].windows[0].adr4.out[1] +537,293,main.pedersen.segments[0].windows[0].adr4.lamda +538,3383,main.pedersen.segments[0].windows[0].adr5.in1[0] +539,3384,main.pedersen.segments[0].windows[0].adr5.in1[1] +540,264,main.pedersen.segments[0].windows[0].adr5.in2[0] +541,270,main.pedersen.segments[0].windows[0].adr5.in2[1] +542,265,main.pedersen.segments[0].windows[0].adr5.out[0] +543,271,main.pedersen.segments[0].windows[0].adr5.out[1] +544,294,main.pedersen.segments[0].windows[0].adr5.lamda +545,3383,main.pedersen.segments[0].windows[0].adr6.in1[0] +546,3384,main.pedersen.segments[0].windows[0].adr6.in1[1] +547,265,main.pedersen.segments[0].windows[0].adr6.in2[0] +548,271,main.pedersen.segments[0].windows[0].adr6.in2[1] +549,266,main.pedersen.segments[0].windows[0].adr6.out[0] +550,272,main.pedersen.segments[0].windows[0].adr6.out[1] +551,295,main.pedersen.segments[0].windows[0].adr6.lamda +552,3383,main.pedersen.segments[0].windows[0].adr7.in1[0] +553,3384,main.pedersen.segments[0].windows[0].adr7.in1[1] +554,266,main.pedersen.segments[0].windows[0].adr7.in2[0] +555,272,main.pedersen.segments[0].windows[0].adr7.in2[1] +556,267,main.pedersen.segments[0].windows[0].adr7.out[0] +557,273,main.pedersen.segments[0].windows[0].adr7.out[1] +558,296,main.pedersen.segments[0].windows[0].adr7.lamda +559,3383,main.pedersen.segments[0].windows[0].adr8.in1[0] +560,3384,main.pedersen.segments[0].windows[0].adr8.in1[1] +561,267,main.pedersen.segments[0].windows[0].adr8.in2[0] +562,273,main.pedersen.segments[0].windows[0].adr8.in2[1] +563,260,main.pedersen.segments[0].windows[0].adr8.out[0] +564,261,main.pedersen.segments[0].windows[0].adr8.out[1] +565,297,main.pedersen.segments[0].windows[0].adr8.lamda +566,7,main.pedersen.segments[0].windows[1].in[0] +567,8,main.pedersen.segments[0].windows[1].in[1] +568,9,main.pedersen.segments[0].windows[1].in[2] +569,10,main.pedersen.segments[0].windows[1].in[3] +570,298,main.pedersen.segments[0].windows[1].base[0] +571,299,main.pedersen.segments[0].windows[1].base[1] +572,300,main.pedersen.segments[0].windows[1].out[0] +573,301,main.pedersen.segments[0].windows[1].out[1] +574,302,main.pedersen.segments[0].windows[1].out8[0] +575,303,main.pedersen.segments[0].windows[1].out8[1] +576,298,main.pedersen.segments[0].windows[1].mux.c[0][0] +577,304,main.pedersen.segments[0].windows[1].mux.c[0][1] +578,305,main.pedersen.segments[0].windows[1].mux.c[0][2] +579,306,main.pedersen.segments[0].windows[1].mux.c[0][3] +580,307,main.pedersen.segments[0].windows[1].mux.c[0][4] +581,308,main.pedersen.segments[0].windows[1].mux.c[0][5] +582,309,main.pedersen.segments[0].windows[1].mux.c[0][6] +583,302,main.pedersen.segments[0].windows[1].mux.c[0][7] +584,299,main.pedersen.segments[0].windows[1].mux.c[1][0] +585,310,main.pedersen.segments[0].windows[1].mux.c[1][1] +586,311,main.pedersen.segments[0].windows[1].mux.c[1][2] +587,312,main.pedersen.segments[0].windows[1].mux.c[1][3] +588,313,main.pedersen.segments[0].windows[1].mux.c[1][4] +589,314,main.pedersen.segments[0].windows[1].mux.c[1][5] +590,315,main.pedersen.segments[0].windows[1].mux.c[1][6] +591,303,main.pedersen.segments[0].windows[1].mux.c[1][7] +592,7,main.pedersen.segments[0].windows[1].mux.s[0] +593,8,main.pedersen.segments[0].windows[1].mux.s[1] +594,9,main.pedersen.segments[0].windows[1].mux.s[2] +595,300,main.pedersen.segments[0].windows[1].mux.out[0] +596,316,main.pedersen.segments[0].windows[1].mux.out[1] +597,317,main.pedersen.segments[0].windows[1].mux.a210[0] +598,318,main.pedersen.segments[0].windows[1].mux.a210[1] +599,319,main.pedersen.segments[0].windows[1].mux.a21[0] +600,320,main.pedersen.segments[0].windows[1].mux.a21[1] +601,321,main.pedersen.segments[0].windows[1].mux.a20[0] +602,322,main.pedersen.segments[0].windows[1].mux.a20[1] +603,3385,main.pedersen.segments[0].windows[1].mux.a2[0] +604,3386,main.pedersen.segments[0].windows[1].mux.a2[1] +605,323,main.pedersen.segments[0].windows[1].mux.a10[0] +606,324,main.pedersen.segments[0].windows[1].mux.a10[1] +607,325,main.pedersen.segments[0].windows[1].mux.a1[0] +608,326,main.pedersen.segments[0].windows[1].mux.a1[1] +609,327,main.pedersen.segments[0].windows[1].mux.a0[0] +610,328,main.pedersen.segments[0].windows[1].mux.a0[1] +611,298,main.pedersen.segments[0].windows[1].mux.a[0] +612,299,main.pedersen.segments[0].windows[1].mux.a[1] +613,329,main.pedersen.segments[0].windows[1].mux.s10 +614,298,main.pedersen.segments[0].windows[1].dbl2.in[0] +615,299,main.pedersen.segments[0].windows[1].dbl2.in[1] +616,304,main.pedersen.segments[0].windows[1].dbl2.out[0] +617,310,main.pedersen.segments[0].windows[1].dbl2.out[1] +618,330,main.pedersen.segments[0].windows[1].dbl2.lamda +619,331,main.pedersen.segments[0].windows[1].dbl2.x1_2 +620,298,main.pedersen.segments[0].windows[1].adr3.in1[0] +621,299,main.pedersen.segments[0].windows[1].adr3.in1[1] +622,304,main.pedersen.segments[0].windows[1].adr3.in2[0] +623,310,main.pedersen.segments[0].windows[1].adr3.in2[1] +624,305,main.pedersen.segments[0].windows[1].adr3.out[0] +625,311,main.pedersen.segments[0].windows[1].adr3.out[1] +626,332,main.pedersen.segments[0].windows[1].adr3.lamda +627,298,main.pedersen.segments[0].windows[1].adr4.in1[0] +628,299,main.pedersen.segments[0].windows[1].adr4.in1[1] +629,305,main.pedersen.segments[0].windows[1].adr4.in2[0] +630,311,main.pedersen.segments[0].windows[1].adr4.in2[1] +631,306,main.pedersen.segments[0].windows[1].adr4.out[0] +632,312,main.pedersen.segments[0].windows[1].adr4.out[1] +633,333,main.pedersen.segments[0].windows[1].adr4.lamda +634,298,main.pedersen.segments[0].windows[1].adr5.in1[0] +635,299,main.pedersen.segments[0].windows[1].adr5.in1[1] +636,306,main.pedersen.segments[0].windows[1].adr5.in2[0] +637,312,main.pedersen.segments[0].windows[1].adr5.in2[1] +638,307,main.pedersen.segments[0].windows[1].adr5.out[0] +639,313,main.pedersen.segments[0].windows[1].adr5.out[1] +640,334,main.pedersen.segments[0].windows[1].adr5.lamda +641,298,main.pedersen.segments[0].windows[1].adr6.in1[0] +642,299,main.pedersen.segments[0].windows[1].adr6.in1[1] +643,307,main.pedersen.segments[0].windows[1].adr6.in2[0] +644,313,main.pedersen.segments[0].windows[1].adr6.in2[1] +645,308,main.pedersen.segments[0].windows[1].adr6.out[0] +646,314,main.pedersen.segments[0].windows[1].adr6.out[1] +647,335,main.pedersen.segments[0].windows[1].adr6.lamda +648,298,main.pedersen.segments[0].windows[1].adr7.in1[0] +649,299,main.pedersen.segments[0].windows[1].adr7.in1[1] +650,308,main.pedersen.segments[0].windows[1].adr7.in2[0] +651,314,main.pedersen.segments[0].windows[1].adr7.in2[1] +652,309,main.pedersen.segments[0].windows[1].adr7.out[0] +653,315,main.pedersen.segments[0].windows[1].adr7.out[1] +654,336,main.pedersen.segments[0].windows[1].adr7.lamda +655,298,main.pedersen.segments[0].windows[1].adr8.in1[0] +656,299,main.pedersen.segments[0].windows[1].adr8.in1[1] +657,309,main.pedersen.segments[0].windows[1].adr8.in2[0] +658,315,main.pedersen.segments[0].windows[1].adr8.in2[1] +659,302,main.pedersen.segments[0].windows[1].adr8.out[0] +660,303,main.pedersen.segments[0].windows[1].adr8.out[1] +661,337,main.pedersen.segments[0].windows[1].adr8.lamda +681,11,main.pedersen.segments[0].windows[2].in[0] +682,12,main.pedersen.segments[0].windows[2].in[1] +683,13,main.pedersen.segments[0].windows[2].in[2] +684,14,main.pedersen.segments[0].windows[2].in[3] +685,347,main.pedersen.segments[0].windows[2].base[0] +686,348,main.pedersen.segments[0].windows[2].base[1] +687,349,main.pedersen.segments[0].windows[2].out[0] +688,350,main.pedersen.segments[0].windows[2].out[1] +689,351,main.pedersen.segments[0].windows[2].out8[0] +690,352,main.pedersen.segments[0].windows[2].out8[1] +691,347,main.pedersen.segments[0].windows[2].mux.c[0][0] +692,353,main.pedersen.segments[0].windows[2].mux.c[0][1] +693,354,main.pedersen.segments[0].windows[2].mux.c[0][2] +694,355,main.pedersen.segments[0].windows[2].mux.c[0][3] +695,356,main.pedersen.segments[0].windows[2].mux.c[0][4] +696,357,main.pedersen.segments[0].windows[2].mux.c[0][5] +697,358,main.pedersen.segments[0].windows[2].mux.c[0][6] +698,351,main.pedersen.segments[0].windows[2].mux.c[0][7] +699,348,main.pedersen.segments[0].windows[2].mux.c[1][0] +700,359,main.pedersen.segments[0].windows[2].mux.c[1][1] +701,360,main.pedersen.segments[0].windows[2].mux.c[1][2] +702,361,main.pedersen.segments[0].windows[2].mux.c[1][3] +703,362,main.pedersen.segments[0].windows[2].mux.c[1][4] +704,363,main.pedersen.segments[0].windows[2].mux.c[1][5] +705,364,main.pedersen.segments[0].windows[2].mux.c[1][6] +706,352,main.pedersen.segments[0].windows[2].mux.c[1][7] +707,11,main.pedersen.segments[0].windows[2].mux.s[0] +708,12,main.pedersen.segments[0].windows[2].mux.s[1] +709,13,main.pedersen.segments[0].windows[2].mux.s[2] +710,349,main.pedersen.segments[0].windows[2].mux.out[0] +711,365,main.pedersen.segments[0].windows[2].mux.out[1] +712,366,main.pedersen.segments[0].windows[2].mux.a210[0] +713,367,main.pedersen.segments[0].windows[2].mux.a210[1] +714,368,main.pedersen.segments[0].windows[2].mux.a21[0] +715,369,main.pedersen.segments[0].windows[2].mux.a21[1] +716,370,main.pedersen.segments[0].windows[2].mux.a20[0] +717,371,main.pedersen.segments[0].windows[2].mux.a20[1] +718,3387,main.pedersen.segments[0].windows[2].mux.a2[0] +719,3388,main.pedersen.segments[0].windows[2].mux.a2[1] +720,372,main.pedersen.segments[0].windows[2].mux.a10[0] +721,373,main.pedersen.segments[0].windows[2].mux.a10[1] +722,374,main.pedersen.segments[0].windows[2].mux.a1[0] +723,375,main.pedersen.segments[0].windows[2].mux.a1[1] +724,376,main.pedersen.segments[0].windows[2].mux.a0[0] +725,377,main.pedersen.segments[0].windows[2].mux.a0[1] +726,347,main.pedersen.segments[0].windows[2].mux.a[0] +727,348,main.pedersen.segments[0].windows[2].mux.a[1] +728,378,main.pedersen.segments[0].windows[2].mux.s10 +729,347,main.pedersen.segments[0].windows[2].dbl2.in[0] +730,348,main.pedersen.segments[0].windows[2].dbl2.in[1] +731,353,main.pedersen.segments[0].windows[2].dbl2.out[0] +732,359,main.pedersen.segments[0].windows[2].dbl2.out[1] +733,379,main.pedersen.segments[0].windows[2].dbl2.lamda +734,380,main.pedersen.segments[0].windows[2].dbl2.x1_2 +735,347,main.pedersen.segments[0].windows[2].adr3.in1[0] +736,348,main.pedersen.segments[0].windows[2].adr3.in1[1] +737,353,main.pedersen.segments[0].windows[2].adr3.in2[0] +738,359,main.pedersen.segments[0].windows[2].adr3.in2[1] +739,354,main.pedersen.segments[0].windows[2].adr3.out[0] +740,360,main.pedersen.segments[0].windows[2].adr3.out[1] +741,381,main.pedersen.segments[0].windows[2].adr3.lamda +742,347,main.pedersen.segments[0].windows[2].adr4.in1[0] +743,348,main.pedersen.segments[0].windows[2].adr4.in1[1] +744,354,main.pedersen.segments[0].windows[2].adr4.in2[0] +745,360,main.pedersen.segments[0].windows[2].adr4.in2[1] +746,355,main.pedersen.segments[0].windows[2].adr4.out[0] +747,361,main.pedersen.segments[0].windows[2].adr4.out[1] +748,382,main.pedersen.segments[0].windows[2].adr4.lamda +749,347,main.pedersen.segments[0].windows[2].adr5.in1[0] +750,348,main.pedersen.segments[0].windows[2].adr5.in1[1] +751,355,main.pedersen.segments[0].windows[2].adr5.in2[0] +752,361,main.pedersen.segments[0].windows[2].adr5.in2[1] +753,356,main.pedersen.segments[0].windows[2].adr5.out[0] +754,362,main.pedersen.segments[0].windows[2].adr5.out[1] +755,383,main.pedersen.segments[0].windows[2].adr5.lamda +756,347,main.pedersen.segments[0].windows[2].adr6.in1[0] +757,348,main.pedersen.segments[0].windows[2].adr6.in1[1] +758,356,main.pedersen.segments[0].windows[2].adr6.in2[0] +759,362,main.pedersen.segments[0].windows[2].adr6.in2[1] +760,357,main.pedersen.segments[0].windows[2].adr6.out[0] +761,363,main.pedersen.segments[0].windows[2].adr6.out[1] +762,384,main.pedersen.segments[0].windows[2].adr6.lamda +763,347,main.pedersen.segments[0].windows[2].adr7.in1[0] +764,348,main.pedersen.segments[0].windows[2].adr7.in1[1] +765,357,main.pedersen.segments[0].windows[2].adr7.in2[0] +766,363,main.pedersen.segments[0].windows[2].adr7.in2[1] +767,358,main.pedersen.segments[0].windows[2].adr7.out[0] +768,364,main.pedersen.segments[0].windows[2].adr7.out[1] +769,385,main.pedersen.segments[0].windows[2].adr7.lamda +770,347,main.pedersen.segments[0].windows[2].adr8.in1[0] +771,348,main.pedersen.segments[0].windows[2].adr8.in1[1] +772,358,main.pedersen.segments[0].windows[2].adr8.in2[0] +773,364,main.pedersen.segments[0].windows[2].adr8.in2[1] +774,351,main.pedersen.segments[0].windows[2].adr8.out[0] +775,352,main.pedersen.segments[0].windows[2].adr8.out[1] +776,386,main.pedersen.segments[0].windows[2].adr8.lamda +796,15,main.pedersen.segments[0].windows[3].in[0] +797,16,main.pedersen.segments[0].windows[3].in[1] +798,17,main.pedersen.segments[0].windows[3].in[2] +799,18,main.pedersen.segments[0].windows[3].in[3] +800,396,main.pedersen.segments[0].windows[3].base[0] +801,397,main.pedersen.segments[0].windows[3].base[1] +802,398,main.pedersen.segments[0].windows[3].out[0] +803,399,main.pedersen.segments[0].windows[3].out[1] +804,400,main.pedersen.segments[0].windows[3].out8[0] +805,401,main.pedersen.segments[0].windows[3].out8[1] +806,396,main.pedersen.segments[0].windows[3].mux.c[0][0] +807,402,main.pedersen.segments[0].windows[3].mux.c[0][1] +808,403,main.pedersen.segments[0].windows[3].mux.c[0][2] +809,404,main.pedersen.segments[0].windows[3].mux.c[0][3] +810,405,main.pedersen.segments[0].windows[3].mux.c[0][4] +811,406,main.pedersen.segments[0].windows[3].mux.c[0][5] +812,407,main.pedersen.segments[0].windows[3].mux.c[0][6] +813,400,main.pedersen.segments[0].windows[3].mux.c[0][7] +814,397,main.pedersen.segments[0].windows[3].mux.c[1][0] +815,408,main.pedersen.segments[0].windows[3].mux.c[1][1] +816,409,main.pedersen.segments[0].windows[3].mux.c[1][2] +817,410,main.pedersen.segments[0].windows[3].mux.c[1][3] +818,411,main.pedersen.segments[0].windows[3].mux.c[1][4] +819,412,main.pedersen.segments[0].windows[3].mux.c[1][5] +820,413,main.pedersen.segments[0].windows[3].mux.c[1][6] +821,401,main.pedersen.segments[0].windows[3].mux.c[1][7] +822,15,main.pedersen.segments[0].windows[3].mux.s[0] +823,16,main.pedersen.segments[0].windows[3].mux.s[1] +824,17,main.pedersen.segments[0].windows[3].mux.s[2] +825,398,main.pedersen.segments[0].windows[3].mux.out[0] +826,414,main.pedersen.segments[0].windows[3].mux.out[1] +827,415,main.pedersen.segments[0].windows[3].mux.a210[0] +828,416,main.pedersen.segments[0].windows[3].mux.a210[1] +829,417,main.pedersen.segments[0].windows[3].mux.a21[0] +830,418,main.pedersen.segments[0].windows[3].mux.a21[1] +831,419,main.pedersen.segments[0].windows[3].mux.a20[0] +832,420,main.pedersen.segments[0].windows[3].mux.a20[1] +833,3389,main.pedersen.segments[0].windows[3].mux.a2[0] +834,3390,main.pedersen.segments[0].windows[3].mux.a2[1] +835,421,main.pedersen.segments[0].windows[3].mux.a10[0] +836,422,main.pedersen.segments[0].windows[3].mux.a10[1] +837,423,main.pedersen.segments[0].windows[3].mux.a1[0] +838,424,main.pedersen.segments[0].windows[3].mux.a1[1] +839,425,main.pedersen.segments[0].windows[3].mux.a0[0] +840,426,main.pedersen.segments[0].windows[3].mux.a0[1] +841,396,main.pedersen.segments[0].windows[3].mux.a[0] +842,397,main.pedersen.segments[0].windows[3].mux.a[1] +843,427,main.pedersen.segments[0].windows[3].mux.s10 +844,396,main.pedersen.segments[0].windows[3].dbl2.in[0] +845,397,main.pedersen.segments[0].windows[3].dbl2.in[1] +846,402,main.pedersen.segments[0].windows[3].dbl2.out[0] +847,408,main.pedersen.segments[0].windows[3].dbl2.out[1] +848,428,main.pedersen.segments[0].windows[3].dbl2.lamda +849,429,main.pedersen.segments[0].windows[3].dbl2.x1_2 +850,396,main.pedersen.segments[0].windows[3].adr3.in1[0] +851,397,main.pedersen.segments[0].windows[3].adr3.in1[1] +852,402,main.pedersen.segments[0].windows[3].adr3.in2[0] +853,408,main.pedersen.segments[0].windows[3].adr3.in2[1] +854,403,main.pedersen.segments[0].windows[3].adr3.out[0] +855,409,main.pedersen.segments[0].windows[3].adr3.out[1] +856,430,main.pedersen.segments[0].windows[3].adr3.lamda +857,396,main.pedersen.segments[0].windows[3].adr4.in1[0] +858,397,main.pedersen.segments[0].windows[3].adr4.in1[1] +859,403,main.pedersen.segments[0].windows[3].adr4.in2[0] +860,409,main.pedersen.segments[0].windows[3].adr4.in2[1] +861,404,main.pedersen.segments[0].windows[3].adr4.out[0] +862,410,main.pedersen.segments[0].windows[3].adr4.out[1] +863,431,main.pedersen.segments[0].windows[3].adr4.lamda +864,396,main.pedersen.segments[0].windows[3].adr5.in1[0] +865,397,main.pedersen.segments[0].windows[3].adr5.in1[1] +866,404,main.pedersen.segments[0].windows[3].adr5.in2[0] +867,410,main.pedersen.segments[0].windows[3].adr5.in2[1] +868,405,main.pedersen.segments[0].windows[3].adr5.out[0] +869,411,main.pedersen.segments[0].windows[3].adr5.out[1] +870,432,main.pedersen.segments[0].windows[3].adr5.lamda +871,396,main.pedersen.segments[0].windows[3].adr6.in1[0] +872,397,main.pedersen.segments[0].windows[3].adr6.in1[1] +873,405,main.pedersen.segments[0].windows[3].adr6.in2[0] +874,411,main.pedersen.segments[0].windows[3].adr6.in2[1] +875,406,main.pedersen.segments[0].windows[3].adr6.out[0] +876,412,main.pedersen.segments[0].windows[3].adr6.out[1] +877,433,main.pedersen.segments[0].windows[3].adr6.lamda +878,396,main.pedersen.segments[0].windows[3].adr7.in1[0] +879,397,main.pedersen.segments[0].windows[3].adr7.in1[1] +880,406,main.pedersen.segments[0].windows[3].adr7.in2[0] +881,412,main.pedersen.segments[0].windows[3].adr7.in2[1] +882,407,main.pedersen.segments[0].windows[3].adr7.out[0] +883,413,main.pedersen.segments[0].windows[3].adr7.out[1] +884,434,main.pedersen.segments[0].windows[3].adr7.lamda +885,396,main.pedersen.segments[0].windows[3].adr8.in1[0] +886,397,main.pedersen.segments[0].windows[3].adr8.in1[1] +887,407,main.pedersen.segments[0].windows[3].adr8.in2[0] +888,413,main.pedersen.segments[0].windows[3].adr8.in2[1] +889,400,main.pedersen.segments[0].windows[3].adr8.out[0] +890,401,main.pedersen.segments[0].windows[3].adr8.out[1] +891,435,main.pedersen.segments[0].windows[3].adr8.lamda +911,19,main.pedersen.segments[0].windows[4].in[0] +912,20,main.pedersen.segments[0].windows[4].in[1] +913,21,main.pedersen.segments[0].windows[4].in[2] +914,22,main.pedersen.segments[0].windows[4].in[3] +915,445,main.pedersen.segments[0].windows[4].base[0] +916,446,main.pedersen.segments[0].windows[4].base[1] +917,447,main.pedersen.segments[0].windows[4].out[0] +918,448,main.pedersen.segments[0].windows[4].out[1] +919,449,main.pedersen.segments[0].windows[4].out8[0] +920,450,main.pedersen.segments[0].windows[4].out8[1] +921,445,main.pedersen.segments[0].windows[4].mux.c[0][0] +922,451,main.pedersen.segments[0].windows[4].mux.c[0][1] +923,452,main.pedersen.segments[0].windows[4].mux.c[0][2] +924,453,main.pedersen.segments[0].windows[4].mux.c[0][3] +925,454,main.pedersen.segments[0].windows[4].mux.c[0][4] +926,455,main.pedersen.segments[0].windows[4].mux.c[0][5] +927,456,main.pedersen.segments[0].windows[4].mux.c[0][6] +928,449,main.pedersen.segments[0].windows[4].mux.c[0][7] +929,446,main.pedersen.segments[0].windows[4].mux.c[1][0] +930,457,main.pedersen.segments[0].windows[4].mux.c[1][1] +931,458,main.pedersen.segments[0].windows[4].mux.c[1][2] +932,459,main.pedersen.segments[0].windows[4].mux.c[1][3] +933,460,main.pedersen.segments[0].windows[4].mux.c[1][4] +934,461,main.pedersen.segments[0].windows[4].mux.c[1][5] +935,462,main.pedersen.segments[0].windows[4].mux.c[1][6] +936,450,main.pedersen.segments[0].windows[4].mux.c[1][7] +937,19,main.pedersen.segments[0].windows[4].mux.s[0] +938,20,main.pedersen.segments[0].windows[4].mux.s[1] +939,21,main.pedersen.segments[0].windows[4].mux.s[2] +940,447,main.pedersen.segments[0].windows[4].mux.out[0] +941,463,main.pedersen.segments[0].windows[4].mux.out[1] +942,464,main.pedersen.segments[0].windows[4].mux.a210[0] +943,465,main.pedersen.segments[0].windows[4].mux.a210[1] +944,466,main.pedersen.segments[0].windows[4].mux.a21[0] +945,467,main.pedersen.segments[0].windows[4].mux.a21[1] +946,468,main.pedersen.segments[0].windows[4].mux.a20[0] +947,469,main.pedersen.segments[0].windows[4].mux.a20[1] +948,3391,main.pedersen.segments[0].windows[4].mux.a2[0] +949,3392,main.pedersen.segments[0].windows[4].mux.a2[1] +950,470,main.pedersen.segments[0].windows[4].mux.a10[0] +951,471,main.pedersen.segments[0].windows[4].mux.a10[1] +952,472,main.pedersen.segments[0].windows[4].mux.a1[0] +953,473,main.pedersen.segments[0].windows[4].mux.a1[1] +954,474,main.pedersen.segments[0].windows[4].mux.a0[0] +955,475,main.pedersen.segments[0].windows[4].mux.a0[1] +956,445,main.pedersen.segments[0].windows[4].mux.a[0] +957,446,main.pedersen.segments[0].windows[4].mux.a[1] +958,476,main.pedersen.segments[0].windows[4].mux.s10 +959,445,main.pedersen.segments[0].windows[4].dbl2.in[0] +960,446,main.pedersen.segments[0].windows[4].dbl2.in[1] +961,451,main.pedersen.segments[0].windows[4].dbl2.out[0] +962,457,main.pedersen.segments[0].windows[4].dbl2.out[1] +963,477,main.pedersen.segments[0].windows[4].dbl2.lamda +964,478,main.pedersen.segments[0].windows[4].dbl2.x1_2 +965,445,main.pedersen.segments[0].windows[4].adr3.in1[0] +966,446,main.pedersen.segments[0].windows[4].adr3.in1[1] +967,451,main.pedersen.segments[0].windows[4].adr3.in2[0] +968,457,main.pedersen.segments[0].windows[4].adr3.in2[1] +969,452,main.pedersen.segments[0].windows[4].adr3.out[0] +970,458,main.pedersen.segments[0].windows[4].adr3.out[1] +971,479,main.pedersen.segments[0].windows[4].adr3.lamda +972,445,main.pedersen.segments[0].windows[4].adr4.in1[0] +973,446,main.pedersen.segments[0].windows[4].adr4.in1[1] +974,452,main.pedersen.segments[0].windows[4].adr4.in2[0] +975,458,main.pedersen.segments[0].windows[4].adr4.in2[1] +976,453,main.pedersen.segments[0].windows[4].adr4.out[0] +977,459,main.pedersen.segments[0].windows[4].adr4.out[1] +978,480,main.pedersen.segments[0].windows[4].adr4.lamda +979,445,main.pedersen.segments[0].windows[4].adr5.in1[0] +980,446,main.pedersen.segments[0].windows[4].adr5.in1[1] +981,453,main.pedersen.segments[0].windows[4].adr5.in2[0] +982,459,main.pedersen.segments[0].windows[4].adr5.in2[1] +983,454,main.pedersen.segments[0].windows[4].adr5.out[0] +984,460,main.pedersen.segments[0].windows[4].adr5.out[1] +985,481,main.pedersen.segments[0].windows[4].adr5.lamda +986,445,main.pedersen.segments[0].windows[4].adr6.in1[0] +987,446,main.pedersen.segments[0].windows[4].adr6.in1[1] +988,454,main.pedersen.segments[0].windows[4].adr6.in2[0] +989,460,main.pedersen.segments[0].windows[4].adr6.in2[1] +990,455,main.pedersen.segments[0].windows[4].adr6.out[0] +991,461,main.pedersen.segments[0].windows[4].adr6.out[1] +992,482,main.pedersen.segments[0].windows[4].adr6.lamda +993,445,main.pedersen.segments[0].windows[4].adr7.in1[0] +994,446,main.pedersen.segments[0].windows[4].adr7.in1[1] +995,455,main.pedersen.segments[0].windows[4].adr7.in2[0] +996,461,main.pedersen.segments[0].windows[4].adr7.in2[1] +997,456,main.pedersen.segments[0].windows[4].adr7.out[0] +998,462,main.pedersen.segments[0].windows[4].adr7.out[1] +999,483,main.pedersen.segments[0].windows[4].adr7.lamda +1000,445,main.pedersen.segments[0].windows[4].adr8.in1[0] +1001,446,main.pedersen.segments[0].windows[4].adr8.in1[1] +1002,456,main.pedersen.segments[0].windows[4].adr8.in2[0] +1003,462,main.pedersen.segments[0].windows[4].adr8.in2[1] +1004,449,main.pedersen.segments[0].windows[4].adr8.out[0] +1005,450,main.pedersen.segments[0].windows[4].adr8.out[1] +1006,484,main.pedersen.segments[0].windows[4].adr8.lamda +1026,23,main.pedersen.segments[0].windows[5].in[0] +1027,24,main.pedersen.segments[0].windows[5].in[1] +1028,25,main.pedersen.segments[0].windows[5].in[2] +1029,26,main.pedersen.segments[0].windows[5].in[3] +1030,494,main.pedersen.segments[0].windows[5].base[0] +1031,495,main.pedersen.segments[0].windows[5].base[1] +1032,496,main.pedersen.segments[0].windows[5].out[0] +1033,497,main.pedersen.segments[0].windows[5].out[1] +1034,498,main.pedersen.segments[0].windows[5].out8[0] +1035,499,main.pedersen.segments[0].windows[5].out8[1] +1036,494,main.pedersen.segments[0].windows[5].mux.c[0][0] +1037,500,main.pedersen.segments[0].windows[5].mux.c[0][1] +1038,501,main.pedersen.segments[0].windows[5].mux.c[0][2] +1039,502,main.pedersen.segments[0].windows[5].mux.c[0][3] +1040,503,main.pedersen.segments[0].windows[5].mux.c[0][4] +1041,504,main.pedersen.segments[0].windows[5].mux.c[0][5] +1042,505,main.pedersen.segments[0].windows[5].mux.c[0][6] +1043,498,main.pedersen.segments[0].windows[5].mux.c[0][7] +1044,495,main.pedersen.segments[0].windows[5].mux.c[1][0] +1045,506,main.pedersen.segments[0].windows[5].mux.c[1][1] +1046,507,main.pedersen.segments[0].windows[5].mux.c[1][2] +1047,508,main.pedersen.segments[0].windows[5].mux.c[1][3] +1048,509,main.pedersen.segments[0].windows[5].mux.c[1][4] +1049,510,main.pedersen.segments[0].windows[5].mux.c[1][5] +1050,511,main.pedersen.segments[0].windows[5].mux.c[1][6] +1051,499,main.pedersen.segments[0].windows[5].mux.c[1][7] +1052,23,main.pedersen.segments[0].windows[5].mux.s[0] +1053,24,main.pedersen.segments[0].windows[5].mux.s[1] +1054,25,main.pedersen.segments[0].windows[5].mux.s[2] +1055,496,main.pedersen.segments[0].windows[5].mux.out[0] +1056,512,main.pedersen.segments[0].windows[5].mux.out[1] +1057,513,main.pedersen.segments[0].windows[5].mux.a210[0] +1058,514,main.pedersen.segments[0].windows[5].mux.a210[1] +1059,515,main.pedersen.segments[0].windows[5].mux.a21[0] +1060,516,main.pedersen.segments[0].windows[5].mux.a21[1] +1061,517,main.pedersen.segments[0].windows[5].mux.a20[0] +1062,518,main.pedersen.segments[0].windows[5].mux.a20[1] +1063,3393,main.pedersen.segments[0].windows[5].mux.a2[0] +1064,3394,main.pedersen.segments[0].windows[5].mux.a2[1] +1065,519,main.pedersen.segments[0].windows[5].mux.a10[0] +1066,520,main.pedersen.segments[0].windows[5].mux.a10[1] +1067,521,main.pedersen.segments[0].windows[5].mux.a1[0] +1068,522,main.pedersen.segments[0].windows[5].mux.a1[1] +1069,523,main.pedersen.segments[0].windows[5].mux.a0[0] +1070,524,main.pedersen.segments[0].windows[5].mux.a0[1] +1071,494,main.pedersen.segments[0].windows[5].mux.a[0] +1072,495,main.pedersen.segments[0].windows[5].mux.a[1] +1073,525,main.pedersen.segments[0].windows[5].mux.s10 +1074,494,main.pedersen.segments[0].windows[5].dbl2.in[0] +1075,495,main.pedersen.segments[0].windows[5].dbl2.in[1] +1076,500,main.pedersen.segments[0].windows[5].dbl2.out[0] +1077,506,main.pedersen.segments[0].windows[5].dbl2.out[1] +1078,526,main.pedersen.segments[0].windows[5].dbl2.lamda +1079,527,main.pedersen.segments[0].windows[5].dbl2.x1_2 +1080,494,main.pedersen.segments[0].windows[5].adr3.in1[0] +1081,495,main.pedersen.segments[0].windows[5].adr3.in1[1] +1082,500,main.pedersen.segments[0].windows[5].adr3.in2[0] +1083,506,main.pedersen.segments[0].windows[5].adr3.in2[1] +1084,501,main.pedersen.segments[0].windows[5].adr3.out[0] +1085,507,main.pedersen.segments[0].windows[5].adr3.out[1] +1086,528,main.pedersen.segments[0].windows[5].adr3.lamda +1087,494,main.pedersen.segments[0].windows[5].adr4.in1[0] +1088,495,main.pedersen.segments[0].windows[5].adr4.in1[1] +1089,501,main.pedersen.segments[0].windows[5].adr4.in2[0] +1090,507,main.pedersen.segments[0].windows[5].adr4.in2[1] +1091,502,main.pedersen.segments[0].windows[5].adr4.out[0] +1092,508,main.pedersen.segments[0].windows[5].adr4.out[1] +1093,529,main.pedersen.segments[0].windows[5].adr4.lamda +1094,494,main.pedersen.segments[0].windows[5].adr5.in1[0] +1095,495,main.pedersen.segments[0].windows[5].adr5.in1[1] +1096,502,main.pedersen.segments[0].windows[5].adr5.in2[0] +1097,508,main.pedersen.segments[0].windows[5].adr5.in2[1] +1098,503,main.pedersen.segments[0].windows[5].adr5.out[0] +1099,509,main.pedersen.segments[0].windows[5].adr5.out[1] +1100,530,main.pedersen.segments[0].windows[5].adr5.lamda +1101,494,main.pedersen.segments[0].windows[5].adr6.in1[0] +1102,495,main.pedersen.segments[0].windows[5].adr6.in1[1] +1103,503,main.pedersen.segments[0].windows[5].adr6.in2[0] +1104,509,main.pedersen.segments[0].windows[5].adr6.in2[1] +1105,504,main.pedersen.segments[0].windows[5].adr6.out[0] +1106,510,main.pedersen.segments[0].windows[5].adr6.out[1] +1107,531,main.pedersen.segments[0].windows[5].adr6.lamda +1108,494,main.pedersen.segments[0].windows[5].adr7.in1[0] +1109,495,main.pedersen.segments[0].windows[5].adr7.in1[1] +1110,504,main.pedersen.segments[0].windows[5].adr7.in2[0] +1111,510,main.pedersen.segments[0].windows[5].adr7.in2[1] +1112,505,main.pedersen.segments[0].windows[5].adr7.out[0] +1113,511,main.pedersen.segments[0].windows[5].adr7.out[1] +1114,532,main.pedersen.segments[0].windows[5].adr7.lamda +1115,494,main.pedersen.segments[0].windows[5].adr8.in1[0] +1116,495,main.pedersen.segments[0].windows[5].adr8.in1[1] +1117,505,main.pedersen.segments[0].windows[5].adr8.in2[0] +1118,511,main.pedersen.segments[0].windows[5].adr8.in2[1] +1119,498,main.pedersen.segments[0].windows[5].adr8.out[0] +1120,499,main.pedersen.segments[0].windows[5].adr8.out[1] +1121,533,main.pedersen.segments[0].windows[5].adr8.lamda +1141,27,main.pedersen.segments[0].windows[6].in[0] +1142,28,main.pedersen.segments[0].windows[6].in[1] +1143,29,main.pedersen.segments[0].windows[6].in[2] +1144,30,main.pedersen.segments[0].windows[6].in[3] +1145,543,main.pedersen.segments[0].windows[6].base[0] +1146,544,main.pedersen.segments[0].windows[6].base[1] +1147,545,main.pedersen.segments[0].windows[6].out[0] +1148,546,main.pedersen.segments[0].windows[6].out[1] +1149,547,main.pedersen.segments[0].windows[6].out8[0] +1150,548,main.pedersen.segments[0].windows[6].out8[1] +1151,543,main.pedersen.segments[0].windows[6].mux.c[0][0] +1152,549,main.pedersen.segments[0].windows[6].mux.c[0][1] +1153,550,main.pedersen.segments[0].windows[6].mux.c[0][2] +1154,551,main.pedersen.segments[0].windows[6].mux.c[0][3] +1155,552,main.pedersen.segments[0].windows[6].mux.c[0][4] +1156,553,main.pedersen.segments[0].windows[6].mux.c[0][5] +1157,554,main.pedersen.segments[0].windows[6].mux.c[0][6] +1158,547,main.pedersen.segments[0].windows[6].mux.c[0][7] +1159,544,main.pedersen.segments[0].windows[6].mux.c[1][0] +1160,555,main.pedersen.segments[0].windows[6].mux.c[1][1] +1161,556,main.pedersen.segments[0].windows[6].mux.c[1][2] +1162,557,main.pedersen.segments[0].windows[6].mux.c[1][3] +1163,558,main.pedersen.segments[0].windows[6].mux.c[1][4] +1164,559,main.pedersen.segments[0].windows[6].mux.c[1][5] +1165,560,main.pedersen.segments[0].windows[6].mux.c[1][6] +1166,548,main.pedersen.segments[0].windows[6].mux.c[1][7] +1167,27,main.pedersen.segments[0].windows[6].mux.s[0] +1168,28,main.pedersen.segments[0].windows[6].mux.s[1] +1169,29,main.pedersen.segments[0].windows[6].mux.s[2] +1170,545,main.pedersen.segments[0].windows[6].mux.out[0] +1171,561,main.pedersen.segments[0].windows[6].mux.out[1] +1172,562,main.pedersen.segments[0].windows[6].mux.a210[0] +1173,563,main.pedersen.segments[0].windows[6].mux.a210[1] +1174,564,main.pedersen.segments[0].windows[6].mux.a21[0] +1175,565,main.pedersen.segments[0].windows[6].mux.a21[1] +1176,566,main.pedersen.segments[0].windows[6].mux.a20[0] +1177,567,main.pedersen.segments[0].windows[6].mux.a20[1] +1178,3395,main.pedersen.segments[0].windows[6].mux.a2[0] +1179,3396,main.pedersen.segments[0].windows[6].mux.a2[1] +1180,568,main.pedersen.segments[0].windows[6].mux.a10[0] +1181,569,main.pedersen.segments[0].windows[6].mux.a10[1] +1182,570,main.pedersen.segments[0].windows[6].mux.a1[0] +1183,571,main.pedersen.segments[0].windows[6].mux.a1[1] +1184,572,main.pedersen.segments[0].windows[6].mux.a0[0] +1185,573,main.pedersen.segments[0].windows[6].mux.a0[1] +1186,543,main.pedersen.segments[0].windows[6].mux.a[0] +1187,544,main.pedersen.segments[0].windows[6].mux.a[1] +1188,574,main.pedersen.segments[0].windows[6].mux.s10 +1189,543,main.pedersen.segments[0].windows[6].dbl2.in[0] +1190,544,main.pedersen.segments[0].windows[6].dbl2.in[1] +1191,549,main.pedersen.segments[0].windows[6].dbl2.out[0] +1192,555,main.pedersen.segments[0].windows[6].dbl2.out[1] +1193,575,main.pedersen.segments[0].windows[6].dbl2.lamda +1194,576,main.pedersen.segments[0].windows[6].dbl2.x1_2 +1195,543,main.pedersen.segments[0].windows[6].adr3.in1[0] +1196,544,main.pedersen.segments[0].windows[6].adr3.in1[1] +1197,549,main.pedersen.segments[0].windows[6].adr3.in2[0] +1198,555,main.pedersen.segments[0].windows[6].adr3.in2[1] +1199,550,main.pedersen.segments[0].windows[6].adr3.out[0] +1200,556,main.pedersen.segments[0].windows[6].adr3.out[1] +1201,577,main.pedersen.segments[0].windows[6].adr3.lamda +1202,543,main.pedersen.segments[0].windows[6].adr4.in1[0] +1203,544,main.pedersen.segments[0].windows[6].adr4.in1[1] +1204,550,main.pedersen.segments[0].windows[6].adr4.in2[0] +1205,556,main.pedersen.segments[0].windows[6].adr4.in2[1] +1206,551,main.pedersen.segments[0].windows[6].adr4.out[0] +1207,557,main.pedersen.segments[0].windows[6].adr4.out[1] +1208,578,main.pedersen.segments[0].windows[6].adr4.lamda +1209,543,main.pedersen.segments[0].windows[6].adr5.in1[0] +1210,544,main.pedersen.segments[0].windows[6].adr5.in1[1] +1211,551,main.pedersen.segments[0].windows[6].adr5.in2[0] +1212,557,main.pedersen.segments[0].windows[6].adr5.in2[1] +1213,552,main.pedersen.segments[0].windows[6].adr5.out[0] +1214,558,main.pedersen.segments[0].windows[6].adr5.out[1] +1215,579,main.pedersen.segments[0].windows[6].adr5.lamda +1216,543,main.pedersen.segments[0].windows[6].adr6.in1[0] +1217,544,main.pedersen.segments[0].windows[6].adr6.in1[1] +1218,552,main.pedersen.segments[0].windows[6].adr6.in2[0] +1219,558,main.pedersen.segments[0].windows[6].adr6.in2[1] +1220,553,main.pedersen.segments[0].windows[6].adr6.out[0] +1221,559,main.pedersen.segments[0].windows[6].adr6.out[1] +1222,580,main.pedersen.segments[0].windows[6].adr6.lamda +1223,543,main.pedersen.segments[0].windows[6].adr7.in1[0] +1224,544,main.pedersen.segments[0].windows[6].adr7.in1[1] +1225,553,main.pedersen.segments[0].windows[6].adr7.in2[0] +1226,559,main.pedersen.segments[0].windows[6].adr7.in2[1] +1227,554,main.pedersen.segments[0].windows[6].adr7.out[0] +1228,560,main.pedersen.segments[0].windows[6].adr7.out[1] +1229,581,main.pedersen.segments[0].windows[6].adr7.lamda +1230,543,main.pedersen.segments[0].windows[6].adr8.in1[0] +1231,544,main.pedersen.segments[0].windows[6].adr8.in1[1] +1232,554,main.pedersen.segments[0].windows[6].adr8.in2[0] +1233,560,main.pedersen.segments[0].windows[6].adr8.in2[1] +1234,547,main.pedersen.segments[0].windows[6].adr8.out[0] +1235,548,main.pedersen.segments[0].windows[6].adr8.out[1] +1236,582,main.pedersen.segments[0].windows[6].adr8.lamda +1256,31,main.pedersen.segments[0].windows[7].in[0] +1257,32,main.pedersen.segments[0].windows[7].in[1] +1258,33,main.pedersen.segments[0].windows[7].in[2] +1259,34,main.pedersen.segments[0].windows[7].in[3] +1260,592,main.pedersen.segments[0].windows[7].base[0] +1261,593,main.pedersen.segments[0].windows[7].base[1] +1262,594,main.pedersen.segments[0].windows[7].out[0] +1263,595,main.pedersen.segments[0].windows[7].out[1] +1264,596,main.pedersen.segments[0].windows[7].out8[0] +1265,597,main.pedersen.segments[0].windows[7].out8[1] +1266,592,main.pedersen.segments[0].windows[7].mux.c[0][0] +1267,598,main.pedersen.segments[0].windows[7].mux.c[0][1] +1268,599,main.pedersen.segments[0].windows[7].mux.c[0][2] +1269,600,main.pedersen.segments[0].windows[7].mux.c[0][3] +1270,601,main.pedersen.segments[0].windows[7].mux.c[0][4] +1271,602,main.pedersen.segments[0].windows[7].mux.c[0][5] +1272,603,main.pedersen.segments[0].windows[7].mux.c[0][6] +1273,596,main.pedersen.segments[0].windows[7].mux.c[0][7] +1274,593,main.pedersen.segments[0].windows[7].mux.c[1][0] +1275,604,main.pedersen.segments[0].windows[7].mux.c[1][1] +1276,605,main.pedersen.segments[0].windows[7].mux.c[1][2] +1277,606,main.pedersen.segments[0].windows[7].mux.c[1][3] +1278,607,main.pedersen.segments[0].windows[7].mux.c[1][4] +1279,608,main.pedersen.segments[0].windows[7].mux.c[1][5] +1280,609,main.pedersen.segments[0].windows[7].mux.c[1][6] +1281,597,main.pedersen.segments[0].windows[7].mux.c[1][7] +1282,31,main.pedersen.segments[0].windows[7].mux.s[0] +1283,32,main.pedersen.segments[0].windows[7].mux.s[1] +1284,33,main.pedersen.segments[0].windows[7].mux.s[2] +1285,594,main.pedersen.segments[0].windows[7].mux.out[0] +1286,610,main.pedersen.segments[0].windows[7].mux.out[1] +1287,611,main.pedersen.segments[0].windows[7].mux.a210[0] +1288,612,main.pedersen.segments[0].windows[7].mux.a210[1] +1289,613,main.pedersen.segments[0].windows[7].mux.a21[0] +1290,614,main.pedersen.segments[0].windows[7].mux.a21[1] +1291,615,main.pedersen.segments[0].windows[7].mux.a20[0] +1292,616,main.pedersen.segments[0].windows[7].mux.a20[1] +1293,3397,main.pedersen.segments[0].windows[7].mux.a2[0] +1294,3398,main.pedersen.segments[0].windows[7].mux.a2[1] +1295,617,main.pedersen.segments[0].windows[7].mux.a10[0] +1296,618,main.pedersen.segments[0].windows[7].mux.a10[1] +1297,619,main.pedersen.segments[0].windows[7].mux.a1[0] +1298,620,main.pedersen.segments[0].windows[7].mux.a1[1] +1299,621,main.pedersen.segments[0].windows[7].mux.a0[0] +1300,622,main.pedersen.segments[0].windows[7].mux.a0[1] +1301,592,main.pedersen.segments[0].windows[7].mux.a[0] +1302,593,main.pedersen.segments[0].windows[7].mux.a[1] +1303,623,main.pedersen.segments[0].windows[7].mux.s10 +1304,592,main.pedersen.segments[0].windows[7].dbl2.in[0] +1305,593,main.pedersen.segments[0].windows[7].dbl2.in[1] +1306,598,main.pedersen.segments[0].windows[7].dbl2.out[0] +1307,604,main.pedersen.segments[0].windows[7].dbl2.out[1] +1308,624,main.pedersen.segments[0].windows[7].dbl2.lamda +1309,625,main.pedersen.segments[0].windows[7].dbl2.x1_2 +1310,592,main.pedersen.segments[0].windows[7].adr3.in1[0] +1311,593,main.pedersen.segments[0].windows[7].adr3.in1[1] +1312,598,main.pedersen.segments[0].windows[7].adr3.in2[0] +1313,604,main.pedersen.segments[0].windows[7].adr3.in2[1] +1314,599,main.pedersen.segments[0].windows[7].adr3.out[0] +1315,605,main.pedersen.segments[0].windows[7].adr3.out[1] +1316,626,main.pedersen.segments[0].windows[7].adr3.lamda +1317,592,main.pedersen.segments[0].windows[7].adr4.in1[0] +1318,593,main.pedersen.segments[0].windows[7].adr4.in1[1] +1319,599,main.pedersen.segments[0].windows[7].adr4.in2[0] +1320,605,main.pedersen.segments[0].windows[7].adr4.in2[1] +1321,600,main.pedersen.segments[0].windows[7].adr4.out[0] +1322,606,main.pedersen.segments[0].windows[7].adr4.out[1] +1323,627,main.pedersen.segments[0].windows[7].adr4.lamda +1324,592,main.pedersen.segments[0].windows[7].adr5.in1[0] +1325,593,main.pedersen.segments[0].windows[7].adr5.in1[1] +1326,600,main.pedersen.segments[0].windows[7].adr5.in2[0] +1327,606,main.pedersen.segments[0].windows[7].adr5.in2[1] +1328,601,main.pedersen.segments[0].windows[7].adr5.out[0] +1329,607,main.pedersen.segments[0].windows[7].adr5.out[1] +1330,628,main.pedersen.segments[0].windows[7].adr5.lamda +1331,592,main.pedersen.segments[0].windows[7].adr6.in1[0] +1332,593,main.pedersen.segments[0].windows[7].adr6.in1[1] +1333,601,main.pedersen.segments[0].windows[7].adr6.in2[0] +1334,607,main.pedersen.segments[0].windows[7].adr6.in2[1] +1335,602,main.pedersen.segments[0].windows[7].adr6.out[0] +1336,608,main.pedersen.segments[0].windows[7].adr6.out[1] +1337,629,main.pedersen.segments[0].windows[7].adr6.lamda +1338,592,main.pedersen.segments[0].windows[7].adr7.in1[0] +1339,593,main.pedersen.segments[0].windows[7].adr7.in1[1] +1340,602,main.pedersen.segments[0].windows[7].adr7.in2[0] +1341,608,main.pedersen.segments[0].windows[7].adr7.in2[1] +1342,603,main.pedersen.segments[0].windows[7].adr7.out[0] +1343,609,main.pedersen.segments[0].windows[7].adr7.out[1] +1344,630,main.pedersen.segments[0].windows[7].adr7.lamda +1345,592,main.pedersen.segments[0].windows[7].adr8.in1[0] +1346,593,main.pedersen.segments[0].windows[7].adr8.in1[1] +1347,603,main.pedersen.segments[0].windows[7].adr8.in2[0] +1348,609,main.pedersen.segments[0].windows[7].adr8.in2[1] +1349,596,main.pedersen.segments[0].windows[7].adr8.out[0] +1350,597,main.pedersen.segments[0].windows[7].adr8.out[1] +1351,631,main.pedersen.segments[0].windows[7].adr8.lamda +1371,35,main.pedersen.segments[0].windows[8].in[0] +1372,36,main.pedersen.segments[0].windows[8].in[1] +1373,37,main.pedersen.segments[0].windows[8].in[2] +1374,38,main.pedersen.segments[0].windows[8].in[3] +1375,641,main.pedersen.segments[0].windows[8].base[0] +1376,642,main.pedersen.segments[0].windows[8].base[1] +1377,643,main.pedersen.segments[0].windows[8].out[0] +1378,644,main.pedersen.segments[0].windows[8].out[1] +1379,645,main.pedersen.segments[0].windows[8].out8[0] +1380,646,main.pedersen.segments[0].windows[8].out8[1] +1381,641,main.pedersen.segments[0].windows[8].mux.c[0][0] +1382,647,main.pedersen.segments[0].windows[8].mux.c[0][1] +1383,648,main.pedersen.segments[0].windows[8].mux.c[0][2] +1384,649,main.pedersen.segments[0].windows[8].mux.c[0][3] +1385,650,main.pedersen.segments[0].windows[8].mux.c[0][4] +1386,651,main.pedersen.segments[0].windows[8].mux.c[0][5] +1387,652,main.pedersen.segments[0].windows[8].mux.c[0][6] +1388,645,main.pedersen.segments[0].windows[8].mux.c[0][7] +1389,642,main.pedersen.segments[0].windows[8].mux.c[1][0] +1390,653,main.pedersen.segments[0].windows[8].mux.c[1][1] +1391,654,main.pedersen.segments[0].windows[8].mux.c[1][2] +1392,655,main.pedersen.segments[0].windows[8].mux.c[1][3] +1393,656,main.pedersen.segments[0].windows[8].mux.c[1][4] +1394,657,main.pedersen.segments[0].windows[8].mux.c[1][5] +1395,658,main.pedersen.segments[0].windows[8].mux.c[1][6] +1396,646,main.pedersen.segments[0].windows[8].mux.c[1][7] +1397,35,main.pedersen.segments[0].windows[8].mux.s[0] +1398,36,main.pedersen.segments[0].windows[8].mux.s[1] +1399,37,main.pedersen.segments[0].windows[8].mux.s[2] +1400,643,main.pedersen.segments[0].windows[8].mux.out[0] +1401,659,main.pedersen.segments[0].windows[8].mux.out[1] +1402,660,main.pedersen.segments[0].windows[8].mux.a210[0] +1403,661,main.pedersen.segments[0].windows[8].mux.a210[1] +1404,662,main.pedersen.segments[0].windows[8].mux.a21[0] +1405,663,main.pedersen.segments[0].windows[8].mux.a21[1] +1406,664,main.pedersen.segments[0].windows[8].mux.a20[0] +1407,665,main.pedersen.segments[0].windows[8].mux.a20[1] +1408,3399,main.pedersen.segments[0].windows[8].mux.a2[0] +1409,3400,main.pedersen.segments[0].windows[8].mux.a2[1] +1410,666,main.pedersen.segments[0].windows[8].mux.a10[0] +1411,667,main.pedersen.segments[0].windows[8].mux.a10[1] +1412,668,main.pedersen.segments[0].windows[8].mux.a1[0] +1413,669,main.pedersen.segments[0].windows[8].mux.a1[1] +1414,670,main.pedersen.segments[0].windows[8].mux.a0[0] +1415,671,main.pedersen.segments[0].windows[8].mux.a0[1] +1416,641,main.pedersen.segments[0].windows[8].mux.a[0] +1417,642,main.pedersen.segments[0].windows[8].mux.a[1] +1418,672,main.pedersen.segments[0].windows[8].mux.s10 +1419,641,main.pedersen.segments[0].windows[8].dbl2.in[0] +1420,642,main.pedersen.segments[0].windows[8].dbl2.in[1] +1421,647,main.pedersen.segments[0].windows[8].dbl2.out[0] +1422,653,main.pedersen.segments[0].windows[8].dbl2.out[1] +1423,673,main.pedersen.segments[0].windows[8].dbl2.lamda +1424,674,main.pedersen.segments[0].windows[8].dbl2.x1_2 +1425,641,main.pedersen.segments[0].windows[8].adr3.in1[0] +1426,642,main.pedersen.segments[0].windows[8].adr3.in1[1] +1427,647,main.pedersen.segments[0].windows[8].adr3.in2[0] +1428,653,main.pedersen.segments[0].windows[8].adr3.in2[1] +1429,648,main.pedersen.segments[0].windows[8].adr3.out[0] +1430,654,main.pedersen.segments[0].windows[8].adr3.out[1] +1431,675,main.pedersen.segments[0].windows[8].adr3.lamda +1432,641,main.pedersen.segments[0].windows[8].adr4.in1[0] +1433,642,main.pedersen.segments[0].windows[8].adr4.in1[1] +1434,648,main.pedersen.segments[0].windows[8].adr4.in2[0] +1435,654,main.pedersen.segments[0].windows[8].adr4.in2[1] +1436,649,main.pedersen.segments[0].windows[8].adr4.out[0] +1437,655,main.pedersen.segments[0].windows[8].adr4.out[1] +1438,676,main.pedersen.segments[0].windows[8].adr4.lamda +1439,641,main.pedersen.segments[0].windows[8].adr5.in1[0] +1440,642,main.pedersen.segments[0].windows[8].adr5.in1[1] +1441,649,main.pedersen.segments[0].windows[8].adr5.in2[0] +1442,655,main.pedersen.segments[0].windows[8].adr5.in2[1] +1443,650,main.pedersen.segments[0].windows[8].adr5.out[0] +1444,656,main.pedersen.segments[0].windows[8].adr5.out[1] +1445,677,main.pedersen.segments[0].windows[8].adr5.lamda +1446,641,main.pedersen.segments[0].windows[8].adr6.in1[0] +1447,642,main.pedersen.segments[0].windows[8].adr6.in1[1] +1448,650,main.pedersen.segments[0].windows[8].adr6.in2[0] +1449,656,main.pedersen.segments[0].windows[8].adr6.in2[1] +1450,651,main.pedersen.segments[0].windows[8].adr6.out[0] +1451,657,main.pedersen.segments[0].windows[8].adr6.out[1] +1452,678,main.pedersen.segments[0].windows[8].adr6.lamda +1453,641,main.pedersen.segments[0].windows[8].adr7.in1[0] +1454,642,main.pedersen.segments[0].windows[8].adr7.in1[1] +1455,651,main.pedersen.segments[0].windows[8].adr7.in2[0] +1456,657,main.pedersen.segments[0].windows[8].adr7.in2[1] +1457,652,main.pedersen.segments[0].windows[8].adr7.out[0] +1458,658,main.pedersen.segments[0].windows[8].adr7.out[1] +1459,679,main.pedersen.segments[0].windows[8].adr7.lamda +1460,641,main.pedersen.segments[0].windows[8].adr8.in1[0] +1461,642,main.pedersen.segments[0].windows[8].adr8.in1[1] +1462,652,main.pedersen.segments[0].windows[8].adr8.in2[0] +1463,658,main.pedersen.segments[0].windows[8].adr8.in2[1] +1464,645,main.pedersen.segments[0].windows[8].adr8.out[0] +1465,646,main.pedersen.segments[0].windows[8].adr8.out[1] +1466,680,main.pedersen.segments[0].windows[8].adr8.lamda +1486,39,main.pedersen.segments[0].windows[9].in[0] +1487,40,main.pedersen.segments[0].windows[9].in[1] +1488,41,main.pedersen.segments[0].windows[9].in[2] +1489,42,main.pedersen.segments[0].windows[9].in[3] +1490,690,main.pedersen.segments[0].windows[9].base[0] +1491,691,main.pedersen.segments[0].windows[9].base[1] +1492,692,main.pedersen.segments[0].windows[9].out[0] +1493,693,main.pedersen.segments[0].windows[9].out[1] +1494,694,main.pedersen.segments[0].windows[9].out8[0] +1495,695,main.pedersen.segments[0].windows[9].out8[1] +1496,690,main.pedersen.segments[0].windows[9].mux.c[0][0] +1497,696,main.pedersen.segments[0].windows[9].mux.c[0][1] +1498,697,main.pedersen.segments[0].windows[9].mux.c[0][2] +1499,698,main.pedersen.segments[0].windows[9].mux.c[0][3] +1500,699,main.pedersen.segments[0].windows[9].mux.c[0][4] +1501,700,main.pedersen.segments[0].windows[9].mux.c[0][5] +1502,701,main.pedersen.segments[0].windows[9].mux.c[0][6] +1503,694,main.pedersen.segments[0].windows[9].mux.c[0][7] +1504,691,main.pedersen.segments[0].windows[9].mux.c[1][0] +1505,702,main.pedersen.segments[0].windows[9].mux.c[1][1] +1506,703,main.pedersen.segments[0].windows[9].mux.c[1][2] +1507,704,main.pedersen.segments[0].windows[9].mux.c[1][3] +1508,705,main.pedersen.segments[0].windows[9].mux.c[1][4] +1509,706,main.pedersen.segments[0].windows[9].mux.c[1][5] +1510,707,main.pedersen.segments[0].windows[9].mux.c[1][6] +1511,695,main.pedersen.segments[0].windows[9].mux.c[1][7] +1512,39,main.pedersen.segments[0].windows[9].mux.s[0] +1513,40,main.pedersen.segments[0].windows[9].mux.s[1] +1514,41,main.pedersen.segments[0].windows[9].mux.s[2] +1515,692,main.pedersen.segments[0].windows[9].mux.out[0] +1516,708,main.pedersen.segments[0].windows[9].mux.out[1] +1517,709,main.pedersen.segments[0].windows[9].mux.a210[0] +1518,710,main.pedersen.segments[0].windows[9].mux.a210[1] +1519,711,main.pedersen.segments[0].windows[9].mux.a21[0] +1520,712,main.pedersen.segments[0].windows[9].mux.a21[1] +1521,713,main.pedersen.segments[0].windows[9].mux.a20[0] +1522,714,main.pedersen.segments[0].windows[9].mux.a20[1] +1523,3401,main.pedersen.segments[0].windows[9].mux.a2[0] +1524,3402,main.pedersen.segments[0].windows[9].mux.a2[1] +1525,715,main.pedersen.segments[0].windows[9].mux.a10[0] +1526,716,main.pedersen.segments[0].windows[9].mux.a10[1] +1527,717,main.pedersen.segments[0].windows[9].mux.a1[0] +1528,718,main.pedersen.segments[0].windows[9].mux.a1[1] +1529,719,main.pedersen.segments[0].windows[9].mux.a0[0] +1530,720,main.pedersen.segments[0].windows[9].mux.a0[1] +1531,690,main.pedersen.segments[0].windows[9].mux.a[0] +1532,691,main.pedersen.segments[0].windows[9].mux.a[1] +1533,721,main.pedersen.segments[0].windows[9].mux.s10 +1534,690,main.pedersen.segments[0].windows[9].dbl2.in[0] +1535,691,main.pedersen.segments[0].windows[9].dbl2.in[1] +1536,696,main.pedersen.segments[0].windows[9].dbl2.out[0] +1537,702,main.pedersen.segments[0].windows[9].dbl2.out[1] +1538,722,main.pedersen.segments[0].windows[9].dbl2.lamda +1539,723,main.pedersen.segments[0].windows[9].dbl2.x1_2 +1540,690,main.pedersen.segments[0].windows[9].adr3.in1[0] +1541,691,main.pedersen.segments[0].windows[9].adr3.in1[1] +1542,696,main.pedersen.segments[0].windows[9].adr3.in2[0] +1543,702,main.pedersen.segments[0].windows[9].adr3.in2[1] +1544,697,main.pedersen.segments[0].windows[9].adr3.out[0] +1545,703,main.pedersen.segments[0].windows[9].adr3.out[1] +1546,724,main.pedersen.segments[0].windows[9].adr3.lamda +1547,690,main.pedersen.segments[0].windows[9].adr4.in1[0] +1548,691,main.pedersen.segments[0].windows[9].adr4.in1[1] +1549,697,main.pedersen.segments[0].windows[9].adr4.in2[0] +1550,703,main.pedersen.segments[0].windows[9].adr4.in2[1] +1551,698,main.pedersen.segments[0].windows[9].adr4.out[0] +1552,704,main.pedersen.segments[0].windows[9].adr4.out[1] +1553,725,main.pedersen.segments[0].windows[9].adr4.lamda +1554,690,main.pedersen.segments[0].windows[9].adr5.in1[0] +1555,691,main.pedersen.segments[0].windows[9].adr5.in1[1] +1556,698,main.pedersen.segments[0].windows[9].adr5.in2[0] +1557,704,main.pedersen.segments[0].windows[9].adr5.in2[1] +1558,699,main.pedersen.segments[0].windows[9].adr5.out[0] +1559,705,main.pedersen.segments[0].windows[9].adr5.out[1] +1560,726,main.pedersen.segments[0].windows[9].adr5.lamda +1561,690,main.pedersen.segments[0].windows[9].adr6.in1[0] +1562,691,main.pedersen.segments[0].windows[9].adr6.in1[1] +1563,699,main.pedersen.segments[0].windows[9].adr6.in2[0] +1564,705,main.pedersen.segments[0].windows[9].adr6.in2[1] +1565,700,main.pedersen.segments[0].windows[9].adr6.out[0] +1566,706,main.pedersen.segments[0].windows[9].adr6.out[1] +1567,727,main.pedersen.segments[0].windows[9].adr6.lamda +1568,690,main.pedersen.segments[0].windows[9].adr7.in1[0] +1569,691,main.pedersen.segments[0].windows[9].adr7.in1[1] +1570,700,main.pedersen.segments[0].windows[9].adr7.in2[0] +1571,706,main.pedersen.segments[0].windows[9].adr7.in2[1] +1572,701,main.pedersen.segments[0].windows[9].adr7.out[0] +1573,707,main.pedersen.segments[0].windows[9].adr7.out[1] +1574,728,main.pedersen.segments[0].windows[9].adr7.lamda +1575,690,main.pedersen.segments[0].windows[9].adr8.in1[0] +1576,691,main.pedersen.segments[0].windows[9].adr8.in1[1] +1577,701,main.pedersen.segments[0].windows[9].adr8.in2[0] +1578,707,main.pedersen.segments[0].windows[9].adr8.in2[1] +1579,694,main.pedersen.segments[0].windows[9].adr8.out[0] +1580,695,main.pedersen.segments[0].windows[9].adr8.out[1] +1581,729,main.pedersen.segments[0].windows[9].adr8.lamda +1601,43,main.pedersen.segments[0].windows[10].in[0] +1602,44,main.pedersen.segments[0].windows[10].in[1] +1603,45,main.pedersen.segments[0].windows[10].in[2] +1604,46,main.pedersen.segments[0].windows[10].in[3] +1605,739,main.pedersen.segments[0].windows[10].base[0] +1606,740,main.pedersen.segments[0].windows[10].base[1] +1607,741,main.pedersen.segments[0].windows[10].out[0] +1608,742,main.pedersen.segments[0].windows[10].out[1] +1609,743,main.pedersen.segments[0].windows[10].out8[0] +1610,744,main.pedersen.segments[0].windows[10].out8[1] +1611,739,main.pedersen.segments[0].windows[10].mux.c[0][0] +1612,745,main.pedersen.segments[0].windows[10].mux.c[0][1] +1613,746,main.pedersen.segments[0].windows[10].mux.c[0][2] +1614,747,main.pedersen.segments[0].windows[10].mux.c[0][3] +1615,748,main.pedersen.segments[0].windows[10].mux.c[0][4] +1616,749,main.pedersen.segments[0].windows[10].mux.c[0][5] +1617,750,main.pedersen.segments[0].windows[10].mux.c[0][6] +1618,743,main.pedersen.segments[0].windows[10].mux.c[0][7] +1619,740,main.pedersen.segments[0].windows[10].mux.c[1][0] +1620,751,main.pedersen.segments[0].windows[10].mux.c[1][1] +1621,752,main.pedersen.segments[0].windows[10].mux.c[1][2] +1622,753,main.pedersen.segments[0].windows[10].mux.c[1][3] +1623,754,main.pedersen.segments[0].windows[10].mux.c[1][4] +1624,755,main.pedersen.segments[0].windows[10].mux.c[1][5] +1625,756,main.pedersen.segments[0].windows[10].mux.c[1][6] +1626,744,main.pedersen.segments[0].windows[10].mux.c[1][7] +1627,43,main.pedersen.segments[0].windows[10].mux.s[0] +1628,44,main.pedersen.segments[0].windows[10].mux.s[1] +1629,45,main.pedersen.segments[0].windows[10].mux.s[2] +1630,741,main.pedersen.segments[0].windows[10].mux.out[0] +1631,757,main.pedersen.segments[0].windows[10].mux.out[1] +1632,758,main.pedersen.segments[0].windows[10].mux.a210[0] +1633,759,main.pedersen.segments[0].windows[10].mux.a210[1] +1634,760,main.pedersen.segments[0].windows[10].mux.a21[0] +1635,761,main.pedersen.segments[0].windows[10].mux.a21[1] +1636,762,main.pedersen.segments[0].windows[10].mux.a20[0] +1637,763,main.pedersen.segments[0].windows[10].mux.a20[1] +1638,3403,main.pedersen.segments[0].windows[10].mux.a2[0] +1639,3404,main.pedersen.segments[0].windows[10].mux.a2[1] +1640,764,main.pedersen.segments[0].windows[10].mux.a10[0] +1641,765,main.pedersen.segments[0].windows[10].mux.a10[1] +1642,766,main.pedersen.segments[0].windows[10].mux.a1[0] +1643,767,main.pedersen.segments[0].windows[10].mux.a1[1] +1644,768,main.pedersen.segments[0].windows[10].mux.a0[0] +1645,769,main.pedersen.segments[0].windows[10].mux.a0[1] +1646,739,main.pedersen.segments[0].windows[10].mux.a[0] +1647,740,main.pedersen.segments[0].windows[10].mux.a[1] +1648,770,main.pedersen.segments[0].windows[10].mux.s10 +1649,739,main.pedersen.segments[0].windows[10].dbl2.in[0] +1650,740,main.pedersen.segments[0].windows[10].dbl2.in[1] +1651,745,main.pedersen.segments[0].windows[10].dbl2.out[0] +1652,751,main.pedersen.segments[0].windows[10].dbl2.out[1] +1653,771,main.pedersen.segments[0].windows[10].dbl2.lamda +1654,772,main.pedersen.segments[0].windows[10].dbl2.x1_2 +1655,739,main.pedersen.segments[0].windows[10].adr3.in1[0] +1656,740,main.pedersen.segments[0].windows[10].adr3.in1[1] +1657,745,main.pedersen.segments[0].windows[10].adr3.in2[0] +1658,751,main.pedersen.segments[0].windows[10].adr3.in2[1] +1659,746,main.pedersen.segments[0].windows[10].adr3.out[0] +1660,752,main.pedersen.segments[0].windows[10].adr3.out[1] +1661,773,main.pedersen.segments[0].windows[10].adr3.lamda +1662,739,main.pedersen.segments[0].windows[10].adr4.in1[0] +1663,740,main.pedersen.segments[0].windows[10].adr4.in1[1] +1664,746,main.pedersen.segments[0].windows[10].adr4.in2[0] +1665,752,main.pedersen.segments[0].windows[10].adr4.in2[1] +1666,747,main.pedersen.segments[0].windows[10].adr4.out[0] +1667,753,main.pedersen.segments[0].windows[10].adr4.out[1] +1668,774,main.pedersen.segments[0].windows[10].adr4.lamda +1669,739,main.pedersen.segments[0].windows[10].adr5.in1[0] +1670,740,main.pedersen.segments[0].windows[10].adr5.in1[1] +1671,747,main.pedersen.segments[0].windows[10].adr5.in2[0] +1672,753,main.pedersen.segments[0].windows[10].adr5.in2[1] +1673,748,main.pedersen.segments[0].windows[10].adr5.out[0] +1674,754,main.pedersen.segments[0].windows[10].adr5.out[1] +1675,775,main.pedersen.segments[0].windows[10].adr5.lamda +1676,739,main.pedersen.segments[0].windows[10].adr6.in1[0] +1677,740,main.pedersen.segments[0].windows[10].adr6.in1[1] +1678,748,main.pedersen.segments[0].windows[10].adr6.in2[0] +1679,754,main.pedersen.segments[0].windows[10].adr6.in2[1] +1680,749,main.pedersen.segments[0].windows[10].adr6.out[0] +1681,755,main.pedersen.segments[0].windows[10].adr6.out[1] +1682,776,main.pedersen.segments[0].windows[10].adr6.lamda +1683,739,main.pedersen.segments[0].windows[10].adr7.in1[0] +1684,740,main.pedersen.segments[0].windows[10].adr7.in1[1] +1685,749,main.pedersen.segments[0].windows[10].adr7.in2[0] +1686,755,main.pedersen.segments[0].windows[10].adr7.in2[1] +1687,750,main.pedersen.segments[0].windows[10].adr7.out[0] +1688,756,main.pedersen.segments[0].windows[10].adr7.out[1] +1689,777,main.pedersen.segments[0].windows[10].adr7.lamda +1690,739,main.pedersen.segments[0].windows[10].adr8.in1[0] +1691,740,main.pedersen.segments[0].windows[10].adr8.in1[1] +1692,750,main.pedersen.segments[0].windows[10].adr8.in2[0] +1693,756,main.pedersen.segments[0].windows[10].adr8.in2[1] +1694,743,main.pedersen.segments[0].windows[10].adr8.out[0] +1695,744,main.pedersen.segments[0].windows[10].adr8.out[1] +1696,778,main.pedersen.segments[0].windows[10].adr8.lamda +1716,47,main.pedersen.segments[0].windows[11].in[0] +1717,48,main.pedersen.segments[0].windows[11].in[1] +1718,49,main.pedersen.segments[0].windows[11].in[2] +1719,50,main.pedersen.segments[0].windows[11].in[3] +1720,788,main.pedersen.segments[0].windows[11].base[0] +1721,789,main.pedersen.segments[0].windows[11].base[1] +1722,790,main.pedersen.segments[0].windows[11].out[0] +1723,791,main.pedersen.segments[0].windows[11].out[1] +1724,792,main.pedersen.segments[0].windows[11].out8[0] +1725,793,main.pedersen.segments[0].windows[11].out8[1] +1726,788,main.pedersen.segments[0].windows[11].mux.c[0][0] +1727,794,main.pedersen.segments[0].windows[11].mux.c[0][1] +1728,795,main.pedersen.segments[0].windows[11].mux.c[0][2] +1729,796,main.pedersen.segments[0].windows[11].mux.c[0][3] +1730,797,main.pedersen.segments[0].windows[11].mux.c[0][4] +1731,798,main.pedersen.segments[0].windows[11].mux.c[0][5] +1732,799,main.pedersen.segments[0].windows[11].mux.c[0][6] +1733,792,main.pedersen.segments[0].windows[11].mux.c[0][7] +1734,789,main.pedersen.segments[0].windows[11].mux.c[1][0] +1735,800,main.pedersen.segments[0].windows[11].mux.c[1][1] +1736,801,main.pedersen.segments[0].windows[11].mux.c[1][2] +1737,802,main.pedersen.segments[0].windows[11].mux.c[1][3] +1738,803,main.pedersen.segments[0].windows[11].mux.c[1][4] +1739,804,main.pedersen.segments[0].windows[11].mux.c[1][5] +1740,805,main.pedersen.segments[0].windows[11].mux.c[1][6] +1741,793,main.pedersen.segments[0].windows[11].mux.c[1][7] +1742,47,main.pedersen.segments[0].windows[11].mux.s[0] +1743,48,main.pedersen.segments[0].windows[11].mux.s[1] +1744,49,main.pedersen.segments[0].windows[11].mux.s[2] +1745,790,main.pedersen.segments[0].windows[11].mux.out[0] +1746,806,main.pedersen.segments[0].windows[11].mux.out[1] +1747,807,main.pedersen.segments[0].windows[11].mux.a210[0] +1748,808,main.pedersen.segments[0].windows[11].mux.a210[1] +1749,809,main.pedersen.segments[0].windows[11].mux.a21[0] +1750,810,main.pedersen.segments[0].windows[11].mux.a21[1] +1751,811,main.pedersen.segments[0].windows[11].mux.a20[0] +1752,812,main.pedersen.segments[0].windows[11].mux.a20[1] +1753,3405,main.pedersen.segments[0].windows[11].mux.a2[0] +1754,3406,main.pedersen.segments[0].windows[11].mux.a2[1] +1755,813,main.pedersen.segments[0].windows[11].mux.a10[0] +1756,814,main.pedersen.segments[0].windows[11].mux.a10[1] +1757,815,main.pedersen.segments[0].windows[11].mux.a1[0] +1758,816,main.pedersen.segments[0].windows[11].mux.a1[1] +1759,817,main.pedersen.segments[0].windows[11].mux.a0[0] +1760,818,main.pedersen.segments[0].windows[11].mux.a0[1] +1761,788,main.pedersen.segments[0].windows[11].mux.a[0] +1762,789,main.pedersen.segments[0].windows[11].mux.a[1] +1763,819,main.pedersen.segments[0].windows[11].mux.s10 +1764,788,main.pedersen.segments[0].windows[11].dbl2.in[0] +1765,789,main.pedersen.segments[0].windows[11].dbl2.in[1] +1766,794,main.pedersen.segments[0].windows[11].dbl2.out[0] +1767,800,main.pedersen.segments[0].windows[11].dbl2.out[1] +1768,820,main.pedersen.segments[0].windows[11].dbl2.lamda +1769,821,main.pedersen.segments[0].windows[11].dbl2.x1_2 +1770,788,main.pedersen.segments[0].windows[11].adr3.in1[0] +1771,789,main.pedersen.segments[0].windows[11].adr3.in1[1] +1772,794,main.pedersen.segments[0].windows[11].adr3.in2[0] +1773,800,main.pedersen.segments[0].windows[11].adr3.in2[1] +1774,795,main.pedersen.segments[0].windows[11].adr3.out[0] +1775,801,main.pedersen.segments[0].windows[11].adr3.out[1] +1776,822,main.pedersen.segments[0].windows[11].adr3.lamda +1777,788,main.pedersen.segments[0].windows[11].adr4.in1[0] +1778,789,main.pedersen.segments[0].windows[11].adr4.in1[1] +1779,795,main.pedersen.segments[0].windows[11].adr4.in2[0] +1780,801,main.pedersen.segments[0].windows[11].adr4.in2[1] +1781,796,main.pedersen.segments[0].windows[11].adr4.out[0] +1782,802,main.pedersen.segments[0].windows[11].adr4.out[1] +1783,823,main.pedersen.segments[0].windows[11].adr4.lamda +1784,788,main.pedersen.segments[0].windows[11].adr5.in1[0] +1785,789,main.pedersen.segments[0].windows[11].adr5.in1[1] +1786,796,main.pedersen.segments[0].windows[11].adr5.in2[0] +1787,802,main.pedersen.segments[0].windows[11].adr5.in2[1] +1788,797,main.pedersen.segments[0].windows[11].adr5.out[0] +1789,803,main.pedersen.segments[0].windows[11].adr5.out[1] +1790,824,main.pedersen.segments[0].windows[11].adr5.lamda +1791,788,main.pedersen.segments[0].windows[11].adr6.in1[0] +1792,789,main.pedersen.segments[0].windows[11].adr6.in1[1] +1793,797,main.pedersen.segments[0].windows[11].adr6.in2[0] +1794,803,main.pedersen.segments[0].windows[11].adr6.in2[1] +1795,798,main.pedersen.segments[0].windows[11].adr6.out[0] +1796,804,main.pedersen.segments[0].windows[11].adr6.out[1] +1797,825,main.pedersen.segments[0].windows[11].adr6.lamda +1798,788,main.pedersen.segments[0].windows[11].adr7.in1[0] +1799,789,main.pedersen.segments[0].windows[11].adr7.in1[1] +1800,798,main.pedersen.segments[0].windows[11].adr7.in2[0] +1801,804,main.pedersen.segments[0].windows[11].adr7.in2[1] +1802,799,main.pedersen.segments[0].windows[11].adr7.out[0] +1803,805,main.pedersen.segments[0].windows[11].adr7.out[1] +1804,826,main.pedersen.segments[0].windows[11].adr7.lamda +1805,788,main.pedersen.segments[0].windows[11].adr8.in1[0] +1806,789,main.pedersen.segments[0].windows[11].adr8.in1[1] +1807,799,main.pedersen.segments[0].windows[11].adr8.in2[0] +1808,805,main.pedersen.segments[0].windows[11].adr8.in2[1] +1809,792,main.pedersen.segments[0].windows[11].adr8.out[0] +1810,793,main.pedersen.segments[0].windows[11].adr8.out[1] +1811,827,main.pedersen.segments[0].windows[11].adr8.lamda +1831,51,main.pedersen.segments[0].windows[12].in[0] +1832,52,main.pedersen.segments[0].windows[12].in[1] +1833,53,main.pedersen.segments[0].windows[12].in[2] +1834,54,main.pedersen.segments[0].windows[12].in[3] +1835,837,main.pedersen.segments[0].windows[12].base[0] +1836,838,main.pedersen.segments[0].windows[12].base[1] +1837,839,main.pedersen.segments[0].windows[12].out[0] +1838,840,main.pedersen.segments[0].windows[12].out[1] +1839,841,main.pedersen.segments[0].windows[12].out8[0] +1840,842,main.pedersen.segments[0].windows[12].out8[1] +1841,837,main.pedersen.segments[0].windows[12].mux.c[0][0] +1842,843,main.pedersen.segments[0].windows[12].mux.c[0][1] +1843,844,main.pedersen.segments[0].windows[12].mux.c[0][2] +1844,845,main.pedersen.segments[0].windows[12].mux.c[0][3] +1845,846,main.pedersen.segments[0].windows[12].mux.c[0][4] +1846,847,main.pedersen.segments[0].windows[12].mux.c[0][5] +1847,848,main.pedersen.segments[0].windows[12].mux.c[0][6] +1848,841,main.pedersen.segments[0].windows[12].mux.c[0][7] +1849,838,main.pedersen.segments[0].windows[12].mux.c[1][0] +1850,849,main.pedersen.segments[0].windows[12].mux.c[1][1] +1851,850,main.pedersen.segments[0].windows[12].mux.c[1][2] +1852,851,main.pedersen.segments[0].windows[12].mux.c[1][3] +1853,852,main.pedersen.segments[0].windows[12].mux.c[1][4] +1854,853,main.pedersen.segments[0].windows[12].mux.c[1][5] +1855,854,main.pedersen.segments[0].windows[12].mux.c[1][6] +1856,842,main.pedersen.segments[0].windows[12].mux.c[1][7] +1857,51,main.pedersen.segments[0].windows[12].mux.s[0] +1858,52,main.pedersen.segments[0].windows[12].mux.s[1] +1859,53,main.pedersen.segments[0].windows[12].mux.s[2] +1860,839,main.pedersen.segments[0].windows[12].mux.out[0] +1861,855,main.pedersen.segments[0].windows[12].mux.out[1] +1862,856,main.pedersen.segments[0].windows[12].mux.a210[0] +1863,857,main.pedersen.segments[0].windows[12].mux.a210[1] +1864,858,main.pedersen.segments[0].windows[12].mux.a21[0] +1865,859,main.pedersen.segments[0].windows[12].mux.a21[1] +1866,860,main.pedersen.segments[0].windows[12].mux.a20[0] +1867,861,main.pedersen.segments[0].windows[12].mux.a20[1] +1868,3407,main.pedersen.segments[0].windows[12].mux.a2[0] +1869,3408,main.pedersen.segments[0].windows[12].mux.a2[1] +1870,862,main.pedersen.segments[0].windows[12].mux.a10[0] +1871,863,main.pedersen.segments[0].windows[12].mux.a10[1] +1872,864,main.pedersen.segments[0].windows[12].mux.a1[0] +1873,865,main.pedersen.segments[0].windows[12].mux.a1[1] +1874,866,main.pedersen.segments[0].windows[12].mux.a0[0] +1875,867,main.pedersen.segments[0].windows[12].mux.a0[1] +1876,837,main.pedersen.segments[0].windows[12].mux.a[0] +1877,838,main.pedersen.segments[0].windows[12].mux.a[1] +1878,868,main.pedersen.segments[0].windows[12].mux.s10 +1879,837,main.pedersen.segments[0].windows[12].dbl2.in[0] +1880,838,main.pedersen.segments[0].windows[12].dbl2.in[1] +1881,843,main.pedersen.segments[0].windows[12].dbl2.out[0] +1882,849,main.pedersen.segments[0].windows[12].dbl2.out[1] +1883,869,main.pedersen.segments[0].windows[12].dbl2.lamda +1884,870,main.pedersen.segments[0].windows[12].dbl2.x1_2 +1885,837,main.pedersen.segments[0].windows[12].adr3.in1[0] +1886,838,main.pedersen.segments[0].windows[12].adr3.in1[1] +1887,843,main.pedersen.segments[0].windows[12].adr3.in2[0] +1888,849,main.pedersen.segments[0].windows[12].adr3.in2[1] +1889,844,main.pedersen.segments[0].windows[12].adr3.out[0] +1890,850,main.pedersen.segments[0].windows[12].adr3.out[1] +1891,871,main.pedersen.segments[0].windows[12].adr3.lamda +1892,837,main.pedersen.segments[0].windows[12].adr4.in1[0] +1893,838,main.pedersen.segments[0].windows[12].adr4.in1[1] +1894,844,main.pedersen.segments[0].windows[12].adr4.in2[0] +1895,850,main.pedersen.segments[0].windows[12].adr4.in2[1] +1896,845,main.pedersen.segments[0].windows[12].adr4.out[0] +1897,851,main.pedersen.segments[0].windows[12].adr4.out[1] +1898,872,main.pedersen.segments[0].windows[12].adr4.lamda +1899,837,main.pedersen.segments[0].windows[12].adr5.in1[0] +1900,838,main.pedersen.segments[0].windows[12].adr5.in1[1] +1901,845,main.pedersen.segments[0].windows[12].adr5.in2[0] +1902,851,main.pedersen.segments[0].windows[12].adr5.in2[1] +1903,846,main.pedersen.segments[0].windows[12].adr5.out[0] +1904,852,main.pedersen.segments[0].windows[12].adr5.out[1] +1905,873,main.pedersen.segments[0].windows[12].adr5.lamda +1906,837,main.pedersen.segments[0].windows[12].adr6.in1[0] +1907,838,main.pedersen.segments[0].windows[12].adr6.in1[1] +1908,846,main.pedersen.segments[0].windows[12].adr6.in2[0] +1909,852,main.pedersen.segments[0].windows[12].adr6.in2[1] +1910,847,main.pedersen.segments[0].windows[12].adr6.out[0] +1911,853,main.pedersen.segments[0].windows[12].adr6.out[1] +1912,874,main.pedersen.segments[0].windows[12].adr6.lamda +1913,837,main.pedersen.segments[0].windows[12].adr7.in1[0] +1914,838,main.pedersen.segments[0].windows[12].adr7.in1[1] +1915,847,main.pedersen.segments[0].windows[12].adr7.in2[0] +1916,853,main.pedersen.segments[0].windows[12].adr7.in2[1] +1917,848,main.pedersen.segments[0].windows[12].adr7.out[0] +1918,854,main.pedersen.segments[0].windows[12].adr7.out[1] +1919,875,main.pedersen.segments[0].windows[12].adr7.lamda +1920,837,main.pedersen.segments[0].windows[12].adr8.in1[0] +1921,838,main.pedersen.segments[0].windows[12].adr8.in1[1] +1922,848,main.pedersen.segments[0].windows[12].adr8.in2[0] +1923,854,main.pedersen.segments[0].windows[12].adr8.in2[1] +1924,841,main.pedersen.segments[0].windows[12].adr8.out[0] +1925,842,main.pedersen.segments[0].windows[12].adr8.out[1] +1926,876,main.pedersen.segments[0].windows[12].adr8.lamda +1946,55,main.pedersen.segments[0].windows[13].in[0] +1947,56,main.pedersen.segments[0].windows[13].in[1] +1948,57,main.pedersen.segments[0].windows[13].in[2] +1949,58,main.pedersen.segments[0].windows[13].in[3] +1950,886,main.pedersen.segments[0].windows[13].base[0] +1951,887,main.pedersen.segments[0].windows[13].base[1] +1952,888,main.pedersen.segments[0].windows[13].out[0] +1953,889,main.pedersen.segments[0].windows[13].out[1] +1954,890,main.pedersen.segments[0].windows[13].out8[0] +1955,891,main.pedersen.segments[0].windows[13].out8[1] +1956,886,main.pedersen.segments[0].windows[13].mux.c[0][0] +1957,892,main.pedersen.segments[0].windows[13].mux.c[0][1] +1958,893,main.pedersen.segments[0].windows[13].mux.c[0][2] +1959,894,main.pedersen.segments[0].windows[13].mux.c[0][3] +1960,895,main.pedersen.segments[0].windows[13].mux.c[0][4] +1961,896,main.pedersen.segments[0].windows[13].mux.c[0][5] +1962,897,main.pedersen.segments[0].windows[13].mux.c[0][6] +1963,890,main.pedersen.segments[0].windows[13].mux.c[0][7] +1964,887,main.pedersen.segments[0].windows[13].mux.c[1][0] +1965,898,main.pedersen.segments[0].windows[13].mux.c[1][1] +1966,899,main.pedersen.segments[0].windows[13].mux.c[1][2] +1967,900,main.pedersen.segments[0].windows[13].mux.c[1][3] +1968,901,main.pedersen.segments[0].windows[13].mux.c[1][4] +1969,902,main.pedersen.segments[0].windows[13].mux.c[1][5] +1970,903,main.pedersen.segments[0].windows[13].mux.c[1][6] +1971,891,main.pedersen.segments[0].windows[13].mux.c[1][7] +1972,55,main.pedersen.segments[0].windows[13].mux.s[0] +1973,56,main.pedersen.segments[0].windows[13].mux.s[1] +1974,57,main.pedersen.segments[0].windows[13].mux.s[2] +1975,888,main.pedersen.segments[0].windows[13].mux.out[0] +1976,904,main.pedersen.segments[0].windows[13].mux.out[1] +1977,905,main.pedersen.segments[0].windows[13].mux.a210[0] +1978,906,main.pedersen.segments[0].windows[13].mux.a210[1] +1979,907,main.pedersen.segments[0].windows[13].mux.a21[0] +1980,908,main.pedersen.segments[0].windows[13].mux.a21[1] +1981,909,main.pedersen.segments[0].windows[13].mux.a20[0] +1982,910,main.pedersen.segments[0].windows[13].mux.a20[1] +1983,3409,main.pedersen.segments[0].windows[13].mux.a2[0] +1984,3410,main.pedersen.segments[0].windows[13].mux.a2[1] +1985,911,main.pedersen.segments[0].windows[13].mux.a10[0] +1986,912,main.pedersen.segments[0].windows[13].mux.a10[1] +1987,913,main.pedersen.segments[0].windows[13].mux.a1[0] +1988,914,main.pedersen.segments[0].windows[13].mux.a1[1] +1989,915,main.pedersen.segments[0].windows[13].mux.a0[0] +1990,916,main.pedersen.segments[0].windows[13].mux.a0[1] +1991,886,main.pedersen.segments[0].windows[13].mux.a[0] +1992,887,main.pedersen.segments[0].windows[13].mux.a[1] +1993,917,main.pedersen.segments[0].windows[13].mux.s10 +1994,886,main.pedersen.segments[0].windows[13].dbl2.in[0] +1995,887,main.pedersen.segments[0].windows[13].dbl2.in[1] +1996,892,main.pedersen.segments[0].windows[13].dbl2.out[0] +1997,898,main.pedersen.segments[0].windows[13].dbl2.out[1] +1998,918,main.pedersen.segments[0].windows[13].dbl2.lamda +1999,919,main.pedersen.segments[0].windows[13].dbl2.x1_2 +2000,886,main.pedersen.segments[0].windows[13].adr3.in1[0] +2001,887,main.pedersen.segments[0].windows[13].adr3.in1[1] +2002,892,main.pedersen.segments[0].windows[13].adr3.in2[0] +2003,898,main.pedersen.segments[0].windows[13].adr3.in2[1] +2004,893,main.pedersen.segments[0].windows[13].adr3.out[0] +2005,899,main.pedersen.segments[0].windows[13].adr3.out[1] +2006,920,main.pedersen.segments[0].windows[13].adr3.lamda +2007,886,main.pedersen.segments[0].windows[13].adr4.in1[0] +2008,887,main.pedersen.segments[0].windows[13].adr4.in1[1] +2009,893,main.pedersen.segments[0].windows[13].adr4.in2[0] +2010,899,main.pedersen.segments[0].windows[13].adr4.in2[1] +2011,894,main.pedersen.segments[0].windows[13].adr4.out[0] +2012,900,main.pedersen.segments[0].windows[13].adr4.out[1] +2013,921,main.pedersen.segments[0].windows[13].adr4.lamda +2014,886,main.pedersen.segments[0].windows[13].adr5.in1[0] +2015,887,main.pedersen.segments[0].windows[13].adr5.in1[1] +2016,894,main.pedersen.segments[0].windows[13].adr5.in2[0] +2017,900,main.pedersen.segments[0].windows[13].adr5.in2[1] +2018,895,main.pedersen.segments[0].windows[13].adr5.out[0] +2019,901,main.pedersen.segments[0].windows[13].adr5.out[1] +2020,922,main.pedersen.segments[0].windows[13].adr5.lamda +2021,886,main.pedersen.segments[0].windows[13].adr6.in1[0] +2022,887,main.pedersen.segments[0].windows[13].adr6.in1[1] +2023,895,main.pedersen.segments[0].windows[13].adr6.in2[0] +2024,901,main.pedersen.segments[0].windows[13].adr6.in2[1] +2025,896,main.pedersen.segments[0].windows[13].adr6.out[0] +2026,902,main.pedersen.segments[0].windows[13].adr6.out[1] +2027,923,main.pedersen.segments[0].windows[13].adr6.lamda +2028,886,main.pedersen.segments[0].windows[13].adr7.in1[0] +2029,887,main.pedersen.segments[0].windows[13].adr7.in1[1] +2030,896,main.pedersen.segments[0].windows[13].adr7.in2[0] +2031,902,main.pedersen.segments[0].windows[13].adr7.in2[1] +2032,897,main.pedersen.segments[0].windows[13].adr7.out[0] +2033,903,main.pedersen.segments[0].windows[13].adr7.out[1] +2034,924,main.pedersen.segments[0].windows[13].adr7.lamda +2035,886,main.pedersen.segments[0].windows[13].adr8.in1[0] +2036,887,main.pedersen.segments[0].windows[13].adr8.in1[1] +2037,897,main.pedersen.segments[0].windows[13].adr8.in2[0] +2038,903,main.pedersen.segments[0].windows[13].adr8.in2[1] +2039,890,main.pedersen.segments[0].windows[13].adr8.out[0] +2040,891,main.pedersen.segments[0].windows[13].adr8.out[1] +2041,925,main.pedersen.segments[0].windows[13].adr8.lamda +2061,59,main.pedersen.segments[0].windows[14].in[0] +2062,60,main.pedersen.segments[0].windows[14].in[1] +2063,61,main.pedersen.segments[0].windows[14].in[2] +2064,62,main.pedersen.segments[0].windows[14].in[3] +2065,935,main.pedersen.segments[0].windows[14].base[0] +2066,936,main.pedersen.segments[0].windows[14].base[1] +2067,937,main.pedersen.segments[0].windows[14].out[0] +2068,938,main.pedersen.segments[0].windows[14].out[1] +2069,939,main.pedersen.segments[0].windows[14].out8[0] +2070,940,main.pedersen.segments[0].windows[14].out8[1] +2071,935,main.pedersen.segments[0].windows[14].mux.c[0][0] +2072,941,main.pedersen.segments[0].windows[14].mux.c[0][1] +2073,942,main.pedersen.segments[0].windows[14].mux.c[0][2] +2074,943,main.pedersen.segments[0].windows[14].mux.c[0][3] +2075,944,main.pedersen.segments[0].windows[14].mux.c[0][4] +2076,945,main.pedersen.segments[0].windows[14].mux.c[0][5] +2077,946,main.pedersen.segments[0].windows[14].mux.c[0][6] +2078,939,main.pedersen.segments[0].windows[14].mux.c[0][7] +2079,936,main.pedersen.segments[0].windows[14].mux.c[1][0] +2080,947,main.pedersen.segments[0].windows[14].mux.c[1][1] +2081,948,main.pedersen.segments[0].windows[14].mux.c[1][2] +2082,949,main.pedersen.segments[0].windows[14].mux.c[1][3] +2083,950,main.pedersen.segments[0].windows[14].mux.c[1][4] +2084,951,main.pedersen.segments[0].windows[14].mux.c[1][5] +2085,952,main.pedersen.segments[0].windows[14].mux.c[1][6] +2086,940,main.pedersen.segments[0].windows[14].mux.c[1][7] +2087,59,main.pedersen.segments[0].windows[14].mux.s[0] +2088,60,main.pedersen.segments[0].windows[14].mux.s[1] +2089,61,main.pedersen.segments[0].windows[14].mux.s[2] +2090,937,main.pedersen.segments[0].windows[14].mux.out[0] +2091,953,main.pedersen.segments[0].windows[14].mux.out[1] +2092,954,main.pedersen.segments[0].windows[14].mux.a210[0] +2093,955,main.pedersen.segments[0].windows[14].mux.a210[1] +2094,956,main.pedersen.segments[0].windows[14].mux.a21[0] +2095,957,main.pedersen.segments[0].windows[14].mux.a21[1] +2096,958,main.pedersen.segments[0].windows[14].mux.a20[0] +2097,959,main.pedersen.segments[0].windows[14].mux.a20[1] +2098,3411,main.pedersen.segments[0].windows[14].mux.a2[0] +2099,3412,main.pedersen.segments[0].windows[14].mux.a2[1] +2100,960,main.pedersen.segments[0].windows[14].mux.a10[0] +2101,961,main.pedersen.segments[0].windows[14].mux.a10[1] +2102,962,main.pedersen.segments[0].windows[14].mux.a1[0] +2103,963,main.pedersen.segments[0].windows[14].mux.a1[1] +2104,964,main.pedersen.segments[0].windows[14].mux.a0[0] +2105,965,main.pedersen.segments[0].windows[14].mux.a0[1] +2106,935,main.pedersen.segments[0].windows[14].mux.a[0] +2107,936,main.pedersen.segments[0].windows[14].mux.a[1] +2108,966,main.pedersen.segments[0].windows[14].mux.s10 +2109,935,main.pedersen.segments[0].windows[14].dbl2.in[0] +2110,936,main.pedersen.segments[0].windows[14].dbl2.in[1] +2111,941,main.pedersen.segments[0].windows[14].dbl2.out[0] +2112,947,main.pedersen.segments[0].windows[14].dbl2.out[1] +2113,967,main.pedersen.segments[0].windows[14].dbl2.lamda +2114,968,main.pedersen.segments[0].windows[14].dbl2.x1_2 +2115,935,main.pedersen.segments[0].windows[14].adr3.in1[0] +2116,936,main.pedersen.segments[0].windows[14].adr3.in1[1] +2117,941,main.pedersen.segments[0].windows[14].adr3.in2[0] +2118,947,main.pedersen.segments[0].windows[14].adr3.in2[1] +2119,942,main.pedersen.segments[0].windows[14].adr3.out[0] +2120,948,main.pedersen.segments[0].windows[14].adr3.out[1] +2121,969,main.pedersen.segments[0].windows[14].adr3.lamda +2122,935,main.pedersen.segments[0].windows[14].adr4.in1[0] +2123,936,main.pedersen.segments[0].windows[14].adr4.in1[1] +2124,942,main.pedersen.segments[0].windows[14].adr4.in2[0] +2125,948,main.pedersen.segments[0].windows[14].adr4.in2[1] +2126,943,main.pedersen.segments[0].windows[14].adr4.out[0] +2127,949,main.pedersen.segments[0].windows[14].adr4.out[1] +2128,970,main.pedersen.segments[0].windows[14].adr4.lamda +2129,935,main.pedersen.segments[0].windows[14].adr5.in1[0] +2130,936,main.pedersen.segments[0].windows[14].adr5.in1[1] +2131,943,main.pedersen.segments[0].windows[14].adr5.in2[0] +2132,949,main.pedersen.segments[0].windows[14].adr5.in2[1] +2133,944,main.pedersen.segments[0].windows[14].adr5.out[0] +2134,950,main.pedersen.segments[0].windows[14].adr5.out[1] +2135,971,main.pedersen.segments[0].windows[14].adr5.lamda +2136,935,main.pedersen.segments[0].windows[14].adr6.in1[0] +2137,936,main.pedersen.segments[0].windows[14].adr6.in1[1] +2138,944,main.pedersen.segments[0].windows[14].adr6.in2[0] +2139,950,main.pedersen.segments[0].windows[14].adr6.in2[1] +2140,945,main.pedersen.segments[0].windows[14].adr6.out[0] +2141,951,main.pedersen.segments[0].windows[14].adr6.out[1] +2142,972,main.pedersen.segments[0].windows[14].adr6.lamda +2143,935,main.pedersen.segments[0].windows[14].adr7.in1[0] +2144,936,main.pedersen.segments[0].windows[14].adr7.in1[1] +2145,945,main.pedersen.segments[0].windows[14].adr7.in2[0] +2146,951,main.pedersen.segments[0].windows[14].adr7.in2[1] +2147,946,main.pedersen.segments[0].windows[14].adr7.out[0] +2148,952,main.pedersen.segments[0].windows[14].adr7.out[1] +2149,973,main.pedersen.segments[0].windows[14].adr7.lamda +2150,935,main.pedersen.segments[0].windows[14].adr8.in1[0] +2151,936,main.pedersen.segments[0].windows[14].adr8.in1[1] +2152,946,main.pedersen.segments[0].windows[14].adr8.in2[0] +2153,952,main.pedersen.segments[0].windows[14].adr8.in2[1] +2154,939,main.pedersen.segments[0].windows[14].adr8.out[0] +2155,940,main.pedersen.segments[0].windows[14].adr8.out[1] +2156,974,main.pedersen.segments[0].windows[14].adr8.lamda +2176,63,main.pedersen.segments[0].windows[15].in[0] +2177,64,main.pedersen.segments[0].windows[15].in[1] +2178,65,main.pedersen.segments[0].windows[15].in[2] +2179,66,main.pedersen.segments[0].windows[15].in[3] +2180,984,main.pedersen.segments[0].windows[15].base[0] +2181,985,main.pedersen.segments[0].windows[15].base[1] +2182,986,main.pedersen.segments[0].windows[15].out[0] +2183,987,main.pedersen.segments[0].windows[15].out[1] +2184,988,main.pedersen.segments[0].windows[15].out8[0] +2185,989,main.pedersen.segments[0].windows[15].out8[1] +2186,984,main.pedersen.segments[0].windows[15].mux.c[0][0] +2187,990,main.pedersen.segments[0].windows[15].mux.c[0][1] +2188,991,main.pedersen.segments[0].windows[15].mux.c[0][2] +2189,992,main.pedersen.segments[0].windows[15].mux.c[0][3] +2190,993,main.pedersen.segments[0].windows[15].mux.c[0][4] +2191,994,main.pedersen.segments[0].windows[15].mux.c[0][5] +2192,995,main.pedersen.segments[0].windows[15].mux.c[0][6] +2193,988,main.pedersen.segments[0].windows[15].mux.c[0][7] +2194,985,main.pedersen.segments[0].windows[15].mux.c[1][0] +2195,996,main.pedersen.segments[0].windows[15].mux.c[1][1] +2196,997,main.pedersen.segments[0].windows[15].mux.c[1][2] +2197,998,main.pedersen.segments[0].windows[15].mux.c[1][3] +2198,999,main.pedersen.segments[0].windows[15].mux.c[1][4] +2199,1000,main.pedersen.segments[0].windows[15].mux.c[1][5] +2200,1001,main.pedersen.segments[0].windows[15].mux.c[1][6] +2201,989,main.pedersen.segments[0].windows[15].mux.c[1][7] +2202,63,main.pedersen.segments[0].windows[15].mux.s[0] +2203,64,main.pedersen.segments[0].windows[15].mux.s[1] +2204,65,main.pedersen.segments[0].windows[15].mux.s[2] +2205,986,main.pedersen.segments[0].windows[15].mux.out[0] +2206,1002,main.pedersen.segments[0].windows[15].mux.out[1] +2207,1003,main.pedersen.segments[0].windows[15].mux.a210[0] +2208,1004,main.pedersen.segments[0].windows[15].mux.a210[1] +2209,1005,main.pedersen.segments[0].windows[15].mux.a21[0] +2210,1006,main.pedersen.segments[0].windows[15].mux.a21[1] +2211,1007,main.pedersen.segments[0].windows[15].mux.a20[0] +2212,1008,main.pedersen.segments[0].windows[15].mux.a20[1] +2213,3413,main.pedersen.segments[0].windows[15].mux.a2[0] +2214,3414,main.pedersen.segments[0].windows[15].mux.a2[1] +2215,1009,main.pedersen.segments[0].windows[15].mux.a10[0] +2216,1010,main.pedersen.segments[0].windows[15].mux.a10[1] +2217,1011,main.pedersen.segments[0].windows[15].mux.a1[0] +2218,1012,main.pedersen.segments[0].windows[15].mux.a1[1] +2219,1013,main.pedersen.segments[0].windows[15].mux.a0[0] +2220,1014,main.pedersen.segments[0].windows[15].mux.a0[1] +2221,984,main.pedersen.segments[0].windows[15].mux.a[0] +2222,985,main.pedersen.segments[0].windows[15].mux.a[1] +2223,1015,main.pedersen.segments[0].windows[15].mux.s10 +2224,984,main.pedersen.segments[0].windows[15].dbl2.in[0] +2225,985,main.pedersen.segments[0].windows[15].dbl2.in[1] +2226,990,main.pedersen.segments[0].windows[15].dbl2.out[0] +2227,996,main.pedersen.segments[0].windows[15].dbl2.out[1] +2228,1016,main.pedersen.segments[0].windows[15].dbl2.lamda +2229,1017,main.pedersen.segments[0].windows[15].dbl2.x1_2 +2230,984,main.pedersen.segments[0].windows[15].adr3.in1[0] +2231,985,main.pedersen.segments[0].windows[15].adr3.in1[1] +2232,990,main.pedersen.segments[0].windows[15].adr3.in2[0] +2233,996,main.pedersen.segments[0].windows[15].adr3.in2[1] +2234,991,main.pedersen.segments[0].windows[15].adr3.out[0] +2235,997,main.pedersen.segments[0].windows[15].adr3.out[1] +2236,1018,main.pedersen.segments[0].windows[15].adr3.lamda +2237,984,main.pedersen.segments[0].windows[15].adr4.in1[0] +2238,985,main.pedersen.segments[0].windows[15].adr4.in1[1] +2239,991,main.pedersen.segments[0].windows[15].adr4.in2[0] +2240,997,main.pedersen.segments[0].windows[15].adr4.in2[1] +2241,992,main.pedersen.segments[0].windows[15].adr4.out[0] +2242,998,main.pedersen.segments[0].windows[15].adr4.out[1] +2243,1019,main.pedersen.segments[0].windows[15].adr4.lamda +2244,984,main.pedersen.segments[0].windows[15].adr5.in1[0] +2245,985,main.pedersen.segments[0].windows[15].adr5.in1[1] +2246,992,main.pedersen.segments[0].windows[15].adr5.in2[0] +2247,998,main.pedersen.segments[0].windows[15].adr5.in2[1] +2248,993,main.pedersen.segments[0].windows[15].adr5.out[0] +2249,999,main.pedersen.segments[0].windows[15].adr5.out[1] +2250,1020,main.pedersen.segments[0].windows[15].adr5.lamda +2251,984,main.pedersen.segments[0].windows[15].adr6.in1[0] +2252,985,main.pedersen.segments[0].windows[15].adr6.in1[1] +2253,993,main.pedersen.segments[0].windows[15].adr6.in2[0] +2254,999,main.pedersen.segments[0].windows[15].adr6.in2[1] +2255,994,main.pedersen.segments[0].windows[15].adr6.out[0] +2256,1000,main.pedersen.segments[0].windows[15].adr6.out[1] +2257,1021,main.pedersen.segments[0].windows[15].adr6.lamda +2258,984,main.pedersen.segments[0].windows[15].adr7.in1[0] +2259,985,main.pedersen.segments[0].windows[15].adr7.in1[1] +2260,994,main.pedersen.segments[0].windows[15].adr7.in2[0] +2261,1000,main.pedersen.segments[0].windows[15].adr7.in2[1] +2262,995,main.pedersen.segments[0].windows[15].adr7.out[0] +2263,1001,main.pedersen.segments[0].windows[15].adr7.out[1] +2264,1022,main.pedersen.segments[0].windows[15].adr7.lamda +2265,984,main.pedersen.segments[0].windows[15].adr8.in1[0] +2266,985,main.pedersen.segments[0].windows[15].adr8.in1[1] +2267,995,main.pedersen.segments[0].windows[15].adr8.in2[0] +2268,1001,main.pedersen.segments[0].windows[15].adr8.in2[1] +2269,988,main.pedersen.segments[0].windows[15].adr8.out[0] +2270,989,main.pedersen.segments[0].windows[15].adr8.out[1] +2271,1023,main.pedersen.segments[0].windows[15].adr8.lamda +2291,67,main.pedersen.segments[0].windows[16].in[0] +2292,68,main.pedersen.segments[0].windows[16].in[1] +2293,69,main.pedersen.segments[0].windows[16].in[2] +2294,70,main.pedersen.segments[0].windows[16].in[3] +2295,1033,main.pedersen.segments[0].windows[16].base[0] +2296,1034,main.pedersen.segments[0].windows[16].base[1] +2297,1035,main.pedersen.segments[0].windows[16].out[0] +2298,1036,main.pedersen.segments[0].windows[16].out[1] +2299,1037,main.pedersen.segments[0].windows[16].out8[0] +2300,1038,main.pedersen.segments[0].windows[16].out8[1] +2301,1033,main.pedersen.segments[0].windows[16].mux.c[0][0] +2302,1039,main.pedersen.segments[0].windows[16].mux.c[0][1] +2303,1040,main.pedersen.segments[0].windows[16].mux.c[0][2] +2304,1041,main.pedersen.segments[0].windows[16].mux.c[0][3] +2305,1042,main.pedersen.segments[0].windows[16].mux.c[0][4] +2306,1043,main.pedersen.segments[0].windows[16].mux.c[0][5] +2307,1044,main.pedersen.segments[0].windows[16].mux.c[0][6] +2308,1037,main.pedersen.segments[0].windows[16].mux.c[0][7] +2309,1034,main.pedersen.segments[0].windows[16].mux.c[1][0] +2310,1045,main.pedersen.segments[0].windows[16].mux.c[1][1] +2311,1046,main.pedersen.segments[0].windows[16].mux.c[1][2] +2312,1047,main.pedersen.segments[0].windows[16].mux.c[1][3] +2313,1048,main.pedersen.segments[0].windows[16].mux.c[1][4] +2314,1049,main.pedersen.segments[0].windows[16].mux.c[1][5] +2315,1050,main.pedersen.segments[0].windows[16].mux.c[1][6] +2316,1038,main.pedersen.segments[0].windows[16].mux.c[1][7] +2317,67,main.pedersen.segments[0].windows[16].mux.s[0] +2318,68,main.pedersen.segments[0].windows[16].mux.s[1] +2319,69,main.pedersen.segments[0].windows[16].mux.s[2] +2320,1035,main.pedersen.segments[0].windows[16].mux.out[0] +2321,1051,main.pedersen.segments[0].windows[16].mux.out[1] +2322,1052,main.pedersen.segments[0].windows[16].mux.a210[0] +2323,1053,main.pedersen.segments[0].windows[16].mux.a210[1] +2324,1054,main.pedersen.segments[0].windows[16].mux.a21[0] +2325,1055,main.pedersen.segments[0].windows[16].mux.a21[1] +2326,1056,main.pedersen.segments[0].windows[16].mux.a20[0] +2327,1057,main.pedersen.segments[0].windows[16].mux.a20[1] +2328,3415,main.pedersen.segments[0].windows[16].mux.a2[0] +2329,3416,main.pedersen.segments[0].windows[16].mux.a2[1] +2330,1058,main.pedersen.segments[0].windows[16].mux.a10[0] +2331,1059,main.pedersen.segments[0].windows[16].mux.a10[1] +2332,1060,main.pedersen.segments[0].windows[16].mux.a1[0] +2333,1061,main.pedersen.segments[0].windows[16].mux.a1[1] +2334,1062,main.pedersen.segments[0].windows[16].mux.a0[0] +2335,1063,main.pedersen.segments[0].windows[16].mux.a0[1] +2336,1033,main.pedersen.segments[0].windows[16].mux.a[0] +2337,1034,main.pedersen.segments[0].windows[16].mux.a[1] +2338,1064,main.pedersen.segments[0].windows[16].mux.s10 +2339,1033,main.pedersen.segments[0].windows[16].dbl2.in[0] +2340,1034,main.pedersen.segments[0].windows[16].dbl2.in[1] +2341,1039,main.pedersen.segments[0].windows[16].dbl2.out[0] +2342,1045,main.pedersen.segments[0].windows[16].dbl2.out[1] +2343,1065,main.pedersen.segments[0].windows[16].dbl2.lamda +2344,1066,main.pedersen.segments[0].windows[16].dbl2.x1_2 +2345,1033,main.pedersen.segments[0].windows[16].adr3.in1[0] +2346,1034,main.pedersen.segments[0].windows[16].adr3.in1[1] +2347,1039,main.pedersen.segments[0].windows[16].adr3.in2[0] +2348,1045,main.pedersen.segments[0].windows[16].adr3.in2[1] +2349,1040,main.pedersen.segments[0].windows[16].adr3.out[0] +2350,1046,main.pedersen.segments[0].windows[16].adr3.out[1] +2351,1067,main.pedersen.segments[0].windows[16].adr3.lamda +2352,1033,main.pedersen.segments[0].windows[16].adr4.in1[0] +2353,1034,main.pedersen.segments[0].windows[16].adr4.in1[1] +2354,1040,main.pedersen.segments[0].windows[16].adr4.in2[0] +2355,1046,main.pedersen.segments[0].windows[16].adr4.in2[1] +2356,1041,main.pedersen.segments[0].windows[16].adr4.out[0] +2357,1047,main.pedersen.segments[0].windows[16].adr4.out[1] +2358,1068,main.pedersen.segments[0].windows[16].adr4.lamda +2359,1033,main.pedersen.segments[0].windows[16].adr5.in1[0] +2360,1034,main.pedersen.segments[0].windows[16].adr5.in1[1] +2361,1041,main.pedersen.segments[0].windows[16].adr5.in2[0] +2362,1047,main.pedersen.segments[0].windows[16].adr5.in2[1] +2363,1042,main.pedersen.segments[0].windows[16].adr5.out[0] +2364,1048,main.pedersen.segments[0].windows[16].adr5.out[1] +2365,1069,main.pedersen.segments[0].windows[16].adr5.lamda +2366,1033,main.pedersen.segments[0].windows[16].adr6.in1[0] +2367,1034,main.pedersen.segments[0].windows[16].adr6.in1[1] +2368,1042,main.pedersen.segments[0].windows[16].adr6.in2[0] +2369,1048,main.pedersen.segments[0].windows[16].adr6.in2[1] +2370,1043,main.pedersen.segments[0].windows[16].adr6.out[0] +2371,1049,main.pedersen.segments[0].windows[16].adr6.out[1] +2372,1070,main.pedersen.segments[0].windows[16].adr6.lamda +2373,1033,main.pedersen.segments[0].windows[16].adr7.in1[0] +2374,1034,main.pedersen.segments[0].windows[16].adr7.in1[1] +2375,1043,main.pedersen.segments[0].windows[16].adr7.in2[0] +2376,1049,main.pedersen.segments[0].windows[16].adr7.in2[1] +2377,1044,main.pedersen.segments[0].windows[16].adr7.out[0] +2378,1050,main.pedersen.segments[0].windows[16].adr7.out[1] +2379,1071,main.pedersen.segments[0].windows[16].adr7.lamda +2380,1033,main.pedersen.segments[0].windows[16].adr8.in1[0] +2381,1034,main.pedersen.segments[0].windows[16].adr8.in1[1] +2382,1044,main.pedersen.segments[0].windows[16].adr8.in2[0] +2383,1050,main.pedersen.segments[0].windows[16].adr8.in2[1] +2384,1037,main.pedersen.segments[0].windows[16].adr8.out[0] +2385,1038,main.pedersen.segments[0].windows[16].adr8.out[1] +2386,1072,main.pedersen.segments[0].windows[16].adr8.lamda +2406,71,main.pedersen.segments[0].windows[17].in[0] +2407,72,main.pedersen.segments[0].windows[17].in[1] +2408,73,main.pedersen.segments[0].windows[17].in[2] +2409,74,main.pedersen.segments[0].windows[17].in[3] +2410,1082,main.pedersen.segments[0].windows[17].base[0] +2411,1083,main.pedersen.segments[0].windows[17].base[1] +2412,1084,main.pedersen.segments[0].windows[17].out[0] +2413,1085,main.pedersen.segments[0].windows[17].out[1] +2414,1086,main.pedersen.segments[0].windows[17].out8[0] +2415,1087,main.pedersen.segments[0].windows[17].out8[1] +2416,1082,main.pedersen.segments[0].windows[17].mux.c[0][0] +2417,1088,main.pedersen.segments[0].windows[17].mux.c[0][1] +2418,1089,main.pedersen.segments[0].windows[17].mux.c[0][2] +2419,1090,main.pedersen.segments[0].windows[17].mux.c[0][3] +2420,1091,main.pedersen.segments[0].windows[17].mux.c[0][4] +2421,1092,main.pedersen.segments[0].windows[17].mux.c[0][5] +2422,1093,main.pedersen.segments[0].windows[17].mux.c[0][6] +2423,1086,main.pedersen.segments[0].windows[17].mux.c[0][7] +2424,1083,main.pedersen.segments[0].windows[17].mux.c[1][0] +2425,1094,main.pedersen.segments[0].windows[17].mux.c[1][1] +2426,1095,main.pedersen.segments[0].windows[17].mux.c[1][2] +2427,1096,main.pedersen.segments[0].windows[17].mux.c[1][3] +2428,1097,main.pedersen.segments[0].windows[17].mux.c[1][4] +2429,1098,main.pedersen.segments[0].windows[17].mux.c[1][5] +2430,1099,main.pedersen.segments[0].windows[17].mux.c[1][6] +2431,1087,main.pedersen.segments[0].windows[17].mux.c[1][7] +2432,71,main.pedersen.segments[0].windows[17].mux.s[0] +2433,72,main.pedersen.segments[0].windows[17].mux.s[1] +2434,73,main.pedersen.segments[0].windows[17].mux.s[2] +2435,1084,main.pedersen.segments[0].windows[17].mux.out[0] +2436,1100,main.pedersen.segments[0].windows[17].mux.out[1] +2437,1101,main.pedersen.segments[0].windows[17].mux.a210[0] +2438,1102,main.pedersen.segments[0].windows[17].mux.a210[1] +2439,1103,main.pedersen.segments[0].windows[17].mux.a21[0] +2440,1104,main.pedersen.segments[0].windows[17].mux.a21[1] +2441,1105,main.pedersen.segments[0].windows[17].mux.a20[0] +2442,1106,main.pedersen.segments[0].windows[17].mux.a20[1] +2443,3417,main.pedersen.segments[0].windows[17].mux.a2[0] +2444,3418,main.pedersen.segments[0].windows[17].mux.a2[1] +2445,1107,main.pedersen.segments[0].windows[17].mux.a10[0] +2446,1108,main.pedersen.segments[0].windows[17].mux.a10[1] +2447,1109,main.pedersen.segments[0].windows[17].mux.a1[0] +2448,1110,main.pedersen.segments[0].windows[17].mux.a1[1] +2449,1111,main.pedersen.segments[0].windows[17].mux.a0[0] +2450,1112,main.pedersen.segments[0].windows[17].mux.a0[1] +2451,1082,main.pedersen.segments[0].windows[17].mux.a[0] +2452,1083,main.pedersen.segments[0].windows[17].mux.a[1] +2453,1113,main.pedersen.segments[0].windows[17].mux.s10 +2454,1082,main.pedersen.segments[0].windows[17].dbl2.in[0] +2455,1083,main.pedersen.segments[0].windows[17].dbl2.in[1] +2456,1088,main.pedersen.segments[0].windows[17].dbl2.out[0] +2457,1094,main.pedersen.segments[0].windows[17].dbl2.out[1] +2458,1114,main.pedersen.segments[0].windows[17].dbl2.lamda +2459,1115,main.pedersen.segments[0].windows[17].dbl2.x1_2 +2460,1082,main.pedersen.segments[0].windows[17].adr3.in1[0] +2461,1083,main.pedersen.segments[0].windows[17].adr3.in1[1] +2462,1088,main.pedersen.segments[0].windows[17].adr3.in2[0] +2463,1094,main.pedersen.segments[0].windows[17].adr3.in2[1] +2464,1089,main.pedersen.segments[0].windows[17].adr3.out[0] +2465,1095,main.pedersen.segments[0].windows[17].adr3.out[1] +2466,1116,main.pedersen.segments[0].windows[17].adr3.lamda +2467,1082,main.pedersen.segments[0].windows[17].adr4.in1[0] +2468,1083,main.pedersen.segments[0].windows[17].adr4.in1[1] +2469,1089,main.pedersen.segments[0].windows[17].adr4.in2[0] +2470,1095,main.pedersen.segments[0].windows[17].adr4.in2[1] +2471,1090,main.pedersen.segments[0].windows[17].adr4.out[0] +2472,1096,main.pedersen.segments[0].windows[17].adr4.out[1] +2473,1117,main.pedersen.segments[0].windows[17].adr4.lamda +2474,1082,main.pedersen.segments[0].windows[17].adr5.in1[0] +2475,1083,main.pedersen.segments[0].windows[17].adr5.in1[1] +2476,1090,main.pedersen.segments[0].windows[17].adr5.in2[0] +2477,1096,main.pedersen.segments[0].windows[17].adr5.in2[1] +2478,1091,main.pedersen.segments[0].windows[17].adr5.out[0] +2479,1097,main.pedersen.segments[0].windows[17].adr5.out[1] +2480,1118,main.pedersen.segments[0].windows[17].adr5.lamda +2481,1082,main.pedersen.segments[0].windows[17].adr6.in1[0] +2482,1083,main.pedersen.segments[0].windows[17].adr6.in1[1] +2483,1091,main.pedersen.segments[0].windows[17].adr6.in2[0] +2484,1097,main.pedersen.segments[0].windows[17].adr6.in2[1] +2485,1092,main.pedersen.segments[0].windows[17].adr6.out[0] +2486,1098,main.pedersen.segments[0].windows[17].adr6.out[1] +2487,1119,main.pedersen.segments[0].windows[17].adr6.lamda +2488,1082,main.pedersen.segments[0].windows[17].adr7.in1[0] +2489,1083,main.pedersen.segments[0].windows[17].adr7.in1[1] +2490,1092,main.pedersen.segments[0].windows[17].adr7.in2[0] +2491,1098,main.pedersen.segments[0].windows[17].adr7.in2[1] +2492,1093,main.pedersen.segments[0].windows[17].adr7.out[0] +2493,1099,main.pedersen.segments[0].windows[17].adr7.out[1] +2494,1120,main.pedersen.segments[0].windows[17].adr7.lamda +2495,1082,main.pedersen.segments[0].windows[17].adr8.in1[0] +2496,1083,main.pedersen.segments[0].windows[17].adr8.in1[1] +2497,1093,main.pedersen.segments[0].windows[17].adr8.in2[0] +2498,1099,main.pedersen.segments[0].windows[17].adr8.in2[1] +2499,1086,main.pedersen.segments[0].windows[17].adr8.out[0] +2500,1087,main.pedersen.segments[0].windows[17].adr8.out[1] +2501,1121,main.pedersen.segments[0].windows[17].adr8.lamda +2521,75,main.pedersen.segments[0].windows[18].in[0] +2522,76,main.pedersen.segments[0].windows[18].in[1] +2523,77,main.pedersen.segments[0].windows[18].in[2] +2524,78,main.pedersen.segments[0].windows[18].in[3] +2525,1131,main.pedersen.segments[0].windows[18].base[0] +2526,1132,main.pedersen.segments[0].windows[18].base[1] +2527,1133,main.pedersen.segments[0].windows[18].out[0] +2528,1134,main.pedersen.segments[0].windows[18].out[1] +2529,1135,main.pedersen.segments[0].windows[18].out8[0] +2530,1136,main.pedersen.segments[0].windows[18].out8[1] +2531,1131,main.pedersen.segments[0].windows[18].mux.c[0][0] +2532,1137,main.pedersen.segments[0].windows[18].mux.c[0][1] +2533,1138,main.pedersen.segments[0].windows[18].mux.c[0][2] +2534,1139,main.pedersen.segments[0].windows[18].mux.c[0][3] +2535,1140,main.pedersen.segments[0].windows[18].mux.c[0][4] +2536,1141,main.pedersen.segments[0].windows[18].mux.c[0][5] +2537,1142,main.pedersen.segments[0].windows[18].mux.c[0][6] +2538,1135,main.pedersen.segments[0].windows[18].mux.c[0][7] +2539,1132,main.pedersen.segments[0].windows[18].mux.c[1][0] +2540,1143,main.pedersen.segments[0].windows[18].mux.c[1][1] +2541,1144,main.pedersen.segments[0].windows[18].mux.c[1][2] +2542,1145,main.pedersen.segments[0].windows[18].mux.c[1][3] +2543,1146,main.pedersen.segments[0].windows[18].mux.c[1][4] +2544,1147,main.pedersen.segments[0].windows[18].mux.c[1][5] +2545,1148,main.pedersen.segments[0].windows[18].mux.c[1][6] +2546,1136,main.pedersen.segments[0].windows[18].mux.c[1][7] +2547,75,main.pedersen.segments[0].windows[18].mux.s[0] +2548,76,main.pedersen.segments[0].windows[18].mux.s[1] +2549,77,main.pedersen.segments[0].windows[18].mux.s[2] +2550,1133,main.pedersen.segments[0].windows[18].mux.out[0] +2551,1149,main.pedersen.segments[0].windows[18].mux.out[1] +2552,1150,main.pedersen.segments[0].windows[18].mux.a210[0] +2553,1151,main.pedersen.segments[0].windows[18].mux.a210[1] +2554,1152,main.pedersen.segments[0].windows[18].mux.a21[0] +2555,1153,main.pedersen.segments[0].windows[18].mux.a21[1] +2556,1154,main.pedersen.segments[0].windows[18].mux.a20[0] +2557,1155,main.pedersen.segments[0].windows[18].mux.a20[1] +2558,3419,main.pedersen.segments[0].windows[18].mux.a2[0] +2559,3420,main.pedersen.segments[0].windows[18].mux.a2[1] +2560,1156,main.pedersen.segments[0].windows[18].mux.a10[0] +2561,1157,main.pedersen.segments[0].windows[18].mux.a10[1] +2562,1158,main.pedersen.segments[0].windows[18].mux.a1[0] +2563,1159,main.pedersen.segments[0].windows[18].mux.a1[1] +2564,1160,main.pedersen.segments[0].windows[18].mux.a0[0] +2565,1161,main.pedersen.segments[0].windows[18].mux.a0[1] +2566,1131,main.pedersen.segments[0].windows[18].mux.a[0] +2567,1132,main.pedersen.segments[0].windows[18].mux.a[1] +2568,1162,main.pedersen.segments[0].windows[18].mux.s10 +2569,1131,main.pedersen.segments[0].windows[18].dbl2.in[0] +2570,1132,main.pedersen.segments[0].windows[18].dbl2.in[1] +2571,1137,main.pedersen.segments[0].windows[18].dbl2.out[0] +2572,1143,main.pedersen.segments[0].windows[18].dbl2.out[1] +2573,1163,main.pedersen.segments[0].windows[18].dbl2.lamda +2574,1164,main.pedersen.segments[0].windows[18].dbl2.x1_2 +2575,1131,main.pedersen.segments[0].windows[18].adr3.in1[0] +2576,1132,main.pedersen.segments[0].windows[18].adr3.in1[1] +2577,1137,main.pedersen.segments[0].windows[18].adr3.in2[0] +2578,1143,main.pedersen.segments[0].windows[18].adr3.in2[1] +2579,1138,main.pedersen.segments[0].windows[18].adr3.out[0] +2580,1144,main.pedersen.segments[0].windows[18].adr3.out[1] +2581,1165,main.pedersen.segments[0].windows[18].adr3.lamda +2582,1131,main.pedersen.segments[0].windows[18].adr4.in1[0] +2583,1132,main.pedersen.segments[0].windows[18].adr4.in1[1] +2584,1138,main.pedersen.segments[0].windows[18].adr4.in2[0] +2585,1144,main.pedersen.segments[0].windows[18].adr4.in2[1] +2586,1139,main.pedersen.segments[0].windows[18].adr4.out[0] +2587,1145,main.pedersen.segments[0].windows[18].adr4.out[1] +2588,1166,main.pedersen.segments[0].windows[18].adr4.lamda +2589,1131,main.pedersen.segments[0].windows[18].adr5.in1[0] +2590,1132,main.pedersen.segments[0].windows[18].adr5.in1[1] +2591,1139,main.pedersen.segments[0].windows[18].adr5.in2[0] +2592,1145,main.pedersen.segments[0].windows[18].adr5.in2[1] +2593,1140,main.pedersen.segments[0].windows[18].adr5.out[0] +2594,1146,main.pedersen.segments[0].windows[18].adr5.out[1] +2595,1167,main.pedersen.segments[0].windows[18].adr5.lamda +2596,1131,main.pedersen.segments[0].windows[18].adr6.in1[0] +2597,1132,main.pedersen.segments[0].windows[18].adr6.in1[1] +2598,1140,main.pedersen.segments[0].windows[18].adr6.in2[0] +2599,1146,main.pedersen.segments[0].windows[18].adr6.in2[1] +2600,1141,main.pedersen.segments[0].windows[18].adr6.out[0] +2601,1147,main.pedersen.segments[0].windows[18].adr6.out[1] +2602,1168,main.pedersen.segments[0].windows[18].adr6.lamda +2603,1131,main.pedersen.segments[0].windows[18].adr7.in1[0] +2604,1132,main.pedersen.segments[0].windows[18].adr7.in1[1] +2605,1141,main.pedersen.segments[0].windows[18].adr7.in2[0] +2606,1147,main.pedersen.segments[0].windows[18].adr7.in2[1] +2607,1142,main.pedersen.segments[0].windows[18].adr7.out[0] +2608,1148,main.pedersen.segments[0].windows[18].adr7.out[1] +2609,1169,main.pedersen.segments[0].windows[18].adr7.lamda +2610,1131,main.pedersen.segments[0].windows[18].adr8.in1[0] +2611,1132,main.pedersen.segments[0].windows[18].adr8.in1[1] +2612,1142,main.pedersen.segments[0].windows[18].adr8.in2[0] +2613,1148,main.pedersen.segments[0].windows[18].adr8.in2[1] +2614,1135,main.pedersen.segments[0].windows[18].adr8.out[0] +2615,1136,main.pedersen.segments[0].windows[18].adr8.out[1] +2616,1170,main.pedersen.segments[0].windows[18].adr8.lamda +2636,79,main.pedersen.segments[0].windows[19].in[0] +2637,80,main.pedersen.segments[0].windows[19].in[1] +2638,81,main.pedersen.segments[0].windows[19].in[2] +2639,82,main.pedersen.segments[0].windows[19].in[3] +2640,1180,main.pedersen.segments[0].windows[19].base[0] +2641,1181,main.pedersen.segments[0].windows[19].base[1] +2642,1182,main.pedersen.segments[0].windows[19].out[0] +2643,1183,main.pedersen.segments[0].windows[19].out[1] +2644,1184,main.pedersen.segments[0].windows[19].out8[0] +2645,1185,main.pedersen.segments[0].windows[19].out8[1] +2646,1180,main.pedersen.segments[0].windows[19].mux.c[0][0] +2647,1186,main.pedersen.segments[0].windows[19].mux.c[0][1] +2648,1187,main.pedersen.segments[0].windows[19].mux.c[0][2] +2649,1188,main.pedersen.segments[0].windows[19].mux.c[0][3] +2650,1189,main.pedersen.segments[0].windows[19].mux.c[0][4] +2651,1190,main.pedersen.segments[0].windows[19].mux.c[0][5] +2652,1191,main.pedersen.segments[0].windows[19].mux.c[0][6] +2653,1184,main.pedersen.segments[0].windows[19].mux.c[0][7] +2654,1181,main.pedersen.segments[0].windows[19].mux.c[1][0] +2655,1192,main.pedersen.segments[0].windows[19].mux.c[1][1] +2656,1193,main.pedersen.segments[0].windows[19].mux.c[1][2] +2657,1194,main.pedersen.segments[0].windows[19].mux.c[1][3] +2658,1195,main.pedersen.segments[0].windows[19].mux.c[1][4] +2659,1196,main.pedersen.segments[0].windows[19].mux.c[1][5] +2660,1197,main.pedersen.segments[0].windows[19].mux.c[1][6] +2661,1185,main.pedersen.segments[0].windows[19].mux.c[1][7] +2662,79,main.pedersen.segments[0].windows[19].mux.s[0] +2663,80,main.pedersen.segments[0].windows[19].mux.s[1] +2664,81,main.pedersen.segments[0].windows[19].mux.s[2] +2665,1182,main.pedersen.segments[0].windows[19].mux.out[0] +2666,1198,main.pedersen.segments[0].windows[19].mux.out[1] +2667,1199,main.pedersen.segments[0].windows[19].mux.a210[0] +2668,1200,main.pedersen.segments[0].windows[19].mux.a210[1] +2669,1201,main.pedersen.segments[0].windows[19].mux.a21[0] +2670,1202,main.pedersen.segments[0].windows[19].mux.a21[1] +2671,1203,main.pedersen.segments[0].windows[19].mux.a20[0] +2672,1204,main.pedersen.segments[0].windows[19].mux.a20[1] +2673,3421,main.pedersen.segments[0].windows[19].mux.a2[0] +2674,3422,main.pedersen.segments[0].windows[19].mux.a2[1] +2675,1205,main.pedersen.segments[0].windows[19].mux.a10[0] +2676,1206,main.pedersen.segments[0].windows[19].mux.a10[1] +2677,1207,main.pedersen.segments[0].windows[19].mux.a1[0] +2678,1208,main.pedersen.segments[0].windows[19].mux.a1[1] +2679,1209,main.pedersen.segments[0].windows[19].mux.a0[0] +2680,1210,main.pedersen.segments[0].windows[19].mux.a0[1] +2681,1180,main.pedersen.segments[0].windows[19].mux.a[0] +2682,1181,main.pedersen.segments[0].windows[19].mux.a[1] +2683,1211,main.pedersen.segments[0].windows[19].mux.s10 +2684,1180,main.pedersen.segments[0].windows[19].dbl2.in[0] +2685,1181,main.pedersen.segments[0].windows[19].dbl2.in[1] +2686,1186,main.pedersen.segments[0].windows[19].dbl2.out[0] +2687,1192,main.pedersen.segments[0].windows[19].dbl2.out[1] +2688,1212,main.pedersen.segments[0].windows[19].dbl2.lamda +2689,1213,main.pedersen.segments[0].windows[19].dbl2.x1_2 +2690,1180,main.pedersen.segments[0].windows[19].adr3.in1[0] +2691,1181,main.pedersen.segments[0].windows[19].adr3.in1[1] +2692,1186,main.pedersen.segments[0].windows[19].adr3.in2[0] +2693,1192,main.pedersen.segments[0].windows[19].adr3.in2[1] +2694,1187,main.pedersen.segments[0].windows[19].adr3.out[0] +2695,1193,main.pedersen.segments[0].windows[19].adr3.out[1] +2696,1214,main.pedersen.segments[0].windows[19].adr3.lamda +2697,1180,main.pedersen.segments[0].windows[19].adr4.in1[0] +2698,1181,main.pedersen.segments[0].windows[19].adr4.in1[1] +2699,1187,main.pedersen.segments[0].windows[19].adr4.in2[0] +2700,1193,main.pedersen.segments[0].windows[19].adr4.in2[1] +2701,1188,main.pedersen.segments[0].windows[19].adr4.out[0] +2702,1194,main.pedersen.segments[0].windows[19].adr4.out[1] +2703,1215,main.pedersen.segments[0].windows[19].adr4.lamda +2704,1180,main.pedersen.segments[0].windows[19].adr5.in1[0] +2705,1181,main.pedersen.segments[0].windows[19].adr5.in1[1] +2706,1188,main.pedersen.segments[0].windows[19].adr5.in2[0] +2707,1194,main.pedersen.segments[0].windows[19].adr5.in2[1] +2708,1189,main.pedersen.segments[0].windows[19].adr5.out[0] +2709,1195,main.pedersen.segments[0].windows[19].adr5.out[1] +2710,1216,main.pedersen.segments[0].windows[19].adr5.lamda +2711,1180,main.pedersen.segments[0].windows[19].adr6.in1[0] +2712,1181,main.pedersen.segments[0].windows[19].adr6.in1[1] +2713,1189,main.pedersen.segments[0].windows[19].adr6.in2[0] +2714,1195,main.pedersen.segments[0].windows[19].adr6.in2[1] +2715,1190,main.pedersen.segments[0].windows[19].adr6.out[0] +2716,1196,main.pedersen.segments[0].windows[19].adr6.out[1] +2717,1217,main.pedersen.segments[0].windows[19].adr6.lamda +2718,1180,main.pedersen.segments[0].windows[19].adr7.in1[0] +2719,1181,main.pedersen.segments[0].windows[19].adr7.in1[1] +2720,1190,main.pedersen.segments[0].windows[19].adr7.in2[0] +2721,1196,main.pedersen.segments[0].windows[19].adr7.in2[1] +2722,1191,main.pedersen.segments[0].windows[19].adr7.out[0] +2723,1197,main.pedersen.segments[0].windows[19].adr7.out[1] +2724,1218,main.pedersen.segments[0].windows[19].adr7.lamda +2725,1180,main.pedersen.segments[0].windows[19].adr8.in1[0] +2726,1181,main.pedersen.segments[0].windows[19].adr8.in1[1] +2727,1191,main.pedersen.segments[0].windows[19].adr8.in2[0] +2728,1197,main.pedersen.segments[0].windows[19].adr8.in2[1] +2729,1184,main.pedersen.segments[0].windows[19].adr8.out[0] +2730,1185,main.pedersen.segments[0].windows[19].adr8.out[1] +2731,1219,main.pedersen.segments[0].windows[19].adr8.lamda +2751,83,main.pedersen.segments[0].windows[20].in[0] +2752,84,main.pedersen.segments[0].windows[20].in[1] +2753,85,main.pedersen.segments[0].windows[20].in[2] +2754,86,main.pedersen.segments[0].windows[20].in[3] +2755,1229,main.pedersen.segments[0].windows[20].base[0] +2756,1230,main.pedersen.segments[0].windows[20].base[1] +2757,1231,main.pedersen.segments[0].windows[20].out[0] +2758,1232,main.pedersen.segments[0].windows[20].out[1] +2759,1233,main.pedersen.segments[0].windows[20].out8[0] +2760,1234,main.pedersen.segments[0].windows[20].out8[1] +2761,1229,main.pedersen.segments[0].windows[20].mux.c[0][0] +2762,1235,main.pedersen.segments[0].windows[20].mux.c[0][1] +2763,1236,main.pedersen.segments[0].windows[20].mux.c[0][2] +2764,1237,main.pedersen.segments[0].windows[20].mux.c[0][3] +2765,1238,main.pedersen.segments[0].windows[20].mux.c[0][4] +2766,1239,main.pedersen.segments[0].windows[20].mux.c[0][5] +2767,1240,main.pedersen.segments[0].windows[20].mux.c[0][6] +2768,1233,main.pedersen.segments[0].windows[20].mux.c[0][7] +2769,1230,main.pedersen.segments[0].windows[20].mux.c[1][0] +2770,1241,main.pedersen.segments[0].windows[20].mux.c[1][1] +2771,1242,main.pedersen.segments[0].windows[20].mux.c[1][2] +2772,1243,main.pedersen.segments[0].windows[20].mux.c[1][3] +2773,1244,main.pedersen.segments[0].windows[20].mux.c[1][4] +2774,1245,main.pedersen.segments[0].windows[20].mux.c[1][5] +2775,1246,main.pedersen.segments[0].windows[20].mux.c[1][6] +2776,1234,main.pedersen.segments[0].windows[20].mux.c[1][7] +2777,83,main.pedersen.segments[0].windows[20].mux.s[0] +2778,84,main.pedersen.segments[0].windows[20].mux.s[1] +2779,85,main.pedersen.segments[0].windows[20].mux.s[2] +2780,1231,main.pedersen.segments[0].windows[20].mux.out[0] +2781,1247,main.pedersen.segments[0].windows[20].mux.out[1] +2782,1248,main.pedersen.segments[0].windows[20].mux.a210[0] +2783,1249,main.pedersen.segments[0].windows[20].mux.a210[1] +2784,1250,main.pedersen.segments[0].windows[20].mux.a21[0] +2785,1251,main.pedersen.segments[0].windows[20].mux.a21[1] +2786,1252,main.pedersen.segments[0].windows[20].mux.a20[0] +2787,1253,main.pedersen.segments[0].windows[20].mux.a20[1] +2788,3423,main.pedersen.segments[0].windows[20].mux.a2[0] +2789,3424,main.pedersen.segments[0].windows[20].mux.a2[1] +2790,1254,main.pedersen.segments[0].windows[20].mux.a10[0] +2791,1255,main.pedersen.segments[0].windows[20].mux.a10[1] +2792,1256,main.pedersen.segments[0].windows[20].mux.a1[0] +2793,1257,main.pedersen.segments[0].windows[20].mux.a1[1] +2794,1258,main.pedersen.segments[0].windows[20].mux.a0[0] +2795,1259,main.pedersen.segments[0].windows[20].mux.a0[1] +2796,1229,main.pedersen.segments[0].windows[20].mux.a[0] +2797,1230,main.pedersen.segments[0].windows[20].mux.a[1] +2798,1260,main.pedersen.segments[0].windows[20].mux.s10 +2799,1229,main.pedersen.segments[0].windows[20].dbl2.in[0] +2800,1230,main.pedersen.segments[0].windows[20].dbl2.in[1] +2801,1235,main.pedersen.segments[0].windows[20].dbl2.out[0] +2802,1241,main.pedersen.segments[0].windows[20].dbl2.out[1] +2803,1261,main.pedersen.segments[0].windows[20].dbl2.lamda +2804,1262,main.pedersen.segments[0].windows[20].dbl2.x1_2 +2805,1229,main.pedersen.segments[0].windows[20].adr3.in1[0] +2806,1230,main.pedersen.segments[0].windows[20].adr3.in1[1] +2807,1235,main.pedersen.segments[0].windows[20].adr3.in2[0] +2808,1241,main.pedersen.segments[0].windows[20].adr3.in2[1] +2809,1236,main.pedersen.segments[0].windows[20].adr3.out[0] +2810,1242,main.pedersen.segments[0].windows[20].adr3.out[1] +2811,1263,main.pedersen.segments[0].windows[20].adr3.lamda +2812,1229,main.pedersen.segments[0].windows[20].adr4.in1[0] +2813,1230,main.pedersen.segments[0].windows[20].adr4.in1[1] +2814,1236,main.pedersen.segments[0].windows[20].adr4.in2[0] +2815,1242,main.pedersen.segments[0].windows[20].adr4.in2[1] +2816,1237,main.pedersen.segments[0].windows[20].adr4.out[0] +2817,1243,main.pedersen.segments[0].windows[20].adr4.out[1] +2818,1264,main.pedersen.segments[0].windows[20].adr4.lamda +2819,1229,main.pedersen.segments[0].windows[20].adr5.in1[0] +2820,1230,main.pedersen.segments[0].windows[20].adr5.in1[1] +2821,1237,main.pedersen.segments[0].windows[20].adr5.in2[0] +2822,1243,main.pedersen.segments[0].windows[20].adr5.in2[1] +2823,1238,main.pedersen.segments[0].windows[20].adr5.out[0] +2824,1244,main.pedersen.segments[0].windows[20].adr5.out[1] +2825,1265,main.pedersen.segments[0].windows[20].adr5.lamda +2826,1229,main.pedersen.segments[0].windows[20].adr6.in1[0] +2827,1230,main.pedersen.segments[0].windows[20].adr6.in1[1] +2828,1238,main.pedersen.segments[0].windows[20].adr6.in2[0] +2829,1244,main.pedersen.segments[0].windows[20].adr6.in2[1] +2830,1239,main.pedersen.segments[0].windows[20].adr6.out[0] +2831,1245,main.pedersen.segments[0].windows[20].adr6.out[1] +2832,1266,main.pedersen.segments[0].windows[20].adr6.lamda +2833,1229,main.pedersen.segments[0].windows[20].adr7.in1[0] +2834,1230,main.pedersen.segments[0].windows[20].adr7.in1[1] +2835,1239,main.pedersen.segments[0].windows[20].adr7.in2[0] +2836,1245,main.pedersen.segments[0].windows[20].adr7.in2[1] +2837,1240,main.pedersen.segments[0].windows[20].adr7.out[0] +2838,1246,main.pedersen.segments[0].windows[20].adr7.out[1] +2839,1267,main.pedersen.segments[0].windows[20].adr7.lamda +2840,1229,main.pedersen.segments[0].windows[20].adr8.in1[0] +2841,1230,main.pedersen.segments[0].windows[20].adr8.in1[1] +2842,1240,main.pedersen.segments[0].windows[20].adr8.in2[0] +2843,1246,main.pedersen.segments[0].windows[20].adr8.in2[1] +2844,1233,main.pedersen.segments[0].windows[20].adr8.out[0] +2845,1234,main.pedersen.segments[0].windows[20].adr8.out[1] +2846,1268,main.pedersen.segments[0].windows[20].adr8.lamda +2866,87,main.pedersen.segments[0].windows[21].in[0] +2867,88,main.pedersen.segments[0].windows[21].in[1] +2868,89,main.pedersen.segments[0].windows[21].in[2] +2869,90,main.pedersen.segments[0].windows[21].in[3] +2870,1278,main.pedersen.segments[0].windows[21].base[0] +2871,1279,main.pedersen.segments[0].windows[21].base[1] +2872,1280,main.pedersen.segments[0].windows[21].out[0] +2873,1281,main.pedersen.segments[0].windows[21].out[1] +2874,1282,main.pedersen.segments[0].windows[21].out8[0] +2875,1283,main.pedersen.segments[0].windows[21].out8[1] +2876,1278,main.pedersen.segments[0].windows[21].mux.c[0][0] +2877,1284,main.pedersen.segments[0].windows[21].mux.c[0][1] +2878,1285,main.pedersen.segments[0].windows[21].mux.c[0][2] +2879,1286,main.pedersen.segments[0].windows[21].mux.c[0][3] +2880,1287,main.pedersen.segments[0].windows[21].mux.c[0][4] +2881,1288,main.pedersen.segments[0].windows[21].mux.c[0][5] +2882,1289,main.pedersen.segments[0].windows[21].mux.c[0][6] +2883,1282,main.pedersen.segments[0].windows[21].mux.c[0][7] +2884,1279,main.pedersen.segments[0].windows[21].mux.c[1][0] +2885,1290,main.pedersen.segments[0].windows[21].mux.c[1][1] +2886,1291,main.pedersen.segments[0].windows[21].mux.c[1][2] +2887,1292,main.pedersen.segments[0].windows[21].mux.c[1][3] +2888,1293,main.pedersen.segments[0].windows[21].mux.c[1][4] +2889,1294,main.pedersen.segments[0].windows[21].mux.c[1][5] +2890,1295,main.pedersen.segments[0].windows[21].mux.c[1][6] +2891,1283,main.pedersen.segments[0].windows[21].mux.c[1][7] +2892,87,main.pedersen.segments[0].windows[21].mux.s[0] +2893,88,main.pedersen.segments[0].windows[21].mux.s[1] +2894,89,main.pedersen.segments[0].windows[21].mux.s[2] +2895,1280,main.pedersen.segments[0].windows[21].mux.out[0] +2896,1296,main.pedersen.segments[0].windows[21].mux.out[1] +2897,1297,main.pedersen.segments[0].windows[21].mux.a210[0] +2898,1298,main.pedersen.segments[0].windows[21].mux.a210[1] +2899,1299,main.pedersen.segments[0].windows[21].mux.a21[0] +2900,1300,main.pedersen.segments[0].windows[21].mux.a21[1] +2901,1301,main.pedersen.segments[0].windows[21].mux.a20[0] +2902,1302,main.pedersen.segments[0].windows[21].mux.a20[1] +2903,3425,main.pedersen.segments[0].windows[21].mux.a2[0] +2904,3426,main.pedersen.segments[0].windows[21].mux.a2[1] +2905,1303,main.pedersen.segments[0].windows[21].mux.a10[0] +2906,1304,main.pedersen.segments[0].windows[21].mux.a10[1] +2907,1305,main.pedersen.segments[0].windows[21].mux.a1[0] +2908,1306,main.pedersen.segments[0].windows[21].mux.a1[1] +2909,1307,main.pedersen.segments[0].windows[21].mux.a0[0] +2910,1308,main.pedersen.segments[0].windows[21].mux.a0[1] +2911,1278,main.pedersen.segments[0].windows[21].mux.a[0] +2912,1279,main.pedersen.segments[0].windows[21].mux.a[1] +2913,1309,main.pedersen.segments[0].windows[21].mux.s10 +2914,1278,main.pedersen.segments[0].windows[21].dbl2.in[0] +2915,1279,main.pedersen.segments[0].windows[21].dbl2.in[1] +2916,1284,main.pedersen.segments[0].windows[21].dbl2.out[0] +2917,1290,main.pedersen.segments[0].windows[21].dbl2.out[1] +2918,1310,main.pedersen.segments[0].windows[21].dbl2.lamda +2919,1311,main.pedersen.segments[0].windows[21].dbl2.x1_2 +2920,1278,main.pedersen.segments[0].windows[21].adr3.in1[0] +2921,1279,main.pedersen.segments[0].windows[21].adr3.in1[1] +2922,1284,main.pedersen.segments[0].windows[21].adr3.in2[0] +2923,1290,main.pedersen.segments[0].windows[21].adr3.in2[1] +2924,1285,main.pedersen.segments[0].windows[21].adr3.out[0] +2925,1291,main.pedersen.segments[0].windows[21].adr3.out[1] +2926,1312,main.pedersen.segments[0].windows[21].adr3.lamda +2927,1278,main.pedersen.segments[0].windows[21].adr4.in1[0] +2928,1279,main.pedersen.segments[0].windows[21].adr4.in1[1] +2929,1285,main.pedersen.segments[0].windows[21].adr4.in2[0] +2930,1291,main.pedersen.segments[0].windows[21].adr4.in2[1] +2931,1286,main.pedersen.segments[0].windows[21].adr4.out[0] +2932,1292,main.pedersen.segments[0].windows[21].adr4.out[1] +2933,1313,main.pedersen.segments[0].windows[21].adr4.lamda +2934,1278,main.pedersen.segments[0].windows[21].adr5.in1[0] +2935,1279,main.pedersen.segments[0].windows[21].adr5.in1[1] +2936,1286,main.pedersen.segments[0].windows[21].adr5.in2[0] +2937,1292,main.pedersen.segments[0].windows[21].adr5.in2[1] +2938,1287,main.pedersen.segments[0].windows[21].adr5.out[0] +2939,1293,main.pedersen.segments[0].windows[21].adr5.out[1] +2940,1314,main.pedersen.segments[0].windows[21].adr5.lamda +2941,1278,main.pedersen.segments[0].windows[21].adr6.in1[0] +2942,1279,main.pedersen.segments[0].windows[21].adr6.in1[1] +2943,1287,main.pedersen.segments[0].windows[21].adr6.in2[0] +2944,1293,main.pedersen.segments[0].windows[21].adr6.in2[1] +2945,1288,main.pedersen.segments[0].windows[21].adr6.out[0] +2946,1294,main.pedersen.segments[0].windows[21].adr6.out[1] +2947,1315,main.pedersen.segments[0].windows[21].adr6.lamda +2948,1278,main.pedersen.segments[0].windows[21].adr7.in1[0] +2949,1279,main.pedersen.segments[0].windows[21].adr7.in1[1] +2950,1288,main.pedersen.segments[0].windows[21].adr7.in2[0] +2951,1294,main.pedersen.segments[0].windows[21].adr7.in2[1] +2952,1289,main.pedersen.segments[0].windows[21].adr7.out[0] +2953,1295,main.pedersen.segments[0].windows[21].adr7.out[1] +2954,1316,main.pedersen.segments[0].windows[21].adr7.lamda +2955,1278,main.pedersen.segments[0].windows[21].adr8.in1[0] +2956,1279,main.pedersen.segments[0].windows[21].adr8.in1[1] +2957,1289,main.pedersen.segments[0].windows[21].adr8.in2[0] +2958,1295,main.pedersen.segments[0].windows[21].adr8.in2[1] +2959,1282,main.pedersen.segments[0].windows[21].adr8.out[0] +2960,1283,main.pedersen.segments[0].windows[21].adr8.out[1] +2961,1317,main.pedersen.segments[0].windows[21].adr8.lamda +2981,91,main.pedersen.segments[0].windows[22].in[0] +2982,92,main.pedersen.segments[0].windows[22].in[1] +2983,93,main.pedersen.segments[0].windows[22].in[2] +2984,94,main.pedersen.segments[0].windows[22].in[3] +2985,1327,main.pedersen.segments[0].windows[22].base[0] +2986,1328,main.pedersen.segments[0].windows[22].base[1] +2987,1329,main.pedersen.segments[0].windows[22].out[0] +2988,1330,main.pedersen.segments[0].windows[22].out[1] +2989,1331,main.pedersen.segments[0].windows[22].out8[0] +2990,1332,main.pedersen.segments[0].windows[22].out8[1] +2991,1327,main.pedersen.segments[0].windows[22].mux.c[0][0] +2992,1333,main.pedersen.segments[0].windows[22].mux.c[0][1] +2993,1334,main.pedersen.segments[0].windows[22].mux.c[0][2] +2994,1335,main.pedersen.segments[0].windows[22].mux.c[0][3] +2995,1336,main.pedersen.segments[0].windows[22].mux.c[0][4] +2996,1337,main.pedersen.segments[0].windows[22].mux.c[0][5] +2997,1338,main.pedersen.segments[0].windows[22].mux.c[0][6] +2998,1331,main.pedersen.segments[0].windows[22].mux.c[0][7] +2999,1328,main.pedersen.segments[0].windows[22].mux.c[1][0] +3000,1339,main.pedersen.segments[0].windows[22].mux.c[1][1] +3001,1340,main.pedersen.segments[0].windows[22].mux.c[1][2] +3002,1341,main.pedersen.segments[0].windows[22].mux.c[1][3] +3003,1342,main.pedersen.segments[0].windows[22].mux.c[1][4] +3004,1343,main.pedersen.segments[0].windows[22].mux.c[1][5] +3005,1344,main.pedersen.segments[0].windows[22].mux.c[1][6] +3006,1332,main.pedersen.segments[0].windows[22].mux.c[1][7] +3007,91,main.pedersen.segments[0].windows[22].mux.s[0] +3008,92,main.pedersen.segments[0].windows[22].mux.s[1] +3009,93,main.pedersen.segments[0].windows[22].mux.s[2] +3010,1329,main.pedersen.segments[0].windows[22].mux.out[0] +3011,1345,main.pedersen.segments[0].windows[22].mux.out[1] +3012,1346,main.pedersen.segments[0].windows[22].mux.a210[0] +3013,1347,main.pedersen.segments[0].windows[22].mux.a210[1] +3014,1348,main.pedersen.segments[0].windows[22].mux.a21[0] +3015,1349,main.pedersen.segments[0].windows[22].mux.a21[1] +3016,1350,main.pedersen.segments[0].windows[22].mux.a20[0] +3017,1351,main.pedersen.segments[0].windows[22].mux.a20[1] +3018,3427,main.pedersen.segments[0].windows[22].mux.a2[0] +3019,3428,main.pedersen.segments[0].windows[22].mux.a2[1] +3020,1352,main.pedersen.segments[0].windows[22].mux.a10[0] +3021,1353,main.pedersen.segments[0].windows[22].mux.a10[1] +3022,1354,main.pedersen.segments[0].windows[22].mux.a1[0] +3023,1355,main.pedersen.segments[0].windows[22].mux.a1[1] +3024,1356,main.pedersen.segments[0].windows[22].mux.a0[0] +3025,1357,main.pedersen.segments[0].windows[22].mux.a0[1] +3026,1327,main.pedersen.segments[0].windows[22].mux.a[0] +3027,1328,main.pedersen.segments[0].windows[22].mux.a[1] +3028,1358,main.pedersen.segments[0].windows[22].mux.s10 +3029,1327,main.pedersen.segments[0].windows[22].dbl2.in[0] +3030,1328,main.pedersen.segments[0].windows[22].dbl2.in[1] +3031,1333,main.pedersen.segments[0].windows[22].dbl2.out[0] +3032,1339,main.pedersen.segments[0].windows[22].dbl2.out[1] +3033,1359,main.pedersen.segments[0].windows[22].dbl2.lamda +3034,1360,main.pedersen.segments[0].windows[22].dbl2.x1_2 +3035,1327,main.pedersen.segments[0].windows[22].adr3.in1[0] +3036,1328,main.pedersen.segments[0].windows[22].adr3.in1[1] +3037,1333,main.pedersen.segments[0].windows[22].adr3.in2[0] +3038,1339,main.pedersen.segments[0].windows[22].adr3.in2[1] +3039,1334,main.pedersen.segments[0].windows[22].adr3.out[0] +3040,1340,main.pedersen.segments[0].windows[22].adr3.out[1] +3041,1361,main.pedersen.segments[0].windows[22].adr3.lamda +3042,1327,main.pedersen.segments[0].windows[22].adr4.in1[0] +3043,1328,main.pedersen.segments[0].windows[22].adr4.in1[1] +3044,1334,main.pedersen.segments[0].windows[22].adr4.in2[0] +3045,1340,main.pedersen.segments[0].windows[22].adr4.in2[1] +3046,1335,main.pedersen.segments[0].windows[22].adr4.out[0] +3047,1341,main.pedersen.segments[0].windows[22].adr4.out[1] +3048,1362,main.pedersen.segments[0].windows[22].adr4.lamda +3049,1327,main.pedersen.segments[0].windows[22].adr5.in1[0] +3050,1328,main.pedersen.segments[0].windows[22].adr5.in1[1] +3051,1335,main.pedersen.segments[0].windows[22].adr5.in2[0] +3052,1341,main.pedersen.segments[0].windows[22].adr5.in2[1] +3053,1336,main.pedersen.segments[0].windows[22].adr5.out[0] +3054,1342,main.pedersen.segments[0].windows[22].adr5.out[1] +3055,1363,main.pedersen.segments[0].windows[22].adr5.lamda +3056,1327,main.pedersen.segments[0].windows[22].adr6.in1[0] +3057,1328,main.pedersen.segments[0].windows[22].adr6.in1[1] +3058,1336,main.pedersen.segments[0].windows[22].adr6.in2[0] +3059,1342,main.pedersen.segments[0].windows[22].adr6.in2[1] +3060,1337,main.pedersen.segments[0].windows[22].adr6.out[0] +3061,1343,main.pedersen.segments[0].windows[22].adr6.out[1] +3062,1364,main.pedersen.segments[0].windows[22].adr6.lamda +3063,1327,main.pedersen.segments[0].windows[22].adr7.in1[0] +3064,1328,main.pedersen.segments[0].windows[22].adr7.in1[1] +3065,1337,main.pedersen.segments[0].windows[22].adr7.in2[0] +3066,1343,main.pedersen.segments[0].windows[22].adr7.in2[1] +3067,1338,main.pedersen.segments[0].windows[22].adr7.out[0] +3068,1344,main.pedersen.segments[0].windows[22].adr7.out[1] +3069,1365,main.pedersen.segments[0].windows[22].adr7.lamda +3070,1327,main.pedersen.segments[0].windows[22].adr8.in1[0] +3071,1328,main.pedersen.segments[0].windows[22].adr8.in1[1] +3072,1338,main.pedersen.segments[0].windows[22].adr8.in2[0] +3073,1344,main.pedersen.segments[0].windows[22].adr8.in2[1] +3074,1331,main.pedersen.segments[0].windows[22].adr8.out[0] +3075,1332,main.pedersen.segments[0].windows[22].adr8.out[1] +3076,1366,main.pedersen.segments[0].windows[22].adr8.lamda +3096,95,main.pedersen.segments[0].windows[23].in[0] +3097,96,main.pedersen.segments[0].windows[23].in[1] +3098,97,main.pedersen.segments[0].windows[23].in[2] +3099,98,main.pedersen.segments[0].windows[23].in[3] +3100,1376,main.pedersen.segments[0].windows[23].base[0] +3101,1377,main.pedersen.segments[0].windows[23].base[1] +3102,1378,main.pedersen.segments[0].windows[23].out[0] +3103,1379,main.pedersen.segments[0].windows[23].out[1] +3104,1380,main.pedersen.segments[0].windows[23].out8[0] +3105,1381,main.pedersen.segments[0].windows[23].out8[1] +3106,1376,main.pedersen.segments[0].windows[23].mux.c[0][0] +3107,1382,main.pedersen.segments[0].windows[23].mux.c[0][1] +3108,1383,main.pedersen.segments[0].windows[23].mux.c[0][2] +3109,1384,main.pedersen.segments[0].windows[23].mux.c[0][3] +3110,1385,main.pedersen.segments[0].windows[23].mux.c[0][4] +3111,1386,main.pedersen.segments[0].windows[23].mux.c[0][5] +3112,1387,main.pedersen.segments[0].windows[23].mux.c[0][6] +3113,1380,main.pedersen.segments[0].windows[23].mux.c[0][7] +3114,1377,main.pedersen.segments[0].windows[23].mux.c[1][0] +3115,1388,main.pedersen.segments[0].windows[23].mux.c[1][1] +3116,1389,main.pedersen.segments[0].windows[23].mux.c[1][2] +3117,1390,main.pedersen.segments[0].windows[23].mux.c[1][3] +3118,1391,main.pedersen.segments[0].windows[23].mux.c[1][4] +3119,1392,main.pedersen.segments[0].windows[23].mux.c[1][5] +3120,1393,main.pedersen.segments[0].windows[23].mux.c[1][6] +3121,1381,main.pedersen.segments[0].windows[23].mux.c[1][7] +3122,95,main.pedersen.segments[0].windows[23].mux.s[0] +3123,96,main.pedersen.segments[0].windows[23].mux.s[1] +3124,97,main.pedersen.segments[0].windows[23].mux.s[2] +3125,1378,main.pedersen.segments[0].windows[23].mux.out[0] +3126,1394,main.pedersen.segments[0].windows[23].mux.out[1] +3127,1395,main.pedersen.segments[0].windows[23].mux.a210[0] +3128,1396,main.pedersen.segments[0].windows[23].mux.a210[1] +3129,1397,main.pedersen.segments[0].windows[23].mux.a21[0] +3130,1398,main.pedersen.segments[0].windows[23].mux.a21[1] +3131,1399,main.pedersen.segments[0].windows[23].mux.a20[0] +3132,1400,main.pedersen.segments[0].windows[23].mux.a20[1] +3133,3429,main.pedersen.segments[0].windows[23].mux.a2[0] +3134,3430,main.pedersen.segments[0].windows[23].mux.a2[1] +3135,1401,main.pedersen.segments[0].windows[23].mux.a10[0] +3136,1402,main.pedersen.segments[0].windows[23].mux.a10[1] +3137,1403,main.pedersen.segments[0].windows[23].mux.a1[0] +3138,1404,main.pedersen.segments[0].windows[23].mux.a1[1] +3139,1405,main.pedersen.segments[0].windows[23].mux.a0[0] +3140,1406,main.pedersen.segments[0].windows[23].mux.a0[1] +3141,1376,main.pedersen.segments[0].windows[23].mux.a[0] +3142,1377,main.pedersen.segments[0].windows[23].mux.a[1] +3143,1407,main.pedersen.segments[0].windows[23].mux.s10 +3144,1376,main.pedersen.segments[0].windows[23].dbl2.in[0] +3145,1377,main.pedersen.segments[0].windows[23].dbl2.in[1] +3146,1382,main.pedersen.segments[0].windows[23].dbl2.out[0] +3147,1388,main.pedersen.segments[0].windows[23].dbl2.out[1] +3148,1408,main.pedersen.segments[0].windows[23].dbl2.lamda +3149,1409,main.pedersen.segments[0].windows[23].dbl2.x1_2 +3150,1376,main.pedersen.segments[0].windows[23].adr3.in1[0] +3151,1377,main.pedersen.segments[0].windows[23].adr3.in1[1] +3152,1382,main.pedersen.segments[0].windows[23].adr3.in2[0] +3153,1388,main.pedersen.segments[0].windows[23].adr3.in2[1] +3154,1383,main.pedersen.segments[0].windows[23].adr3.out[0] +3155,1389,main.pedersen.segments[0].windows[23].adr3.out[1] +3156,1410,main.pedersen.segments[0].windows[23].adr3.lamda +3157,1376,main.pedersen.segments[0].windows[23].adr4.in1[0] +3158,1377,main.pedersen.segments[0].windows[23].adr4.in1[1] +3159,1383,main.pedersen.segments[0].windows[23].adr4.in2[0] +3160,1389,main.pedersen.segments[0].windows[23].adr4.in2[1] +3161,1384,main.pedersen.segments[0].windows[23].adr4.out[0] +3162,1390,main.pedersen.segments[0].windows[23].adr4.out[1] +3163,1411,main.pedersen.segments[0].windows[23].adr4.lamda +3164,1376,main.pedersen.segments[0].windows[23].adr5.in1[0] +3165,1377,main.pedersen.segments[0].windows[23].adr5.in1[1] +3166,1384,main.pedersen.segments[0].windows[23].adr5.in2[0] +3167,1390,main.pedersen.segments[0].windows[23].adr5.in2[1] +3168,1385,main.pedersen.segments[0].windows[23].adr5.out[0] +3169,1391,main.pedersen.segments[0].windows[23].adr5.out[1] +3170,1412,main.pedersen.segments[0].windows[23].adr5.lamda +3171,1376,main.pedersen.segments[0].windows[23].adr6.in1[0] +3172,1377,main.pedersen.segments[0].windows[23].adr6.in1[1] +3173,1385,main.pedersen.segments[0].windows[23].adr6.in2[0] +3174,1391,main.pedersen.segments[0].windows[23].adr6.in2[1] +3175,1386,main.pedersen.segments[0].windows[23].adr6.out[0] +3176,1392,main.pedersen.segments[0].windows[23].adr6.out[1] +3177,1413,main.pedersen.segments[0].windows[23].adr6.lamda +3178,1376,main.pedersen.segments[0].windows[23].adr7.in1[0] +3179,1377,main.pedersen.segments[0].windows[23].adr7.in1[1] +3180,1386,main.pedersen.segments[0].windows[23].adr7.in2[0] +3181,1392,main.pedersen.segments[0].windows[23].adr7.in2[1] +3182,1387,main.pedersen.segments[0].windows[23].adr7.out[0] +3183,1393,main.pedersen.segments[0].windows[23].adr7.out[1] +3184,1414,main.pedersen.segments[0].windows[23].adr7.lamda +3185,1376,main.pedersen.segments[0].windows[23].adr8.in1[0] +3186,1377,main.pedersen.segments[0].windows[23].adr8.in1[1] +3187,1387,main.pedersen.segments[0].windows[23].adr8.in2[0] +3188,1393,main.pedersen.segments[0].windows[23].adr8.in2[1] +3189,1380,main.pedersen.segments[0].windows[23].adr8.out[0] +3190,1381,main.pedersen.segments[0].windows[23].adr8.out[1] +3191,1415,main.pedersen.segments[0].windows[23].adr8.lamda +3211,99,main.pedersen.segments[0].windows[24].in[0] +3212,100,main.pedersen.segments[0].windows[24].in[1] +3213,101,main.pedersen.segments[0].windows[24].in[2] +3214,102,main.pedersen.segments[0].windows[24].in[3] +3215,1425,main.pedersen.segments[0].windows[24].base[0] +3216,1426,main.pedersen.segments[0].windows[24].base[1] +3217,1427,main.pedersen.segments[0].windows[24].out[0] +3218,1428,main.pedersen.segments[0].windows[24].out[1] +3219,1429,main.pedersen.segments[0].windows[24].out8[0] +3220,1430,main.pedersen.segments[0].windows[24].out8[1] +3221,1425,main.pedersen.segments[0].windows[24].mux.c[0][0] +3222,1431,main.pedersen.segments[0].windows[24].mux.c[0][1] +3223,1432,main.pedersen.segments[0].windows[24].mux.c[0][2] +3224,1433,main.pedersen.segments[0].windows[24].mux.c[0][3] +3225,1434,main.pedersen.segments[0].windows[24].mux.c[0][4] +3226,1435,main.pedersen.segments[0].windows[24].mux.c[0][5] +3227,1436,main.pedersen.segments[0].windows[24].mux.c[0][6] +3228,1429,main.pedersen.segments[0].windows[24].mux.c[0][7] +3229,1426,main.pedersen.segments[0].windows[24].mux.c[1][0] +3230,1437,main.pedersen.segments[0].windows[24].mux.c[1][1] +3231,1438,main.pedersen.segments[0].windows[24].mux.c[1][2] +3232,1439,main.pedersen.segments[0].windows[24].mux.c[1][3] +3233,1440,main.pedersen.segments[0].windows[24].mux.c[1][4] +3234,1441,main.pedersen.segments[0].windows[24].mux.c[1][5] +3235,1442,main.pedersen.segments[0].windows[24].mux.c[1][6] +3236,1430,main.pedersen.segments[0].windows[24].mux.c[1][7] +3237,99,main.pedersen.segments[0].windows[24].mux.s[0] +3238,100,main.pedersen.segments[0].windows[24].mux.s[1] +3239,101,main.pedersen.segments[0].windows[24].mux.s[2] +3240,1427,main.pedersen.segments[0].windows[24].mux.out[0] +3241,1443,main.pedersen.segments[0].windows[24].mux.out[1] +3242,1444,main.pedersen.segments[0].windows[24].mux.a210[0] +3243,1445,main.pedersen.segments[0].windows[24].mux.a210[1] +3244,1446,main.pedersen.segments[0].windows[24].mux.a21[0] +3245,1447,main.pedersen.segments[0].windows[24].mux.a21[1] +3246,1448,main.pedersen.segments[0].windows[24].mux.a20[0] +3247,1449,main.pedersen.segments[0].windows[24].mux.a20[1] +3248,3431,main.pedersen.segments[0].windows[24].mux.a2[0] +3249,3432,main.pedersen.segments[0].windows[24].mux.a2[1] +3250,1450,main.pedersen.segments[0].windows[24].mux.a10[0] +3251,1451,main.pedersen.segments[0].windows[24].mux.a10[1] +3252,1452,main.pedersen.segments[0].windows[24].mux.a1[0] +3253,1453,main.pedersen.segments[0].windows[24].mux.a1[1] +3254,1454,main.pedersen.segments[0].windows[24].mux.a0[0] +3255,1455,main.pedersen.segments[0].windows[24].mux.a0[1] +3256,1425,main.pedersen.segments[0].windows[24].mux.a[0] +3257,1426,main.pedersen.segments[0].windows[24].mux.a[1] +3258,1456,main.pedersen.segments[0].windows[24].mux.s10 +3259,1425,main.pedersen.segments[0].windows[24].dbl2.in[0] +3260,1426,main.pedersen.segments[0].windows[24].dbl2.in[1] +3261,1431,main.pedersen.segments[0].windows[24].dbl2.out[0] +3262,1437,main.pedersen.segments[0].windows[24].dbl2.out[1] +3263,1457,main.pedersen.segments[0].windows[24].dbl2.lamda +3264,1458,main.pedersen.segments[0].windows[24].dbl2.x1_2 +3265,1425,main.pedersen.segments[0].windows[24].adr3.in1[0] +3266,1426,main.pedersen.segments[0].windows[24].adr3.in1[1] +3267,1431,main.pedersen.segments[0].windows[24].adr3.in2[0] +3268,1437,main.pedersen.segments[0].windows[24].adr3.in2[1] +3269,1432,main.pedersen.segments[0].windows[24].adr3.out[0] +3270,1438,main.pedersen.segments[0].windows[24].adr3.out[1] +3271,1459,main.pedersen.segments[0].windows[24].adr3.lamda +3272,1425,main.pedersen.segments[0].windows[24].adr4.in1[0] +3273,1426,main.pedersen.segments[0].windows[24].adr4.in1[1] +3274,1432,main.pedersen.segments[0].windows[24].adr4.in2[0] +3275,1438,main.pedersen.segments[0].windows[24].adr4.in2[1] +3276,1433,main.pedersen.segments[0].windows[24].adr4.out[0] +3277,1439,main.pedersen.segments[0].windows[24].adr4.out[1] +3278,1460,main.pedersen.segments[0].windows[24].adr4.lamda +3279,1425,main.pedersen.segments[0].windows[24].adr5.in1[0] +3280,1426,main.pedersen.segments[0].windows[24].adr5.in1[1] +3281,1433,main.pedersen.segments[0].windows[24].adr5.in2[0] +3282,1439,main.pedersen.segments[0].windows[24].adr5.in2[1] +3283,1434,main.pedersen.segments[0].windows[24].adr5.out[0] +3284,1440,main.pedersen.segments[0].windows[24].adr5.out[1] +3285,1461,main.pedersen.segments[0].windows[24].adr5.lamda +3286,1425,main.pedersen.segments[0].windows[24].adr6.in1[0] +3287,1426,main.pedersen.segments[0].windows[24].adr6.in1[1] +3288,1434,main.pedersen.segments[0].windows[24].adr6.in2[0] +3289,1440,main.pedersen.segments[0].windows[24].adr6.in2[1] +3290,1435,main.pedersen.segments[0].windows[24].adr6.out[0] +3291,1441,main.pedersen.segments[0].windows[24].adr6.out[1] +3292,1462,main.pedersen.segments[0].windows[24].adr6.lamda +3293,1425,main.pedersen.segments[0].windows[24].adr7.in1[0] +3294,1426,main.pedersen.segments[0].windows[24].adr7.in1[1] +3295,1435,main.pedersen.segments[0].windows[24].adr7.in2[0] +3296,1441,main.pedersen.segments[0].windows[24].adr7.in2[1] +3297,1436,main.pedersen.segments[0].windows[24].adr7.out[0] +3298,1442,main.pedersen.segments[0].windows[24].adr7.out[1] +3299,1463,main.pedersen.segments[0].windows[24].adr7.lamda +3300,1425,main.pedersen.segments[0].windows[24].adr8.in1[0] +3301,1426,main.pedersen.segments[0].windows[24].adr8.in1[1] +3302,1436,main.pedersen.segments[0].windows[24].adr8.in2[0] +3303,1442,main.pedersen.segments[0].windows[24].adr8.in2[1] +3304,1429,main.pedersen.segments[0].windows[24].adr8.out[0] +3305,1430,main.pedersen.segments[0].windows[24].adr8.out[1] +3306,1464,main.pedersen.segments[0].windows[24].adr8.lamda +3326,103,main.pedersen.segments[0].windows[25].in[0] +3327,104,main.pedersen.segments[0].windows[25].in[1] +3328,105,main.pedersen.segments[0].windows[25].in[2] +3329,106,main.pedersen.segments[0].windows[25].in[3] +3330,1474,main.pedersen.segments[0].windows[25].base[0] +3331,1475,main.pedersen.segments[0].windows[25].base[1] +3332,1476,main.pedersen.segments[0].windows[25].out[0] +3333,1477,main.pedersen.segments[0].windows[25].out[1] +3334,1478,main.pedersen.segments[0].windows[25].out8[0] +3335,1479,main.pedersen.segments[0].windows[25].out8[1] +3336,1474,main.pedersen.segments[0].windows[25].mux.c[0][0] +3337,1480,main.pedersen.segments[0].windows[25].mux.c[0][1] +3338,1481,main.pedersen.segments[0].windows[25].mux.c[0][2] +3339,1482,main.pedersen.segments[0].windows[25].mux.c[0][3] +3340,1483,main.pedersen.segments[0].windows[25].mux.c[0][4] +3341,1484,main.pedersen.segments[0].windows[25].mux.c[0][5] +3342,1485,main.pedersen.segments[0].windows[25].mux.c[0][6] +3343,1478,main.pedersen.segments[0].windows[25].mux.c[0][7] +3344,1475,main.pedersen.segments[0].windows[25].mux.c[1][0] +3345,1486,main.pedersen.segments[0].windows[25].mux.c[1][1] +3346,1487,main.pedersen.segments[0].windows[25].mux.c[1][2] +3347,1488,main.pedersen.segments[0].windows[25].mux.c[1][3] +3348,1489,main.pedersen.segments[0].windows[25].mux.c[1][4] +3349,1490,main.pedersen.segments[0].windows[25].mux.c[1][5] +3350,1491,main.pedersen.segments[0].windows[25].mux.c[1][6] +3351,1479,main.pedersen.segments[0].windows[25].mux.c[1][7] +3352,103,main.pedersen.segments[0].windows[25].mux.s[0] +3353,104,main.pedersen.segments[0].windows[25].mux.s[1] +3354,105,main.pedersen.segments[0].windows[25].mux.s[2] +3355,1476,main.pedersen.segments[0].windows[25].mux.out[0] +3356,1492,main.pedersen.segments[0].windows[25].mux.out[1] +3357,1493,main.pedersen.segments[0].windows[25].mux.a210[0] +3358,1494,main.pedersen.segments[0].windows[25].mux.a210[1] +3359,1495,main.pedersen.segments[0].windows[25].mux.a21[0] +3360,1496,main.pedersen.segments[0].windows[25].mux.a21[1] +3361,1497,main.pedersen.segments[0].windows[25].mux.a20[0] +3362,1498,main.pedersen.segments[0].windows[25].mux.a20[1] +3363,3433,main.pedersen.segments[0].windows[25].mux.a2[0] +3364,3434,main.pedersen.segments[0].windows[25].mux.a2[1] +3365,1499,main.pedersen.segments[0].windows[25].mux.a10[0] +3366,1500,main.pedersen.segments[0].windows[25].mux.a10[1] +3367,1501,main.pedersen.segments[0].windows[25].mux.a1[0] +3368,1502,main.pedersen.segments[0].windows[25].mux.a1[1] +3369,1503,main.pedersen.segments[0].windows[25].mux.a0[0] +3370,1504,main.pedersen.segments[0].windows[25].mux.a0[1] +3371,1474,main.pedersen.segments[0].windows[25].mux.a[0] +3372,1475,main.pedersen.segments[0].windows[25].mux.a[1] +3373,1505,main.pedersen.segments[0].windows[25].mux.s10 +3374,1474,main.pedersen.segments[0].windows[25].dbl2.in[0] +3375,1475,main.pedersen.segments[0].windows[25].dbl2.in[1] +3376,1480,main.pedersen.segments[0].windows[25].dbl2.out[0] +3377,1486,main.pedersen.segments[0].windows[25].dbl2.out[1] +3378,1506,main.pedersen.segments[0].windows[25].dbl2.lamda +3379,1507,main.pedersen.segments[0].windows[25].dbl2.x1_2 +3380,1474,main.pedersen.segments[0].windows[25].adr3.in1[0] +3381,1475,main.pedersen.segments[0].windows[25].adr3.in1[1] +3382,1480,main.pedersen.segments[0].windows[25].adr3.in2[0] +3383,1486,main.pedersen.segments[0].windows[25].adr3.in2[1] +3384,1481,main.pedersen.segments[0].windows[25].adr3.out[0] +3385,1487,main.pedersen.segments[0].windows[25].adr3.out[1] +3386,1508,main.pedersen.segments[0].windows[25].adr3.lamda +3387,1474,main.pedersen.segments[0].windows[25].adr4.in1[0] +3388,1475,main.pedersen.segments[0].windows[25].adr4.in1[1] +3389,1481,main.pedersen.segments[0].windows[25].adr4.in2[0] +3390,1487,main.pedersen.segments[0].windows[25].adr4.in2[1] +3391,1482,main.pedersen.segments[0].windows[25].adr4.out[0] +3392,1488,main.pedersen.segments[0].windows[25].adr4.out[1] +3393,1509,main.pedersen.segments[0].windows[25].adr4.lamda +3394,1474,main.pedersen.segments[0].windows[25].adr5.in1[0] +3395,1475,main.pedersen.segments[0].windows[25].adr5.in1[1] +3396,1482,main.pedersen.segments[0].windows[25].adr5.in2[0] +3397,1488,main.pedersen.segments[0].windows[25].adr5.in2[1] +3398,1483,main.pedersen.segments[0].windows[25].adr5.out[0] +3399,1489,main.pedersen.segments[0].windows[25].adr5.out[1] +3400,1510,main.pedersen.segments[0].windows[25].adr5.lamda +3401,1474,main.pedersen.segments[0].windows[25].adr6.in1[0] +3402,1475,main.pedersen.segments[0].windows[25].adr6.in1[1] +3403,1483,main.pedersen.segments[0].windows[25].adr6.in2[0] +3404,1489,main.pedersen.segments[0].windows[25].adr6.in2[1] +3405,1484,main.pedersen.segments[0].windows[25].adr6.out[0] +3406,1490,main.pedersen.segments[0].windows[25].adr6.out[1] +3407,1511,main.pedersen.segments[0].windows[25].adr6.lamda +3408,1474,main.pedersen.segments[0].windows[25].adr7.in1[0] +3409,1475,main.pedersen.segments[0].windows[25].adr7.in1[1] +3410,1484,main.pedersen.segments[0].windows[25].adr7.in2[0] +3411,1490,main.pedersen.segments[0].windows[25].adr7.in2[1] +3412,1485,main.pedersen.segments[0].windows[25].adr7.out[0] +3413,1491,main.pedersen.segments[0].windows[25].adr7.out[1] +3414,1512,main.pedersen.segments[0].windows[25].adr7.lamda +3415,1474,main.pedersen.segments[0].windows[25].adr8.in1[0] +3416,1475,main.pedersen.segments[0].windows[25].adr8.in1[1] +3417,1485,main.pedersen.segments[0].windows[25].adr8.in2[0] +3418,1491,main.pedersen.segments[0].windows[25].adr8.in2[1] +3419,1478,main.pedersen.segments[0].windows[25].adr8.out[0] +3420,1479,main.pedersen.segments[0].windows[25].adr8.out[1] +3421,1513,main.pedersen.segments[0].windows[25].adr8.lamda +3441,107,main.pedersen.segments[0].windows[26].in[0] +3442,108,main.pedersen.segments[0].windows[26].in[1] +3443,109,main.pedersen.segments[0].windows[26].in[2] +3444,110,main.pedersen.segments[0].windows[26].in[3] +3445,1523,main.pedersen.segments[0].windows[26].base[0] +3446,1524,main.pedersen.segments[0].windows[26].base[1] +3447,1525,main.pedersen.segments[0].windows[26].out[0] +3448,1526,main.pedersen.segments[0].windows[26].out[1] +3449,1527,main.pedersen.segments[0].windows[26].out8[0] +3450,1528,main.pedersen.segments[0].windows[26].out8[1] +3451,1523,main.pedersen.segments[0].windows[26].mux.c[0][0] +3452,1529,main.pedersen.segments[0].windows[26].mux.c[0][1] +3453,1530,main.pedersen.segments[0].windows[26].mux.c[0][2] +3454,1531,main.pedersen.segments[0].windows[26].mux.c[0][3] +3455,1532,main.pedersen.segments[0].windows[26].mux.c[0][4] +3456,1533,main.pedersen.segments[0].windows[26].mux.c[0][5] +3457,1534,main.pedersen.segments[0].windows[26].mux.c[0][6] +3458,1527,main.pedersen.segments[0].windows[26].mux.c[0][7] +3459,1524,main.pedersen.segments[0].windows[26].mux.c[1][0] +3460,1535,main.pedersen.segments[0].windows[26].mux.c[1][1] +3461,1536,main.pedersen.segments[0].windows[26].mux.c[1][2] +3462,1537,main.pedersen.segments[0].windows[26].mux.c[1][3] +3463,1538,main.pedersen.segments[0].windows[26].mux.c[1][4] +3464,1539,main.pedersen.segments[0].windows[26].mux.c[1][5] +3465,1540,main.pedersen.segments[0].windows[26].mux.c[1][6] +3466,1528,main.pedersen.segments[0].windows[26].mux.c[1][7] +3467,107,main.pedersen.segments[0].windows[26].mux.s[0] +3468,108,main.pedersen.segments[0].windows[26].mux.s[1] +3469,109,main.pedersen.segments[0].windows[26].mux.s[2] +3470,1525,main.pedersen.segments[0].windows[26].mux.out[0] +3471,1541,main.pedersen.segments[0].windows[26].mux.out[1] +3472,1542,main.pedersen.segments[0].windows[26].mux.a210[0] +3473,1543,main.pedersen.segments[0].windows[26].mux.a210[1] +3474,1544,main.pedersen.segments[0].windows[26].mux.a21[0] +3475,1545,main.pedersen.segments[0].windows[26].mux.a21[1] +3476,1546,main.pedersen.segments[0].windows[26].mux.a20[0] +3477,1547,main.pedersen.segments[0].windows[26].mux.a20[1] +3478,3435,main.pedersen.segments[0].windows[26].mux.a2[0] +3479,3436,main.pedersen.segments[0].windows[26].mux.a2[1] +3480,1548,main.pedersen.segments[0].windows[26].mux.a10[0] +3481,1549,main.pedersen.segments[0].windows[26].mux.a10[1] +3482,1550,main.pedersen.segments[0].windows[26].mux.a1[0] +3483,1551,main.pedersen.segments[0].windows[26].mux.a1[1] +3484,1552,main.pedersen.segments[0].windows[26].mux.a0[0] +3485,1553,main.pedersen.segments[0].windows[26].mux.a0[1] +3486,1523,main.pedersen.segments[0].windows[26].mux.a[0] +3487,1524,main.pedersen.segments[0].windows[26].mux.a[1] +3488,1554,main.pedersen.segments[0].windows[26].mux.s10 +3489,1523,main.pedersen.segments[0].windows[26].dbl2.in[0] +3490,1524,main.pedersen.segments[0].windows[26].dbl2.in[1] +3491,1529,main.pedersen.segments[0].windows[26].dbl2.out[0] +3492,1535,main.pedersen.segments[0].windows[26].dbl2.out[1] +3493,1555,main.pedersen.segments[0].windows[26].dbl2.lamda +3494,1556,main.pedersen.segments[0].windows[26].dbl2.x1_2 +3495,1523,main.pedersen.segments[0].windows[26].adr3.in1[0] +3496,1524,main.pedersen.segments[0].windows[26].adr3.in1[1] +3497,1529,main.pedersen.segments[0].windows[26].adr3.in2[0] +3498,1535,main.pedersen.segments[0].windows[26].adr3.in2[1] +3499,1530,main.pedersen.segments[0].windows[26].adr3.out[0] +3500,1536,main.pedersen.segments[0].windows[26].adr3.out[1] +3501,1557,main.pedersen.segments[0].windows[26].adr3.lamda +3502,1523,main.pedersen.segments[0].windows[26].adr4.in1[0] +3503,1524,main.pedersen.segments[0].windows[26].adr4.in1[1] +3504,1530,main.pedersen.segments[0].windows[26].adr4.in2[0] +3505,1536,main.pedersen.segments[0].windows[26].adr4.in2[1] +3506,1531,main.pedersen.segments[0].windows[26].adr4.out[0] +3507,1537,main.pedersen.segments[0].windows[26].adr4.out[1] +3508,1558,main.pedersen.segments[0].windows[26].adr4.lamda +3509,1523,main.pedersen.segments[0].windows[26].adr5.in1[0] +3510,1524,main.pedersen.segments[0].windows[26].adr5.in1[1] +3511,1531,main.pedersen.segments[0].windows[26].adr5.in2[0] +3512,1537,main.pedersen.segments[0].windows[26].adr5.in2[1] +3513,1532,main.pedersen.segments[0].windows[26].adr5.out[0] +3514,1538,main.pedersen.segments[0].windows[26].adr5.out[1] +3515,1559,main.pedersen.segments[0].windows[26].adr5.lamda +3516,1523,main.pedersen.segments[0].windows[26].adr6.in1[0] +3517,1524,main.pedersen.segments[0].windows[26].adr6.in1[1] +3518,1532,main.pedersen.segments[0].windows[26].adr6.in2[0] +3519,1538,main.pedersen.segments[0].windows[26].adr6.in2[1] +3520,1533,main.pedersen.segments[0].windows[26].adr6.out[0] +3521,1539,main.pedersen.segments[0].windows[26].adr6.out[1] +3522,1560,main.pedersen.segments[0].windows[26].adr6.lamda +3523,1523,main.pedersen.segments[0].windows[26].adr7.in1[0] +3524,1524,main.pedersen.segments[0].windows[26].adr7.in1[1] +3525,1533,main.pedersen.segments[0].windows[26].adr7.in2[0] +3526,1539,main.pedersen.segments[0].windows[26].adr7.in2[1] +3527,1534,main.pedersen.segments[0].windows[26].adr7.out[0] +3528,1540,main.pedersen.segments[0].windows[26].adr7.out[1] +3529,1561,main.pedersen.segments[0].windows[26].adr7.lamda +3530,1523,main.pedersen.segments[0].windows[26].adr8.in1[0] +3531,1524,main.pedersen.segments[0].windows[26].adr8.in1[1] +3532,1534,main.pedersen.segments[0].windows[26].adr8.in2[0] +3533,1540,main.pedersen.segments[0].windows[26].adr8.in2[1] +3534,1527,main.pedersen.segments[0].windows[26].adr8.out[0] +3535,1528,main.pedersen.segments[0].windows[26].adr8.out[1] +3536,1562,main.pedersen.segments[0].windows[26].adr8.lamda +3556,111,main.pedersen.segments[0].windows[27].in[0] +3557,112,main.pedersen.segments[0].windows[27].in[1] +3558,113,main.pedersen.segments[0].windows[27].in[2] +3559,114,main.pedersen.segments[0].windows[27].in[3] +3560,1572,main.pedersen.segments[0].windows[27].base[0] +3561,1573,main.pedersen.segments[0].windows[27].base[1] +3562,1574,main.pedersen.segments[0].windows[27].out[0] +3563,1575,main.pedersen.segments[0].windows[27].out[1] +3564,1576,main.pedersen.segments[0].windows[27].out8[0] +3565,1577,main.pedersen.segments[0].windows[27].out8[1] +3566,1572,main.pedersen.segments[0].windows[27].mux.c[0][0] +3567,1578,main.pedersen.segments[0].windows[27].mux.c[0][1] +3568,1579,main.pedersen.segments[0].windows[27].mux.c[0][2] +3569,1580,main.pedersen.segments[0].windows[27].mux.c[0][3] +3570,1581,main.pedersen.segments[0].windows[27].mux.c[0][4] +3571,1582,main.pedersen.segments[0].windows[27].mux.c[0][5] +3572,1583,main.pedersen.segments[0].windows[27].mux.c[0][6] +3573,1576,main.pedersen.segments[0].windows[27].mux.c[0][7] +3574,1573,main.pedersen.segments[0].windows[27].mux.c[1][0] +3575,1584,main.pedersen.segments[0].windows[27].mux.c[1][1] +3576,1585,main.pedersen.segments[0].windows[27].mux.c[1][2] +3577,1586,main.pedersen.segments[0].windows[27].mux.c[1][3] +3578,1587,main.pedersen.segments[0].windows[27].mux.c[1][4] +3579,1588,main.pedersen.segments[0].windows[27].mux.c[1][5] +3580,1589,main.pedersen.segments[0].windows[27].mux.c[1][6] +3581,1577,main.pedersen.segments[0].windows[27].mux.c[1][7] +3582,111,main.pedersen.segments[0].windows[27].mux.s[0] +3583,112,main.pedersen.segments[0].windows[27].mux.s[1] +3584,113,main.pedersen.segments[0].windows[27].mux.s[2] +3585,1574,main.pedersen.segments[0].windows[27].mux.out[0] +3586,1590,main.pedersen.segments[0].windows[27].mux.out[1] +3587,1591,main.pedersen.segments[0].windows[27].mux.a210[0] +3588,1592,main.pedersen.segments[0].windows[27].mux.a210[1] +3589,1593,main.pedersen.segments[0].windows[27].mux.a21[0] +3590,1594,main.pedersen.segments[0].windows[27].mux.a21[1] +3591,1595,main.pedersen.segments[0].windows[27].mux.a20[0] +3592,1596,main.pedersen.segments[0].windows[27].mux.a20[1] +3593,3437,main.pedersen.segments[0].windows[27].mux.a2[0] +3594,3438,main.pedersen.segments[0].windows[27].mux.a2[1] +3595,1597,main.pedersen.segments[0].windows[27].mux.a10[0] +3596,1598,main.pedersen.segments[0].windows[27].mux.a10[1] +3597,1599,main.pedersen.segments[0].windows[27].mux.a1[0] +3598,1600,main.pedersen.segments[0].windows[27].mux.a1[1] +3599,1601,main.pedersen.segments[0].windows[27].mux.a0[0] +3600,1602,main.pedersen.segments[0].windows[27].mux.a0[1] +3601,1572,main.pedersen.segments[0].windows[27].mux.a[0] +3602,1573,main.pedersen.segments[0].windows[27].mux.a[1] +3603,1603,main.pedersen.segments[0].windows[27].mux.s10 +3604,1572,main.pedersen.segments[0].windows[27].dbl2.in[0] +3605,1573,main.pedersen.segments[0].windows[27].dbl2.in[1] +3606,1578,main.pedersen.segments[0].windows[27].dbl2.out[0] +3607,1584,main.pedersen.segments[0].windows[27].dbl2.out[1] +3608,1604,main.pedersen.segments[0].windows[27].dbl2.lamda +3609,1605,main.pedersen.segments[0].windows[27].dbl2.x1_2 +3610,1572,main.pedersen.segments[0].windows[27].adr3.in1[0] +3611,1573,main.pedersen.segments[0].windows[27].adr3.in1[1] +3612,1578,main.pedersen.segments[0].windows[27].adr3.in2[0] +3613,1584,main.pedersen.segments[0].windows[27].adr3.in2[1] +3614,1579,main.pedersen.segments[0].windows[27].adr3.out[0] +3615,1585,main.pedersen.segments[0].windows[27].adr3.out[1] +3616,1606,main.pedersen.segments[0].windows[27].adr3.lamda +3617,1572,main.pedersen.segments[0].windows[27].adr4.in1[0] +3618,1573,main.pedersen.segments[0].windows[27].adr4.in1[1] +3619,1579,main.pedersen.segments[0].windows[27].adr4.in2[0] +3620,1585,main.pedersen.segments[0].windows[27].adr4.in2[1] +3621,1580,main.pedersen.segments[0].windows[27].adr4.out[0] +3622,1586,main.pedersen.segments[0].windows[27].adr4.out[1] +3623,1607,main.pedersen.segments[0].windows[27].adr4.lamda +3624,1572,main.pedersen.segments[0].windows[27].adr5.in1[0] +3625,1573,main.pedersen.segments[0].windows[27].adr5.in1[1] +3626,1580,main.pedersen.segments[0].windows[27].adr5.in2[0] +3627,1586,main.pedersen.segments[0].windows[27].adr5.in2[1] +3628,1581,main.pedersen.segments[0].windows[27].adr5.out[0] +3629,1587,main.pedersen.segments[0].windows[27].adr5.out[1] +3630,1608,main.pedersen.segments[0].windows[27].adr5.lamda +3631,1572,main.pedersen.segments[0].windows[27].adr6.in1[0] +3632,1573,main.pedersen.segments[0].windows[27].adr6.in1[1] +3633,1581,main.pedersen.segments[0].windows[27].adr6.in2[0] +3634,1587,main.pedersen.segments[0].windows[27].adr6.in2[1] +3635,1582,main.pedersen.segments[0].windows[27].adr6.out[0] +3636,1588,main.pedersen.segments[0].windows[27].adr6.out[1] +3637,1609,main.pedersen.segments[0].windows[27].adr6.lamda +3638,1572,main.pedersen.segments[0].windows[27].adr7.in1[0] +3639,1573,main.pedersen.segments[0].windows[27].adr7.in1[1] +3640,1582,main.pedersen.segments[0].windows[27].adr7.in2[0] +3641,1588,main.pedersen.segments[0].windows[27].adr7.in2[1] +3642,1583,main.pedersen.segments[0].windows[27].adr7.out[0] +3643,1589,main.pedersen.segments[0].windows[27].adr7.out[1] +3644,1610,main.pedersen.segments[0].windows[27].adr7.lamda +3645,1572,main.pedersen.segments[0].windows[27].adr8.in1[0] +3646,1573,main.pedersen.segments[0].windows[27].adr8.in1[1] +3647,1583,main.pedersen.segments[0].windows[27].adr8.in2[0] +3648,1589,main.pedersen.segments[0].windows[27].adr8.in2[1] +3649,1576,main.pedersen.segments[0].windows[27].adr8.out[0] +3650,1577,main.pedersen.segments[0].windows[27].adr8.out[1] +3651,1611,main.pedersen.segments[0].windows[27].adr8.lamda +3671,115,main.pedersen.segments[0].windows[28].in[0] +3672,116,main.pedersen.segments[0].windows[28].in[1] +3673,117,main.pedersen.segments[0].windows[28].in[2] +3674,118,main.pedersen.segments[0].windows[28].in[3] +3675,1621,main.pedersen.segments[0].windows[28].base[0] +3676,1622,main.pedersen.segments[0].windows[28].base[1] +3677,1623,main.pedersen.segments[0].windows[28].out[0] +3678,1624,main.pedersen.segments[0].windows[28].out[1] +3679,1625,main.pedersen.segments[0].windows[28].out8[0] +3680,1626,main.pedersen.segments[0].windows[28].out8[1] +3681,1621,main.pedersen.segments[0].windows[28].mux.c[0][0] +3682,1627,main.pedersen.segments[0].windows[28].mux.c[0][1] +3683,1628,main.pedersen.segments[0].windows[28].mux.c[0][2] +3684,1629,main.pedersen.segments[0].windows[28].mux.c[0][3] +3685,1630,main.pedersen.segments[0].windows[28].mux.c[0][4] +3686,1631,main.pedersen.segments[0].windows[28].mux.c[0][5] +3687,1632,main.pedersen.segments[0].windows[28].mux.c[0][6] +3688,1625,main.pedersen.segments[0].windows[28].mux.c[0][7] +3689,1622,main.pedersen.segments[0].windows[28].mux.c[1][0] +3690,1633,main.pedersen.segments[0].windows[28].mux.c[1][1] +3691,1634,main.pedersen.segments[0].windows[28].mux.c[1][2] +3692,1635,main.pedersen.segments[0].windows[28].mux.c[1][3] +3693,1636,main.pedersen.segments[0].windows[28].mux.c[1][4] +3694,1637,main.pedersen.segments[0].windows[28].mux.c[1][5] +3695,1638,main.pedersen.segments[0].windows[28].mux.c[1][6] +3696,1626,main.pedersen.segments[0].windows[28].mux.c[1][7] +3697,115,main.pedersen.segments[0].windows[28].mux.s[0] +3698,116,main.pedersen.segments[0].windows[28].mux.s[1] +3699,117,main.pedersen.segments[0].windows[28].mux.s[2] +3700,1623,main.pedersen.segments[0].windows[28].mux.out[0] +3701,1639,main.pedersen.segments[0].windows[28].mux.out[1] +3702,1640,main.pedersen.segments[0].windows[28].mux.a210[0] +3703,1641,main.pedersen.segments[0].windows[28].mux.a210[1] +3704,1642,main.pedersen.segments[0].windows[28].mux.a21[0] +3705,1643,main.pedersen.segments[0].windows[28].mux.a21[1] +3706,1644,main.pedersen.segments[0].windows[28].mux.a20[0] +3707,1645,main.pedersen.segments[0].windows[28].mux.a20[1] +3708,3439,main.pedersen.segments[0].windows[28].mux.a2[0] +3709,3440,main.pedersen.segments[0].windows[28].mux.a2[1] +3710,1646,main.pedersen.segments[0].windows[28].mux.a10[0] +3711,1647,main.pedersen.segments[0].windows[28].mux.a10[1] +3712,1648,main.pedersen.segments[0].windows[28].mux.a1[0] +3713,1649,main.pedersen.segments[0].windows[28].mux.a1[1] +3714,1650,main.pedersen.segments[0].windows[28].mux.a0[0] +3715,1651,main.pedersen.segments[0].windows[28].mux.a0[1] +3716,1621,main.pedersen.segments[0].windows[28].mux.a[0] +3717,1622,main.pedersen.segments[0].windows[28].mux.a[1] +3718,1652,main.pedersen.segments[0].windows[28].mux.s10 +3719,1621,main.pedersen.segments[0].windows[28].dbl2.in[0] +3720,1622,main.pedersen.segments[0].windows[28].dbl2.in[1] +3721,1627,main.pedersen.segments[0].windows[28].dbl2.out[0] +3722,1633,main.pedersen.segments[0].windows[28].dbl2.out[1] +3723,1653,main.pedersen.segments[0].windows[28].dbl2.lamda +3724,1654,main.pedersen.segments[0].windows[28].dbl2.x1_2 +3725,1621,main.pedersen.segments[0].windows[28].adr3.in1[0] +3726,1622,main.pedersen.segments[0].windows[28].adr3.in1[1] +3727,1627,main.pedersen.segments[0].windows[28].adr3.in2[0] +3728,1633,main.pedersen.segments[0].windows[28].adr3.in2[1] +3729,1628,main.pedersen.segments[0].windows[28].adr3.out[0] +3730,1634,main.pedersen.segments[0].windows[28].adr3.out[1] +3731,1655,main.pedersen.segments[0].windows[28].adr3.lamda +3732,1621,main.pedersen.segments[0].windows[28].adr4.in1[0] +3733,1622,main.pedersen.segments[0].windows[28].adr4.in1[1] +3734,1628,main.pedersen.segments[0].windows[28].adr4.in2[0] +3735,1634,main.pedersen.segments[0].windows[28].adr4.in2[1] +3736,1629,main.pedersen.segments[0].windows[28].adr4.out[0] +3737,1635,main.pedersen.segments[0].windows[28].adr4.out[1] +3738,1656,main.pedersen.segments[0].windows[28].adr4.lamda +3739,1621,main.pedersen.segments[0].windows[28].adr5.in1[0] +3740,1622,main.pedersen.segments[0].windows[28].adr5.in1[1] +3741,1629,main.pedersen.segments[0].windows[28].adr5.in2[0] +3742,1635,main.pedersen.segments[0].windows[28].adr5.in2[1] +3743,1630,main.pedersen.segments[0].windows[28].adr5.out[0] +3744,1636,main.pedersen.segments[0].windows[28].adr5.out[1] +3745,1657,main.pedersen.segments[0].windows[28].adr5.lamda +3746,1621,main.pedersen.segments[0].windows[28].adr6.in1[0] +3747,1622,main.pedersen.segments[0].windows[28].adr6.in1[1] +3748,1630,main.pedersen.segments[0].windows[28].adr6.in2[0] +3749,1636,main.pedersen.segments[0].windows[28].adr6.in2[1] +3750,1631,main.pedersen.segments[0].windows[28].adr6.out[0] +3751,1637,main.pedersen.segments[0].windows[28].adr6.out[1] +3752,1658,main.pedersen.segments[0].windows[28].adr6.lamda +3753,1621,main.pedersen.segments[0].windows[28].adr7.in1[0] +3754,1622,main.pedersen.segments[0].windows[28].adr7.in1[1] +3755,1631,main.pedersen.segments[0].windows[28].adr7.in2[0] +3756,1637,main.pedersen.segments[0].windows[28].adr7.in2[1] +3757,1632,main.pedersen.segments[0].windows[28].adr7.out[0] +3758,1638,main.pedersen.segments[0].windows[28].adr7.out[1] +3759,1659,main.pedersen.segments[0].windows[28].adr7.lamda +3760,1621,main.pedersen.segments[0].windows[28].adr8.in1[0] +3761,1622,main.pedersen.segments[0].windows[28].adr8.in1[1] +3762,1632,main.pedersen.segments[0].windows[28].adr8.in2[0] +3763,1638,main.pedersen.segments[0].windows[28].adr8.in2[1] +3764,1625,main.pedersen.segments[0].windows[28].adr8.out[0] +3765,1626,main.pedersen.segments[0].windows[28].adr8.out[1] +3766,1660,main.pedersen.segments[0].windows[28].adr8.lamda +3786,119,main.pedersen.segments[0].windows[29].in[0] +3787,120,main.pedersen.segments[0].windows[29].in[1] +3788,121,main.pedersen.segments[0].windows[29].in[2] +3789,122,main.pedersen.segments[0].windows[29].in[3] +3790,1670,main.pedersen.segments[0].windows[29].base[0] +3791,1671,main.pedersen.segments[0].windows[29].base[1] +3792,1672,main.pedersen.segments[0].windows[29].out[0] +3793,1673,main.pedersen.segments[0].windows[29].out[1] +3794,1674,main.pedersen.segments[0].windows[29].out8[0] +3795,1675,main.pedersen.segments[0].windows[29].out8[1] +3796,1670,main.pedersen.segments[0].windows[29].mux.c[0][0] +3797,1676,main.pedersen.segments[0].windows[29].mux.c[0][1] +3798,1677,main.pedersen.segments[0].windows[29].mux.c[0][2] +3799,1678,main.pedersen.segments[0].windows[29].mux.c[0][3] +3800,1679,main.pedersen.segments[0].windows[29].mux.c[0][4] +3801,1680,main.pedersen.segments[0].windows[29].mux.c[0][5] +3802,1681,main.pedersen.segments[0].windows[29].mux.c[0][6] +3803,1674,main.pedersen.segments[0].windows[29].mux.c[0][7] +3804,1671,main.pedersen.segments[0].windows[29].mux.c[1][0] +3805,1682,main.pedersen.segments[0].windows[29].mux.c[1][1] +3806,1683,main.pedersen.segments[0].windows[29].mux.c[1][2] +3807,1684,main.pedersen.segments[0].windows[29].mux.c[1][3] +3808,1685,main.pedersen.segments[0].windows[29].mux.c[1][4] +3809,1686,main.pedersen.segments[0].windows[29].mux.c[1][5] +3810,1687,main.pedersen.segments[0].windows[29].mux.c[1][6] +3811,1675,main.pedersen.segments[0].windows[29].mux.c[1][7] +3812,119,main.pedersen.segments[0].windows[29].mux.s[0] +3813,120,main.pedersen.segments[0].windows[29].mux.s[1] +3814,121,main.pedersen.segments[0].windows[29].mux.s[2] +3815,1672,main.pedersen.segments[0].windows[29].mux.out[0] +3816,1688,main.pedersen.segments[0].windows[29].mux.out[1] +3817,1689,main.pedersen.segments[0].windows[29].mux.a210[0] +3818,1690,main.pedersen.segments[0].windows[29].mux.a210[1] +3819,1691,main.pedersen.segments[0].windows[29].mux.a21[0] +3820,1692,main.pedersen.segments[0].windows[29].mux.a21[1] +3821,1693,main.pedersen.segments[0].windows[29].mux.a20[0] +3822,1694,main.pedersen.segments[0].windows[29].mux.a20[1] +3823,3441,main.pedersen.segments[0].windows[29].mux.a2[0] +3824,3442,main.pedersen.segments[0].windows[29].mux.a2[1] +3825,1695,main.pedersen.segments[0].windows[29].mux.a10[0] +3826,1696,main.pedersen.segments[0].windows[29].mux.a10[1] +3827,1697,main.pedersen.segments[0].windows[29].mux.a1[0] +3828,1698,main.pedersen.segments[0].windows[29].mux.a1[1] +3829,1699,main.pedersen.segments[0].windows[29].mux.a0[0] +3830,1700,main.pedersen.segments[0].windows[29].mux.a0[1] +3831,1670,main.pedersen.segments[0].windows[29].mux.a[0] +3832,1671,main.pedersen.segments[0].windows[29].mux.a[1] +3833,1701,main.pedersen.segments[0].windows[29].mux.s10 +3834,1670,main.pedersen.segments[0].windows[29].dbl2.in[0] +3835,1671,main.pedersen.segments[0].windows[29].dbl2.in[1] +3836,1676,main.pedersen.segments[0].windows[29].dbl2.out[0] +3837,1682,main.pedersen.segments[0].windows[29].dbl2.out[1] +3838,1702,main.pedersen.segments[0].windows[29].dbl2.lamda +3839,1703,main.pedersen.segments[0].windows[29].dbl2.x1_2 +3840,1670,main.pedersen.segments[0].windows[29].adr3.in1[0] +3841,1671,main.pedersen.segments[0].windows[29].adr3.in1[1] +3842,1676,main.pedersen.segments[0].windows[29].adr3.in2[0] +3843,1682,main.pedersen.segments[0].windows[29].adr3.in2[1] +3844,1677,main.pedersen.segments[0].windows[29].adr3.out[0] +3845,1683,main.pedersen.segments[0].windows[29].adr3.out[1] +3846,1704,main.pedersen.segments[0].windows[29].adr3.lamda +3847,1670,main.pedersen.segments[0].windows[29].adr4.in1[0] +3848,1671,main.pedersen.segments[0].windows[29].adr4.in1[1] +3849,1677,main.pedersen.segments[0].windows[29].adr4.in2[0] +3850,1683,main.pedersen.segments[0].windows[29].adr4.in2[1] +3851,1678,main.pedersen.segments[0].windows[29].adr4.out[0] +3852,1684,main.pedersen.segments[0].windows[29].adr4.out[1] +3853,1705,main.pedersen.segments[0].windows[29].adr4.lamda +3854,1670,main.pedersen.segments[0].windows[29].adr5.in1[0] +3855,1671,main.pedersen.segments[0].windows[29].adr5.in1[1] +3856,1678,main.pedersen.segments[0].windows[29].adr5.in2[0] +3857,1684,main.pedersen.segments[0].windows[29].adr5.in2[1] +3858,1679,main.pedersen.segments[0].windows[29].adr5.out[0] +3859,1685,main.pedersen.segments[0].windows[29].adr5.out[1] +3860,1706,main.pedersen.segments[0].windows[29].adr5.lamda +3861,1670,main.pedersen.segments[0].windows[29].adr6.in1[0] +3862,1671,main.pedersen.segments[0].windows[29].adr6.in1[1] +3863,1679,main.pedersen.segments[0].windows[29].adr6.in2[0] +3864,1685,main.pedersen.segments[0].windows[29].adr6.in2[1] +3865,1680,main.pedersen.segments[0].windows[29].adr6.out[0] +3866,1686,main.pedersen.segments[0].windows[29].adr6.out[1] +3867,1707,main.pedersen.segments[0].windows[29].adr6.lamda +3868,1670,main.pedersen.segments[0].windows[29].adr7.in1[0] +3869,1671,main.pedersen.segments[0].windows[29].adr7.in1[1] +3870,1680,main.pedersen.segments[0].windows[29].adr7.in2[0] +3871,1686,main.pedersen.segments[0].windows[29].adr7.in2[1] +3872,1681,main.pedersen.segments[0].windows[29].adr7.out[0] +3873,1687,main.pedersen.segments[0].windows[29].adr7.out[1] +3874,1708,main.pedersen.segments[0].windows[29].adr7.lamda +3875,1670,main.pedersen.segments[0].windows[29].adr8.in1[0] +3876,1671,main.pedersen.segments[0].windows[29].adr8.in1[1] +3877,1681,main.pedersen.segments[0].windows[29].adr8.in2[0] +3878,1687,main.pedersen.segments[0].windows[29].adr8.in2[1] +3879,1674,main.pedersen.segments[0].windows[29].adr8.out[0] +3880,1675,main.pedersen.segments[0].windows[29].adr8.out[1] +3881,1709,main.pedersen.segments[0].windows[29].adr8.lamda +3901,123,main.pedersen.segments[0].windows[30].in[0] +3902,124,main.pedersen.segments[0].windows[30].in[1] +3903,125,main.pedersen.segments[0].windows[30].in[2] +3904,126,main.pedersen.segments[0].windows[30].in[3] +3905,1719,main.pedersen.segments[0].windows[30].base[0] +3906,1720,main.pedersen.segments[0].windows[30].base[1] +3907,1721,main.pedersen.segments[0].windows[30].out[0] +3908,1722,main.pedersen.segments[0].windows[30].out[1] +3909,1723,main.pedersen.segments[0].windows[30].out8[0] +3910,1724,main.pedersen.segments[0].windows[30].out8[1] +3911,1719,main.pedersen.segments[0].windows[30].mux.c[0][0] +3912,1725,main.pedersen.segments[0].windows[30].mux.c[0][1] +3913,1726,main.pedersen.segments[0].windows[30].mux.c[0][2] +3914,1727,main.pedersen.segments[0].windows[30].mux.c[0][3] +3915,1728,main.pedersen.segments[0].windows[30].mux.c[0][4] +3916,1729,main.pedersen.segments[0].windows[30].mux.c[0][5] +3917,1730,main.pedersen.segments[0].windows[30].mux.c[0][6] +3918,1723,main.pedersen.segments[0].windows[30].mux.c[0][7] +3919,1720,main.pedersen.segments[0].windows[30].mux.c[1][0] +3920,1731,main.pedersen.segments[0].windows[30].mux.c[1][1] +3921,1732,main.pedersen.segments[0].windows[30].mux.c[1][2] +3922,1733,main.pedersen.segments[0].windows[30].mux.c[1][3] +3923,1734,main.pedersen.segments[0].windows[30].mux.c[1][4] +3924,1735,main.pedersen.segments[0].windows[30].mux.c[1][5] +3925,1736,main.pedersen.segments[0].windows[30].mux.c[1][6] +3926,1724,main.pedersen.segments[0].windows[30].mux.c[1][7] +3927,123,main.pedersen.segments[0].windows[30].mux.s[0] +3928,124,main.pedersen.segments[0].windows[30].mux.s[1] +3929,125,main.pedersen.segments[0].windows[30].mux.s[2] +3930,1721,main.pedersen.segments[0].windows[30].mux.out[0] +3931,1737,main.pedersen.segments[0].windows[30].mux.out[1] +3932,1738,main.pedersen.segments[0].windows[30].mux.a210[0] +3933,1739,main.pedersen.segments[0].windows[30].mux.a210[1] +3934,1740,main.pedersen.segments[0].windows[30].mux.a21[0] +3935,1741,main.pedersen.segments[0].windows[30].mux.a21[1] +3936,1742,main.pedersen.segments[0].windows[30].mux.a20[0] +3937,1743,main.pedersen.segments[0].windows[30].mux.a20[1] +3938,3443,main.pedersen.segments[0].windows[30].mux.a2[0] +3939,3444,main.pedersen.segments[0].windows[30].mux.a2[1] +3940,1744,main.pedersen.segments[0].windows[30].mux.a10[0] +3941,1745,main.pedersen.segments[0].windows[30].mux.a10[1] +3942,1746,main.pedersen.segments[0].windows[30].mux.a1[0] +3943,1747,main.pedersen.segments[0].windows[30].mux.a1[1] +3944,1748,main.pedersen.segments[0].windows[30].mux.a0[0] +3945,1749,main.pedersen.segments[0].windows[30].mux.a0[1] +3946,1719,main.pedersen.segments[0].windows[30].mux.a[0] +3947,1720,main.pedersen.segments[0].windows[30].mux.a[1] +3948,1750,main.pedersen.segments[0].windows[30].mux.s10 +3949,1719,main.pedersen.segments[0].windows[30].dbl2.in[0] +3950,1720,main.pedersen.segments[0].windows[30].dbl2.in[1] +3951,1725,main.pedersen.segments[0].windows[30].dbl2.out[0] +3952,1731,main.pedersen.segments[0].windows[30].dbl2.out[1] +3953,1751,main.pedersen.segments[0].windows[30].dbl2.lamda +3954,1752,main.pedersen.segments[0].windows[30].dbl2.x1_2 +3955,1719,main.pedersen.segments[0].windows[30].adr3.in1[0] +3956,1720,main.pedersen.segments[0].windows[30].adr3.in1[1] +3957,1725,main.pedersen.segments[0].windows[30].adr3.in2[0] +3958,1731,main.pedersen.segments[0].windows[30].adr3.in2[1] +3959,1726,main.pedersen.segments[0].windows[30].adr3.out[0] +3960,1732,main.pedersen.segments[0].windows[30].adr3.out[1] +3961,1753,main.pedersen.segments[0].windows[30].adr3.lamda +3962,1719,main.pedersen.segments[0].windows[30].adr4.in1[0] +3963,1720,main.pedersen.segments[0].windows[30].adr4.in1[1] +3964,1726,main.pedersen.segments[0].windows[30].adr4.in2[0] +3965,1732,main.pedersen.segments[0].windows[30].adr4.in2[1] +3966,1727,main.pedersen.segments[0].windows[30].adr4.out[0] +3967,1733,main.pedersen.segments[0].windows[30].adr4.out[1] +3968,1754,main.pedersen.segments[0].windows[30].adr4.lamda +3969,1719,main.pedersen.segments[0].windows[30].adr5.in1[0] +3970,1720,main.pedersen.segments[0].windows[30].adr5.in1[1] +3971,1727,main.pedersen.segments[0].windows[30].adr5.in2[0] +3972,1733,main.pedersen.segments[0].windows[30].adr5.in2[1] +3973,1728,main.pedersen.segments[0].windows[30].adr5.out[0] +3974,1734,main.pedersen.segments[0].windows[30].adr5.out[1] +3975,1755,main.pedersen.segments[0].windows[30].adr5.lamda +3976,1719,main.pedersen.segments[0].windows[30].adr6.in1[0] +3977,1720,main.pedersen.segments[0].windows[30].adr6.in1[1] +3978,1728,main.pedersen.segments[0].windows[30].adr6.in2[0] +3979,1734,main.pedersen.segments[0].windows[30].adr6.in2[1] +3980,1729,main.pedersen.segments[0].windows[30].adr6.out[0] +3981,1735,main.pedersen.segments[0].windows[30].adr6.out[1] +3982,1756,main.pedersen.segments[0].windows[30].adr6.lamda +3983,1719,main.pedersen.segments[0].windows[30].adr7.in1[0] +3984,1720,main.pedersen.segments[0].windows[30].adr7.in1[1] +3985,1729,main.pedersen.segments[0].windows[30].adr7.in2[0] +3986,1735,main.pedersen.segments[0].windows[30].adr7.in2[1] +3987,1730,main.pedersen.segments[0].windows[30].adr7.out[0] +3988,1736,main.pedersen.segments[0].windows[30].adr7.out[1] +3989,1757,main.pedersen.segments[0].windows[30].adr7.lamda +3990,1719,main.pedersen.segments[0].windows[30].adr8.in1[0] +3991,1720,main.pedersen.segments[0].windows[30].adr8.in1[1] +3992,1730,main.pedersen.segments[0].windows[30].adr8.in2[0] +3993,1736,main.pedersen.segments[0].windows[30].adr8.in2[1] +3994,1723,main.pedersen.segments[0].windows[30].adr8.out[0] +3995,1724,main.pedersen.segments[0].windows[30].adr8.out[1] +3996,1758,main.pedersen.segments[0].windows[30].adr8.lamda +4016,127,main.pedersen.segments[0].windows[31].in[0] +4017,128,main.pedersen.segments[0].windows[31].in[1] +4018,129,main.pedersen.segments[0].windows[31].in[2] +4019,130,main.pedersen.segments[0].windows[31].in[3] +4020,1768,main.pedersen.segments[0].windows[31].base[0] +4021,1769,main.pedersen.segments[0].windows[31].base[1] +4022,1770,main.pedersen.segments[0].windows[31].out[0] +4023,1771,main.pedersen.segments[0].windows[31].out[1] +4024,1772,main.pedersen.segments[0].windows[31].out8[0] +4025,1773,main.pedersen.segments[0].windows[31].out8[1] +4026,1768,main.pedersen.segments[0].windows[31].mux.c[0][0] +4027,1774,main.pedersen.segments[0].windows[31].mux.c[0][1] +4028,1775,main.pedersen.segments[0].windows[31].mux.c[0][2] +4029,1776,main.pedersen.segments[0].windows[31].mux.c[0][3] +4030,1777,main.pedersen.segments[0].windows[31].mux.c[0][4] +4031,1778,main.pedersen.segments[0].windows[31].mux.c[0][5] +4032,1779,main.pedersen.segments[0].windows[31].mux.c[0][6] +4033,1772,main.pedersen.segments[0].windows[31].mux.c[0][7] +4034,1769,main.pedersen.segments[0].windows[31].mux.c[1][0] +4035,1780,main.pedersen.segments[0].windows[31].mux.c[1][1] +4036,1781,main.pedersen.segments[0].windows[31].mux.c[1][2] +4037,1782,main.pedersen.segments[0].windows[31].mux.c[1][3] +4038,1783,main.pedersen.segments[0].windows[31].mux.c[1][4] +4039,1784,main.pedersen.segments[0].windows[31].mux.c[1][5] +4040,1785,main.pedersen.segments[0].windows[31].mux.c[1][6] +4041,1773,main.pedersen.segments[0].windows[31].mux.c[1][7] +4042,127,main.pedersen.segments[0].windows[31].mux.s[0] +4043,128,main.pedersen.segments[0].windows[31].mux.s[1] +4044,129,main.pedersen.segments[0].windows[31].mux.s[2] +4045,1770,main.pedersen.segments[0].windows[31].mux.out[0] +4046,1786,main.pedersen.segments[0].windows[31].mux.out[1] +4047,1787,main.pedersen.segments[0].windows[31].mux.a210[0] +4048,1788,main.pedersen.segments[0].windows[31].mux.a210[1] +4049,1789,main.pedersen.segments[0].windows[31].mux.a21[0] +4050,1790,main.pedersen.segments[0].windows[31].mux.a21[1] +4051,1791,main.pedersen.segments[0].windows[31].mux.a20[0] +4052,1792,main.pedersen.segments[0].windows[31].mux.a20[1] +4053,3445,main.pedersen.segments[0].windows[31].mux.a2[0] +4054,3446,main.pedersen.segments[0].windows[31].mux.a2[1] +4055,1793,main.pedersen.segments[0].windows[31].mux.a10[0] +4056,1794,main.pedersen.segments[0].windows[31].mux.a10[1] +4057,1795,main.pedersen.segments[0].windows[31].mux.a1[0] +4058,1796,main.pedersen.segments[0].windows[31].mux.a1[1] +4059,1797,main.pedersen.segments[0].windows[31].mux.a0[0] +4060,1798,main.pedersen.segments[0].windows[31].mux.a0[1] +4061,1768,main.pedersen.segments[0].windows[31].mux.a[0] +4062,1769,main.pedersen.segments[0].windows[31].mux.a[1] +4063,1799,main.pedersen.segments[0].windows[31].mux.s10 +4064,1768,main.pedersen.segments[0].windows[31].dbl2.in[0] +4065,1769,main.pedersen.segments[0].windows[31].dbl2.in[1] +4066,1774,main.pedersen.segments[0].windows[31].dbl2.out[0] +4067,1780,main.pedersen.segments[0].windows[31].dbl2.out[1] +4068,1800,main.pedersen.segments[0].windows[31].dbl2.lamda +4069,1801,main.pedersen.segments[0].windows[31].dbl2.x1_2 +4070,1768,main.pedersen.segments[0].windows[31].adr3.in1[0] +4071,1769,main.pedersen.segments[0].windows[31].adr3.in1[1] +4072,1774,main.pedersen.segments[0].windows[31].adr3.in2[0] +4073,1780,main.pedersen.segments[0].windows[31].adr3.in2[1] +4074,1775,main.pedersen.segments[0].windows[31].adr3.out[0] +4075,1781,main.pedersen.segments[0].windows[31].adr3.out[1] +4076,1802,main.pedersen.segments[0].windows[31].adr3.lamda +4077,1768,main.pedersen.segments[0].windows[31].adr4.in1[0] +4078,1769,main.pedersen.segments[0].windows[31].adr4.in1[1] +4079,1775,main.pedersen.segments[0].windows[31].adr4.in2[0] +4080,1781,main.pedersen.segments[0].windows[31].adr4.in2[1] +4081,1776,main.pedersen.segments[0].windows[31].adr4.out[0] +4082,1782,main.pedersen.segments[0].windows[31].adr4.out[1] +4083,1803,main.pedersen.segments[0].windows[31].adr4.lamda +4084,1768,main.pedersen.segments[0].windows[31].adr5.in1[0] +4085,1769,main.pedersen.segments[0].windows[31].adr5.in1[1] +4086,1776,main.pedersen.segments[0].windows[31].adr5.in2[0] +4087,1782,main.pedersen.segments[0].windows[31].adr5.in2[1] +4088,1777,main.pedersen.segments[0].windows[31].adr5.out[0] +4089,1783,main.pedersen.segments[0].windows[31].adr5.out[1] +4090,1804,main.pedersen.segments[0].windows[31].adr5.lamda +4091,1768,main.pedersen.segments[0].windows[31].adr6.in1[0] +4092,1769,main.pedersen.segments[0].windows[31].adr6.in1[1] +4093,1777,main.pedersen.segments[0].windows[31].adr6.in2[0] +4094,1783,main.pedersen.segments[0].windows[31].adr6.in2[1] +4095,1778,main.pedersen.segments[0].windows[31].adr6.out[0] +4096,1784,main.pedersen.segments[0].windows[31].adr6.out[1] +4097,1805,main.pedersen.segments[0].windows[31].adr6.lamda +4098,1768,main.pedersen.segments[0].windows[31].adr7.in1[0] +4099,1769,main.pedersen.segments[0].windows[31].adr7.in1[1] +4100,1778,main.pedersen.segments[0].windows[31].adr7.in2[0] +4101,1784,main.pedersen.segments[0].windows[31].adr7.in2[1] +4102,1779,main.pedersen.segments[0].windows[31].adr7.out[0] +4103,1785,main.pedersen.segments[0].windows[31].adr7.out[1] +4104,1806,main.pedersen.segments[0].windows[31].adr7.lamda +4105,1768,main.pedersen.segments[0].windows[31].adr8.in1[0] +4106,1769,main.pedersen.segments[0].windows[31].adr8.in1[1] +4107,1779,main.pedersen.segments[0].windows[31].adr8.in2[0] +4108,1785,main.pedersen.segments[0].windows[31].adr8.in2[1] +4109,1772,main.pedersen.segments[0].windows[31].adr8.out[0] +4110,1773,main.pedersen.segments[0].windows[31].adr8.out[1] +4111,1807,main.pedersen.segments[0].windows[31].adr8.lamda +4131,131,main.pedersen.segments[0].windows[32].in[0] +4132,132,main.pedersen.segments[0].windows[32].in[1] +4133,133,main.pedersen.segments[0].windows[32].in[2] +4134,134,main.pedersen.segments[0].windows[32].in[3] +4135,1817,main.pedersen.segments[0].windows[32].base[0] +4136,1818,main.pedersen.segments[0].windows[32].base[1] +4137,1819,main.pedersen.segments[0].windows[32].out[0] +4138,1820,main.pedersen.segments[0].windows[32].out[1] +4139,1821,main.pedersen.segments[0].windows[32].out8[0] +4140,1822,main.pedersen.segments[0].windows[32].out8[1] +4141,1817,main.pedersen.segments[0].windows[32].mux.c[0][0] +4142,1823,main.pedersen.segments[0].windows[32].mux.c[0][1] +4143,1824,main.pedersen.segments[0].windows[32].mux.c[0][2] +4144,1825,main.pedersen.segments[0].windows[32].mux.c[0][3] +4145,1826,main.pedersen.segments[0].windows[32].mux.c[0][4] +4146,1827,main.pedersen.segments[0].windows[32].mux.c[0][5] +4147,1828,main.pedersen.segments[0].windows[32].mux.c[0][6] +4148,1821,main.pedersen.segments[0].windows[32].mux.c[0][7] +4149,1818,main.pedersen.segments[0].windows[32].mux.c[1][0] +4150,1829,main.pedersen.segments[0].windows[32].mux.c[1][1] +4151,1830,main.pedersen.segments[0].windows[32].mux.c[1][2] +4152,1831,main.pedersen.segments[0].windows[32].mux.c[1][3] +4153,1832,main.pedersen.segments[0].windows[32].mux.c[1][4] +4154,1833,main.pedersen.segments[0].windows[32].mux.c[1][5] +4155,1834,main.pedersen.segments[0].windows[32].mux.c[1][6] +4156,1822,main.pedersen.segments[0].windows[32].mux.c[1][7] +4157,131,main.pedersen.segments[0].windows[32].mux.s[0] +4158,132,main.pedersen.segments[0].windows[32].mux.s[1] +4159,133,main.pedersen.segments[0].windows[32].mux.s[2] +4160,1819,main.pedersen.segments[0].windows[32].mux.out[0] +4161,1835,main.pedersen.segments[0].windows[32].mux.out[1] +4162,1836,main.pedersen.segments[0].windows[32].mux.a210[0] +4163,1837,main.pedersen.segments[0].windows[32].mux.a210[1] +4164,1838,main.pedersen.segments[0].windows[32].mux.a21[0] +4165,1839,main.pedersen.segments[0].windows[32].mux.a21[1] +4166,1840,main.pedersen.segments[0].windows[32].mux.a20[0] +4167,1841,main.pedersen.segments[0].windows[32].mux.a20[1] +4168,3447,main.pedersen.segments[0].windows[32].mux.a2[0] +4169,3448,main.pedersen.segments[0].windows[32].mux.a2[1] +4170,1842,main.pedersen.segments[0].windows[32].mux.a10[0] +4171,1843,main.pedersen.segments[0].windows[32].mux.a10[1] +4172,1844,main.pedersen.segments[0].windows[32].mux.a1[0] +4173,1845,main.pedersen.segments[0].windows[32].mux.a1[1] +4174,1846,main.pedersen.segments[0].windows[32].mux.a0[0] +4175,1847,main.pedersen.segments[0].windows[32].mux.a0[1] +4176,1817,main.pedersen.segments[0].windows[32].mux.a[0] +4177,1818,main.pedersen.segments[0].windows[32].mux.a[1] +4178,1848,main.pedersen.segments[0].windows[32].mux.s10 +4179,1817,main.pedersen.segments[0].windows[32].dbl2.in[0] +4180,1818,main.pedersen.segments[0].windows[32].dbl2.in[1] +4181,1823,main.pedersen.segments[0].windows[32].dbl2.out[0] +4182,1829,main.pedersen.segments[0].windows[32].dbl2.out[1] +4183,1849,main.pedersen.segments[0].windows[32].dbl2.lamda +4184,1850,main.pedersen.segments[0].windows[32].dbl2.x1_2 +4185,1817,main.pedersen.segments[0].windows[32].adr3.in1[0] +4186,1818,main.pedersen.segments[0].windows[32].adr3.in1[1] +4187,1823,main.pedersen.segments[0].windows[32].adr3.in2[0] +4188,1829,main.pedersen.segments[0].windows[32].adr3.in2[1] +4189,1824,main.pedersen.segments[0].windows[32].adr3.out[0] +4190,1830,main.pedersen.segments[0].windows[32].adr3.out[1] +4191,1851,main.pedersen.segments[0].windows[32].adr3.lamda +4192,1817,main.pedersen.segments[0].windows[32].adr4.in1[0] +4193,1818,main.pedersen.segments[0].windows[32].adr4.in1[1] +4194,1824,main.pedersen.segments[0].windows[32].adr4.in2[0] +4195,1830,main.pedersen.segments[0].windows[32].adr4.in2[1] +4196,1825,main.pedersen.segments[0].windows[32].adr4.out[0] +4197,1831,main.pedersen.segments[0].windows[32].adr4.out[1] +4198,1852,main.pedersen.segments[0].windows[32].adr4.lamda +4199,1817,main.pedersen.segments[0].windows[32].adr5.in1[0] +4200,1818,main.pedersen.segments[0].windows[32].adr5.in1[1] +4201,1825,main.pedersen.segments[0].windows[32].adr5.in2[0] +4202,1831,main.pedersen.segments[0].windows[32].adr5.in2[1] +4203,1826,main.pedersen.segments[0].windows[32].adr5.out[0] +4204,1832,main.pedersen.segments[0].windows[32].adr5.out[1] +4205,1853,main.pedersen.segments[0].windows[32].adr5.lamda +4206,1817,main.pedersen.segments[0].windows[32].adr6.in1[0] +4207,1818,main.pedersen.segments[0].windows[32].adr6.in1[1] +4208,1826,main.pedersen.segments[0].windows[32].adr6.in2[0] +4209,1832,main.pedersen.segments[0].windows[32].adr6.in2[1] +4210,1827,main.pedersen.segments[0].windows[32].adr6.out[0] +4211,1833,main.pedersen.segments[0].windows[32].adr6.out[1] +4212,1854,main.pedersen.segments[0].windows[32].adr6.lamda +4213,1817,main.pedersen.segments[0].windows[32].adr7.in1[0] +4214,1818,main.pedersen.segments[0].windows[32].adr7.in1[1] +4215,1827,main.pedersen.segments[0].windows[32].adr7.in2[0] +4216,1833,main.pedersen.segments[0].windows[32].adr7.in2[1] +4217,1828,main.pedersen.segments[0].windows[32].adr7.out[0] +4218,1834,main.pedersen.segments[0].windows[32].adr7.out[1] +4219,1855,main.pedersen.segments[0].windows[32].adr7.lamda +4220,1817,main.pedersen.segments[0].windows[32].adr8.in1[0] +4221,1818,main.pedersen.segments[0].windows[32].adr8.in1[1] +4222,1828,main.pedersen.segments[0].windows[32].adr8.in2[0] +4223,1834,main.pedersen.segments[0].windows[32].adr8.in2[1] +4224,1821,main.pedersen.segments[0].windows[32].adr8.out[0] +4225,1822,main.pedersen.segments[0].windows[32].adr8.out[1] +4226,1856,main.pedersen.segments[0].windows[32].adr8.lamda +4246,135,main.pedersen.segments[0].windows[33].in[0] +4247,136,main.pedersen.segments[0].windows[33].in[1] +4248,137,main.pedersen.segments[0].windows[33].in[2] +4249,138,main.pedersen.segments[0].windows[33].in[3] +4250,1866,main.pedersen.segments[0].windows[33].base[0] +4251,1867,main.pedersen.segments[0].windows[33].base[1] +4252,1868,main.pedersen.segments[0].windows[33].out[0] +4253,1869,main.pedersen.segments[0].windows[33].out[1] +4254,1870,main.pedersen.segments[0].windows[33].out8[0] +4255,1871,main.pedersen.segments[0].windows[33].out8[1] +4256,1866,main.pedersen.segments[0].windows[33].mux.c[0][0] +4257,1872,main.pedersen.segments[0].windows[33].mux.c[0][1] +4258,1873,main.pedersen.segments[0].windows[33].mux.c[0][2] +4259,1874,main.pedersen.segments[0].windows[33].mux.c[0][3] +4260,1875,main.pedersen.segments[0].windows[33].mux.c[0][4] +4261,1876,main.pedersen.segments[0].windows[33].mux.c[0][5] +4262,1877,main.pedersen.segments[0].windows[33].mux.c[0][6] +4263,1870,main.pedersen.segments[0].windows[33].mux.c[0][7] +4264,1867,main.pedersen.segments[0].windows[33].mux.c[1][0] +4265,1878,main.pedersen.segments[0].windows[33].mux.c[1][1] +4266,1879,main.pedersen.segments[0].windows[33].mux.c[1][2] +4267,1880,main.pedersen.segments[0].windows[33].mux.c[1][3] +4268,1881,main.pedersen.segments[0].windows[33].mux.c[1][4] +4269,1882,main.pedersen.segments[0].windows[33].mux.c[1][5] +4270,1883,main.pedersen.segments[0].windows[33].mux.c[1][6] +4271,1871,main.pedersen.segments[0].windows[33].mux.c[1][7] +4272,135,main.pedersen.segments[0].windows[33].mux.s[0] +4273,136,main.pedersen.segments[0].windows[33].mux.s[1] +4274,137,main.pedersen.segments[0].windows[33].mux.s[2] +4275,1868,main.pedersen.segments[0].windows[33].mux.out[0] +4276,1884,main.pedersen.segments[0].windows[33].mux.out[1] +4277,1885,main.pedersen.segments[0].windows[33].mux.a210[0] +4278,1886,main.pedersen.segments[0].windows[33].mux.a210[1] +4279,1887,main.pedersen.segments[0].windows[33].mux.a21[0] +4280,1888,main.pedersen.segments[0].windows[33].mux.a21[1] +4281,1889,main.pedersen.segments[0].windows[33].mux.a20[0] +4282,1890,main.pedersen.segments[0].windows[33].mux.a20[1] +4283,3449,main.pedersen.segments[0].windows[33].mux.a2[0] +4284,3450,main.pedersen.segments[0].windows[33].mux.a2[1] +4285,1891,main.pedersen.segments[0].windows[33].mux.a10[0] +4286,1892,main.pedersen.segments[0].windows[33].mux.a10[1] +4287,1893,main.pedersen.segments[0].windows[33].mux.a1[0] +4288,1894,main.pedersen.segments[0].windows[33].mux.a1[1] +4289,1895,main.pedersen.segments[0].windows[33].mux.a0[0] +4290,1896,main.pedersen.segments[0].windows[33].mux.a0[1] +4291,1866,main.pedersen.segments[0].windows[33].mux.a[0] +4292,1867,main.pedersen.segments[0].windows[33].mux.a[1] +4293,1897,main.pedersen.segments[0].windows[33].mux.s10 +4294,1866,main.pedersen.segments[0].windows[33].dbl2.in[0] +4295,1867,main.pedersen.segments[0].windows[33].dbl2.in[1] +4296,1872,main.pedersen.segments[0].windows[33].dbl2.out[0] +4297,1878,main.pedersen.segments[0].windows[33].dbl2.out[1] +4298,1898,main.pedersen.segments[0].windows[33].dbl2.lamda +4299,1899,main.pedersen.segments[0].windows[33].dbl2.x1_2 +4300,1866,main.pedersen.segments[0].windows[33].adr3.in1[0] +4301,1867,main.pedersen.segments[0].windows[33].adr3.in1[1] +4302,1872,main.pedersen.segments[0].windows[33].adr3.in2[0] +4303,1878,main.pedersen.segments[0].windows[33].adr3.in2[1] +4304,1873,main.pedersen.segments[0].windows[33].adr3.out[0] +4305,1879,main.pedersen.segments[0].windows[33].adr3.out[1] +4306,1900,main.pedersen.segments[0].windows[33].adr3.lamda +4307,1866,main.pedersen.segments[0].windows[33].adr4.in1[0] +4308,1867,main.pedersen.segments[0].windows[33].adr4.in1[1] +4309,1873,main.pedersen.segments[0].windows[33].adr4.in2[0] +4310,1879,main.pedersen.segments[0].windows[33].adr4.in2[1] +4311,1874,main.pedersen.segments[0].windows[33].adr4.out[0] +4312,1880,main.pedersen.segments[0].windows[33].adr4.out[1] +4313,1901,main.pedersen.segments[0].windows[33].adr4.lamda +4314,1866,main.pedersen.segments[0].windows[33].adr5.in1[0] +4315,1867,main.pedersen.segments[0].windows[33].adr5.in1[1] +4316,1874,main.pedersen.segments[0].windows[33].adr5.in2[0] +4317,1880,main.pedersen.segments[0].windows[33].adr5.in2[1] +4318,1875,main.pedersen.segments[0].windows[33].adr5.out[0] +4319,1881,main.pedersen.segments[0].windows[33].adr5.out[1] +4320,1902,main.pedersen.segments[0].windows[33].adr5.lamda +4321,1866,main.pedersen.segments[0].windows[33].adr6.in1[0] +4322,1867,main.pedersen.segments[0].windows[33].adr6.in1[1] +4323,1875,main.pedersen.segments[0].windows[33].adr6.in2[0] +4324,1881,main.pedersen.segments[0].windows[33].adr6.in2[1] +4325,1876,main.pedersen.segments[0].windows[33].adr6.out[0] +4326,1882,main.pedersen.segments[0].windows[33].adr6.out[1] +4327,1903,main.pedersen.segments[0].windows[33].adr6.lamda +4328,1866,main.pedersen.segments[0].windows[33].adr7.in1[0] +4329,1867,main.pedersen.segments[0].windows[33].adr7.in1[1] +4330,1876,main.pedersen.segments[0].windows[33].adr7.in2[0] +4331,1882,main.pedersen.segments[0].windows[33].adr7.in2[1] +4332,1877,main.pedersen.segments[0].windows[33].adr7.out[0] +4333,1883,main.pedersen.segments[0].windows[33].adr7.out[1] +4334,1904,main.pedersen.segments[0].windows[33].adr7.lamda +4335,1866,main.pedersen.segments[0].windows[33].adr8.in1[0] +4336,1867,main.pedersen.segments[0].windows[33].adr8.in1[1] +4337,1877,main.pedersen.segments[0].windows[33].adr8.in2[0] +4338,1883,main.pedersen.segments[0].windows[33].adr8.in2[1] +4339,1870,main.pedersen.segments[0].windows[33].adr8.out[0] +4340,1871,main.pedersen.segments[0].windows[33].adr8.out[1] +4341,1905,main.pedersen.segments[0].windows[33].adr8.lamda +4361,139,main.pedersen.segments[0].windows[34].in[0] +4362,140,main.pedersen.segments[0].windows[34].in[1] +4363,141,main.pedersen.segments[0].windows[34].in[2] +4364,142,main.pedersen.segments[0].windows[34].in[3] +4365,1915,main.pedersen.segments[0].windows[34].base[0] +4366,1916,main.pedersen.segments[0].windows[34].base[1] +4367,1917,main.pedersen.segments[0].windows[34].out[0] +4368,1918,main.pedersen.segments[0].windows[34].out[1] +4369,1919,main.pedersen.segments[0].windows[34].out8[0] +4370,1920,main.pedersen.segments[0].windows[34].out8[1] +4371,1915,main.pedersen.segments[0].windows[34].mux.c[0][0] +4372,1921,main.pedersen.segments[0].windows[34].mux.c[0][1] +4373,1922,main.pedersen.segments[0].windows[34].mux.c[0][2] +4374,1923,main.pedersen.segments[0].windows[34].mux.c[0][3] +4375,1924,main.pedersen.segments[0].windows[34].mux.c[0][4] +4376,1925,main.pedersen.segments[0].windows[34].mux.c[0][5] +4377,1926,main.pedersen.segments[0].windows[34].mux.c[0][6] +4378,1919,main.pedersen.segments[0].windows[34].mux.c[0][7] +4379,1916,main.pedersen.segments[0].windows[34].mux.c[1][0] +4380,1927,main.pedersen.segments[0].windows[34].mux.c[1][1] +4381,1928,main.pedersen.segments[0].windows[34].mux.c[1][2] +4382,1929,main.pedersen.segments[0].windows[34].mux.c[1][3] +4383,1930,main.pedersen.segments[0].windows[34].mux.c[1][4] +4384,1931,main.pedersen.segments[0].windows[34].mux.c[1][5] +4385,1932,main.pedersen.segments[0].windows[34].mux.c[1][6] +4386,1920,main.pedersen.segments[0].windows[34].mux.c[1][7] +4387,139,main.pedersen.segments[0].windows[34].mux.s[0] +4388,140,main.pedersen.segments[0].windows[34].mux.s[1] +4389,141,main.pedersen.segments[0].windows[34].mux.s[2] +4390,1917,main.pedersen.segments[0].windows[34].mux.out[0] +4391,1933,main.pedersen.segments[0].windows[34].mux.out[1] +4392,1934,main.pedersen.segments[0].windows[34].mux.a210[0] +4393,1935,main.pedersen.segments[0].windows[34].mux.a210[1] +4394,1936,main.pedersen.segments[0].windows[34].mux.a21[0] +4395,1937,main.pedersen.segments[0].windows[34].mux.a21[1] +4396,1938,main.pedersen.segments[0].windows[34].mux.a20[0] +4397,1939,main.pedersen.segments[0].windows[34].mux.a20[1] +4398,3451,main.pedersen.segments[0].windows[34].mux.a2[0] +4399,3452,main.pedersen.segments[0].windows[34].mux.a2[1] +4400,1940,main.pedersen.segments[0].windows[34].mux.a10[0] +4401,1941,main.pedersen.segments[0].windows[34].mux.a10[1] +4402,1942,main.pedersen.segments[0].windows[34].mux.a1[0] +4403,1943,main.pedersen.segments[0].windows[34].mux.a1[1] +4404,1944,main.pedersen.segments[0].windows[34].mux.a0[0] +4405,1945,main.pedersen.segments[0].windows[34].mux.a0[1] +4406,1915,main.pedersen.segments[0].windows[34].mux.a[0] +4407,1916,main.pedersen.segments[0].windows[34].mux.a[1] +4408,1946,main.pedersen.segments[0].windows[34].mux.s10 +4409,1915,main.pedersen.segments[0].windows[34].dbl2.in[0] +4410,1916,main.pedersen.segments[0].windows[34].dbl2.in[1] +4411,1921,main.pedersen.segments[0].windows[34].dbl2.out[0] +4412,1927,main.pedersen.segments[0].windows[34].dbl2.out[1] +4413,1947,main.pedersen.segments[0].windows[34].dbl2.lamda +4414,1948,main.pedersen.segments[0].windows[34].dbl2.x1_2 +4415,1915,main.pedersen.segments[0].windows[34].adr3.in1[0] +4416,1916,main.pedersen.segments[0].windows[34].adr3.in1[1] +4417,1921,main.pedersen.segments[0].windows[34].adr3.in2[0] +4418,1927,main.pedersen.segments[0].windows[34].adr3.in2[1] +4419,1922,main.pedersen.segments[0].windows[34].adr3.out[0] +4420,1928,main.pedersen.segments[0].windows[34].adr3.out[1] +4421,1949,main.pedersen.segments[0].windows[34].adr3.lamda +4422,1915,main.pedersen.segments[0].windows[34].adr4.in1[0] +4423,1916,main.pedersen.segments[0].windows[34].adr4.in1[1] +4424,1922,main.pedersen.segments[0].windows[34].adr4.in2[0] +4425,1928,main.pedersen.segments[0].windows[34].adr4.in2[1] +4426,1923,main.pedersen.segments[0].windows[34].adr4.out[0] +4427,1929,main.pedersen.segments[0].windows[34].adr4.out[1] +4428,1950,main.pedersen.segments[0].windows[34].adr4.lamda +4429,1915,main.pedersen.segments[0].windows[34].adr5.in1[0] +4430,1916,main.pedersen.segments[0].windows[34].adr5.in1[1] +4431,1923,main.pedersen.segments[0].windows[34].adr5.in2[0] +4432,1929,main.pedersen.segments[0].windows[34].adr5.in2[1] +4433,1924,main.pedersen.segments[0].windows[34].adr5.out[0] +4434,1930,main.pedersen.segments[0].windows[34].adr5.out[1] +4435,1951,main.pedersen.segments[0].windows[34].adr5.lamda +4436,1915,main.pedersen.segments[0].windows[34].adr6.in1[0] +4437,1916,main.pedersen.segments[0].windows[34].adr6.in1[1] +4438,1924,main.pedersen.segments[0].windows[34].adr6.in2[0] +4439,1930,main.pedersen.segments[0].windows[34].adr6.in2[1] +4440,1925,main.pedersen.segments[0].windows[34].adr6.out[0] +4441,1931,main.pedersen.segments[0].windows[34].adr6.out[1] +4442,1952,main.pedersen.segments[0].windows[34].adr6.lamda +4443,1915,main.pedersen.segments[0].windows[34].adr7.in1[0] +4444,1916,main.pedersen.segments[0].windows[34].adr7.in1[1] +4445,1925,main.pedersen.segments[0].windows[34].adr7.in2[0] +4446,1931,main.pedersen.segments[0].windows[34].adr7.in2[1] +4447,1926,main.pedersen.segments[0].windows[34].adr7.out[0] +4448,1932,main.pedersen.segments[0].windows[34].adr7.out[1] +4449,1953,main.pedersen.segments[0].windows[34].adr7.lamda +4450,1915,main.pedersen.segments[0].windows[34].adr8.in1[0] +4451,1916,main.pedersen.segments[0].windows[34].adr8.in1[1] +4452,1926,main.pedersen.segments[0].windows[34].adr8.in2[0] +4453,1932,main.pedersen.segments[0].windows[34].adr8.in2[1] +4454,1919,main.pedersen.segments[0].windows[34].adr8.out[0] +4455,1920,main.pedersen.segments[0].windows[34].adr8.out[1] +4456,1954,main.pedersen.segments[0].windows[34].adr8.lamda +4476,143,main.pedersen.segments[0].windows[35].in[0] +4477,144,main.pedersen.segments[0].windows[35].in[1] +4478,145,main.pedersen.segments[0].windows[35].in[2] +4479,146,main.pedersen.segments[0].windows[35].in[3] +4480,1964,main.pedersen.segments[0].windows[35].base[0] +4481,1965,main.pedersen.segments[0].windows[35].base[1] +4482,1966,main.pedersen.segments[0].windows[35].out[0] +4483,1967,main.pedersen.segments[0].windows[35].out[1] +4484,1968,main.pedersen.segments[0].windows[35].out8[0] +4485,1969,main.pedersen.segments[0].windows[35].out8[1] +4486,1964,main.pedersen.segments[0].windows[35].mux.c[0][0] +4487,1970,main.pedersen.segments[0].windows[35].mux.c[0][1] +4488,1971,main.pedersen.segments[0].windows[35].mux.c[0][2] +4489,1972,main.pedersen.segments[0].windows[35].mux.c[0][3] +4490,1973,main.pedersen.segments[0].windows[35].mux.c[0][4] +4491,1974,main.pedersen.segments[0].windows[35].mux.c[0][5] +4492,1975,main.pedersen.segments[0].windows[35].mux.c[0][6] +4493,1968,main.pedersen.segments[0].windows[35].mux.c[0][7] +4494,1965,main.pedersen.segments[0].windows[35].mux.c[1][0] +4495,1976,main.pedersen.segments[0].windows[35].mux.c[1][1] +4496,1977,main.pedersen.segments[0].windows[35].mux.c[1][2] +4497,1978,main.pedersen.segments[0].windows[35].mux.c[1][3] +4498,1979,main.pedersen.segments[0].windows[35].mux.c[1][4] +4499,1980,main.pedersen.segments[0].windows[35].mux.c[1][5] +4500,1981,main.pedersen.segments[0].windows[35].mux.c[1][6] +4501,1969,main.pedersen.segments[0].windows[35].mux.c[1][7] +4502,143,main.pedersen.segments[0].windows[35].mux.s[0] +4503,144,main.pedersen.segments[0].windows[35].mux.s[1] +4504,145,main.pedersen.segments[0].windows[35].mux.s[2] +4505,1966,main.pedersen.segments[0].windows[35].mux.out[0] +4506,1982,main.pedersen.segments[0].windows[35].mux.out[1] +4507,1983,main.pedersen.segments[0].windows[35].mux.a210[0] +4508,1984,main.pedersen.segments[0].windows[35].mux.a210[1] +4509,1985,main.pedersen.segments[0].windows[35].mux.a21[0] +4510,1986,main.pedersen.segments[0].windows[35].mux.a21[1] +4511,1987,main.pedersen.segments[0].windows[35].mux.a20[0] +4512,1988,main.pedersen.segments[0].windows[35].mux.a20[1] +4513,3453,main.pedersen.segments[0].windows[35].mux.a2[0] +4514,3454,main.pedersen.segments[0].windows[35].mux.a2[1] +4515,1989,main.pedersen.segments[0].windows[35].mux.a10[0] +4516,1990,main.pedersen.segments[0].windows[35].mux.a10[1] +4517,1991,main.pedersen.segments[0].windows[35].mux.a1[0] +4518,1992,main.pedersen.segments[0].windows[35].mux.a1[1] +4519,1993,main.pedersen.segments[0].windows[35].mux.a0[0] +4520,1994,main.pedersen.segments[0].windows[35].mux.a0[1] +4521,1964,main.pedersen.segments[0].windows[35].mux.a[0] +4522,1965,main.pedersen.segments[0].windows[35].mux.a[1] +4523,1995,main.pedersen.segments[0].windows[35].mux.s10 +4524,1964,main.pedersen.segments[0].windows[35].dbl2.in[0] +4525,1965,main.pedersen.segments[0].windows[35].dbl2.in[1] +4526,1970,main.pedersen.segments[0].windows[35].dbl2.out[0] +4527,1976,main.pedersen.segments[0].windows[35].dbl2.out[1] +4528,1996,main.pedersen.segments[0].windows[35].dbl2.lamda +4529,1997,main.pedersen.segments[0].windows[35].dbl2.x1_2 +4530,1964,main.pedersen.segments[0].windows[35].adr3.in1[0] +4531,1965,main.pedersen.segments[0].windows[35].adr3.in1[1] +4532,1970,main.pedersen.segments[0].windows[35].adr3.in2[0] +4533,1976,main.pedersen.segments[0].windows[35].adr3.in2[1] +4534,1971,main.pedersen.segments[0].windows[35].adr3.out[0] +4535,1977,main.pedersen.segments[0].windows[35].adr3.out[1] +4536,1998,main.pedersen.segments[0].windows[35].adr3.lamda +4537,1964,main.pedersen.segments[0].windows[35].adr4.in1[0] +4538,1965,main.pedersen.segments[0].windows[35].adr4.in1[1] +4539,1971,main.pedersen.segments[0].windows[35].adr4.in2[0] +4540,1977,main.pedersen.segments[0].windows[35].adr4.in2[1] +4541,1972,main.pedersen.segments[0].windows[35].adr4.out[0] +4542,1978,main.pedersen.segments[0].windows[35].adr4.out[1] +4543,1999,main.pedersen.segments[0].windows[35].adr4.lamda +4544,1964,main.pedersen.segments[0].windows[35].adr5.in1[0] +4545,1965,main.pedersen.segments[0].windows[35].adr5.in1[1] +4546,1972,main.pedersen.segments[0].windows[35].adr5.in2[0] +4547,1978,main.pedersen.segments[0].windows[35].adr5.in2[1] +4548,1973,main.pedersen.segments[0].windows[35].adr5.out[0] +4549,1979,main.pedersen.segments[0].windows[35].adr5.out[1] +4550,2000,main.pedersen.segments[0].windows[35].adr5.lamda +4551,1964,main.pedersen.segments[0].windows[35].adr6.in1[0] +4552,1965,main.pedersen.segments[0].windows[35].adr6.in1[1] +4553,1973,main.pedersen.segments[0].windows[35].adr6.in2[0] +4554,1979,main.pedersen.segments[0].windows[35].adr6.in2[1] +4555,1974,main.pedersen.segments[0].windows[35].adr6.out[0] +4556,1980,main.pedersen.segments[0].windows[35].adr6.out[1] +4557,2001,main.pedersen.segments[0].windows[35].adr6.lamda +4558,1964,main.pedersen.segments[0].windows[35].adr7.in1[0] +4559,1965,main.pedersen.segments[0].windows[35].adr7.in1[1] +4560,1974,main.pedersen.segments[0].windows[35].adr7.in2[0] +4561,1980,main.pedersen.segments[0].windows[35].adr7.in2[1] +4562,1975,main.pedersen.segments[0].windows[35].adr7.out[0] +4563,1981,main.pedersen.segments[0].windows[35].adr7.out[1] +4564,2002,main.pedersen.segments[0].windows[35].adr7.lamda +4565,1964,main.pedersen.segments[0].windows[35].adr8.in1[0] +4566,1965,main.pedersen.segments[0].windows[35].adr8.in1[1] +4567,1975,main.pedersen.segments[0].windows[35].adr8.in2[0] +4568,1981,main.pedersen.segments[0].windows[35].adr8.in2[1] +4569,1968,main.pedersen.segments[0].windows[35].adr8.out[0] +4570,1969,main.pedersen.segments[0].windows[35].adr8.out[1] +4571,2003,main.pedersen.segments[0].windows[35].adr8.lamda +4591,147,main.pedersen.segments[0].windows[36].in[0] +4592,148,main.pedersen.segments[0].windows[36].in[1] +4593,149,main.pedersen.segments[0].windows[36].in[2] +4594,150,main.pedersen.segments[0].windows[36].in[3] +4595,2013,main.pedersen.segments[0].windows[36].base[0] +4596,2014,main.pedersen.segments[0].windows[36].base[1] +4597,2015,main.pedersen.segments[0].windows[36].out[0] +4598,2016,main.pedersen.segments[0].windows[36].out[1] +4599,2017,main.pedersen.segments[0].windows[36].out8[0] +4600,2018,main.pedersen.segments[0].windows[36].out8[1] +4601,2013,main.pedersen.segments[0].windows[36].mux.c[0][0] +4602,2019,main.pedersen.segments[0].windows[36].mux.c[0][1] +4603,2020,main.pedersen.segments[0].windows[36].mux.c[0][2] +4604,2021,main.pedersen.segments[0].windows[36].mux.c[0][3] +4605,2022,main.pedersen.segments[0].windows[36].mux.c[0][4] +4606,2023,main.pedersen.segments[0].windows[36].mux.c[0][5] +4607,2024,main.pedersen.segments[0].windows[36].mux.c[0][6] +4608,2017,main.pedersen.segments[0].windows[36].mux.c[0][7] +4609,2014,main.pedersen.segments[0].windows[36].mux.c[1][0] +4610,2025,main.pedersen.segments[0].windows[36].mux.c[1][1] +4611,2026,main.pedersen.segments[0].windows[36].mux.c[1][2] +4612,2027,main.pedersen.segments[0].windows[36].mux.c[1][3] +4613,2028,main.pedersen.segments[0].windows[36].mux.c[1][4] +4614,2029,main.pedersen.segments[0].windows[36].mux.c[1][5] +4615,2030,main.pedersen.segments[0].windows[36].mux.c[1][6] +4616,2018,main.pedersen.segments[0].windows[36].mux.c[1][7] +4617,147,main.pedersen.segments[0].windows[36].mux.s[0] +4618,148,main.pedersen.segments[0].windows[36].mux.s[1] +4619,149,main.pedersen.segments[0].windows[36].mux.s[2] +4620,2015,main.pedersen.segments[0].windows[36].mux.out[0] +4621,2031,main.pedersen.segments[0].windows[36].mux.out[1] +4622,2032,main.pedersen.segments[0].windows[36].mux.a210[0] +4623,2033,main.pedersen.segments[0].windows[36].mux.a210[1] +4624,2034,main.pedersen.segments[0].windows[36].mux.a21[0] +4625,2035,main.pedersen.segments[0].windows[36].mux.a21[1] +4626,2036,main.pedersen.segments[0].windows[36].mux.a20[0] +4627,2037,main.pedersen.segments[0].windows[36].mux.a20[1] +4628,3455,main.pedersen.segments[0].windows[36].mux.a2[0] +4629,3456,main.pedersen.segments[0].windows[36].mux.a2[1] +4630,2038,main.pedersen.segments[0].windows[36].mux.a10[0] +4631,2039,main.pedersen.segments[0].windows[36].mux.a10[1] +4632,2040,main.pedersen.segments[0].windows[36].mux.a1[0] +4633,2041,main.pedersen.segments[0].windows[36].mux.a1[1] +4634,2042,main.pedersen.segments[0].windows[36].mux.a0[0] +4635,2043,main.pedersen.segments[0].windows[36].mux.a0[1] +4636,2013,main.pedersen.segments[0].windows[36].mux.a[0] +4637,2014,main.pedersen.segments[0].windows[36].mux.a[1] +4638,2044,main.pedersen.segments[0].windows[36].mux.s10 +4639,2013,main.pedersen.segments[0].windows[36].dbl2.in[0] +4640,2014,main.pedersen.segments[0].windows[36].dbl2.in[1] +4641,2019,main.pedersen.segments[0].windows[36].dbl2.out[0] +4642,2025,main.pedersen.segments[0].windows[36].dbl2.out[1] +4643,2045,main.pedersen.segments[0].windows[36].dbl2.lamda +4644,2046,main.pedersen.segments[0].windows[36].dbl2.x1_2 +4645,2013,main.pedersen.segments[0].windows[36].adr3.in1[0] +4646,2014,main.pedersen.segments[0].windows[36].adr3.in1[1] +4647,2019,main.pedersen.segments[0].windows[36].adr3.in2[0] +4648,2025,main.pedersen.segments[0].windows[36].adr3.in2[1] +4649,2020,main.pedersen.segments[0].windows[36].adr3.out[0] +4650,2026,main.pedersen.segments[0].windows[36].adr3.out[1] +4651,2047,main.pedersen.segments[0].windows[36].adr3.lamda +4652,2013,main.pedersen.segments[0].windows[36].adr4.in1[0] +4653,2014,main.pedersen.segments[0].windows[36].adr4.in1[1] +4654,2020,main.pedersen.segments[0].windows[36].adr4.in2[0] +4655,2026,main.pedersen.segments[0].windows[36].adr4.in2[1] +4656,2021,main.pedersen.segments[0].windows[36].adr4.out[0] +4657,2027,main.pedersen.segments[0].windows[36].adr4.out[1] +4658,2048,main.pedersen.segments[0].windows[36].adr4.lamda +4659,2013,main.pedersen.segments[0].windows[36].adr5.in1[0] +4660,2014,main.pedersen.segments[0].windows[36].adr5.in1[1] +4661,2021,main.pedersen.segments[0].windows[36].adr5.in2[0] +4662,2027,main.pedersen.segments[0].windows[36].adr5.in2[1] +4663,2022,main.pedersen.segments[0].windows[36].adr5.out[0] +4664,2028,main.pedersen.segments[0].windows[36].adr5.out[1] +4665,2049,main.pedersen.segments[0].windows[36].adr5.lamda +4666,2013,main.pedersen.segments[0].windows[36].adr6.in1[0] +4667,2014,main.pedersen.segments[0].windows[36].adr6.in1[1] +4668,2022,main.pedersen.segments[0].windows[36].adr6.in2[0] +4669,2028,main.pedersen.segments[0].windows[36].adr6.in2[1] +4670,2023,main.pedersen.segments[0].windows[36].adr6.out[0] +4671,2029,main.pedersen.segments[0].windows[36].adr6.out[1] +4672,2050,main.pedersen.segments[0].windows[36].adr6.lamda +4673,2013,main.pedersen.segments[0].windows[36].adr7.in1[0] +4674,2014,main.pedersen.segments[0].windows[36].adr7.in1[1] +4675,2023,main.pedersen.segments[0].windows[36].adr7.in2[0] +4676,2029,main.pedersen.segments[0].windows[36].adr7.in2[1] +4677,2024,main.pedersen.segments[0].windows[36].adr7.out[0] +4678,2030,main.pedersen.segments[0].windows[36].adr7.out[1] +4679,2051,main.pedersen.segments[0].windows[36].adr7.lamda +4680,2013,main.pedersen.segments[0].windows[36].adr8.in1[0] +4681,2014,main.pedersen.segments[0].windows[36].adr8.in1[1] +4682,2024,main.pedersen.segments[0].windows[36].adr8.in2[0] +4683,2030,main.pedersen.segments[0].windows[36].adr8.in2[1] +4684,2017,main.pedersen.segments[0].windows[36].adr8.out[0] +4685,2018,main.pedersen.segments[0].windows[36].adr8.out[1] +4686,2052,main.pedersen.segments[0].windows[36].adr8.lamda +4706,151,main.pedersen.segments[0].windows[37].in[0] +4707,152,main.pedersen.segments[0].windows[37].in[1] +4708,153,main.pedersen.segments[0].windows[37].in[2] +4709,154,main.pedersen.segments[0].windows[37].in[3] +4710,2062,main.pedersen.segments[0].windows[37].base[0] +4711,2063,main.pedersen.segments[0].windows[37].base[1] +4712,2064,main.pedersen.segments[0].windows[37].out[0] +4713,2065,main.pedersen.segments[0].windows[37].out[1] +4714,2066,main.pedersen.segments[0].windows[37].out8[0] +4715,2067,main.pedersen.segments[0].windows[37].out8[1] +4716,2062,main.pedersen.segments[0].windows[37].mux.c[0][0] +4717,2068,main.pedersen.segments[0].windows[37].mux.c[0][1] +4718,2069,main.pedersen.segments[0].windows[37].mux.c[0][2] +4719,2070,main.pedersen.segments[0].windows[37].mux.c[0][3] +4720,2071,main.pedersen.segments[0].windows[37].mux.c[0][4] +4721,2072,main.pedersen.segments[0].windows[37].mux.c[0][5] +4722,2073,main.pedersen.segments[0].windows[37].mux.c[0][6] +4723,2066,main.pedersen.segments[0].windows[37].mux.c[0][7] +4724,2063,main.pedersen.segments[0].windows[37].mux.c[1][0] +4725,2074,main.pedersen.segments[0].windows[37].mux.c[1][1] +4726,2075,main.pedersen.segments[0].windows[37].mux.c[1][2] +4727,2076,main.pedersen.segments[0].windows[37].mux.c[1][3] +4728,2077,main.pedersen.segments[0].windows[37].mux.c[1][4] +4729,2078,main.pedersen.segments[0].windows[37].mux.c[1][5] +4730,2079,main.pedersen.segments[0].windows[37].mux.c[1][6] +4731,2067,main.pedersen.segments[0].windows[37].mux.c[1][7] +4732,151,main.pedersen.segments[0].windows[37].mux.s[0] +4733,152,main.pedersen.segments[0].windows[37].mux.s[1] +4734,153,main.pedersen.segments[0].windows[37].mux.s[2] +4735,2064,main.pedersen.segments[0].windows[37].mux.out[0] +4736,2080,main.pedersen.segments[0].windows[37].mux.out[1] +4737,2081,main.pedersen.segments[0].windows[37].mux.a210[0] +4738,2082,main.pedersen.segments[0].windows[37].mux.a210[1] +4739,2083,main.pedersen.segments[0].windows[37].mux.a21[0] +4740,2084,main.pedersen.segments[0].windows[37].mux.a21[1] +4741,2085,main.pedersen.segments[0].windows[37].mux.a20[0] +4742,2086,main.pedersen.segments[0].windows[37].mux.a20[1] +4743,3457,main.pedersen.segments[0].windows[37].mux.a2[0] +4744,3458,main.pedersen.segments[0].windows[37].mux.a2[1] +4745,2087,main.pedersen.segments[0].windows[37].mux.a10[0] +4746,2088,main.pedersen.segments[0].windows[37].mux.a10[1] +4747,2089,main.pedersen.segments[0].windows[37].mux.a1[0] +4748,2090,main.pedersen.segments[0].windows[37].mux.a1[1] +4749,2091,main.pedersen.segments[0].windows[37].mux.a0[0] +4750,2092,main.pedersen.segments[0].windows[37].mux.a0[1] +4751,2062,main.pedersen.segments[0].windows[37].mux.a[0] +4752,2063,main.pedersen.segments[0].windows[37].mux.a[1] +4753,2093,main.pedersen.segments[0].windows[37].mux.s10 +4754,2062,main.pedersen.segments[0].windows[37].dbl2.in[0] +4755,2063,main.pedersen.segments[0].windows[37].dbl2.in[1] +4756,2068,main.pedersen.segments[0].windows[37].dbl2.out[0] +4757,2074,main.pedersen.segments[0].windows[37].dbl2.out[1] +4758,2094,main.pedersen.segments[0].windows[37].dbl2.lamda +4759,2095,main.pedersen.segments[0].windows[37].dbl2.x1_2 +4760,2062,main.pedersen.segments[0].windows[37].adr3.in1[0] +4761,2063,main.pedersen.segments[0].windows[37].adr3.in1[1] +4762,2068,main.pedersen.segments[0].windows[37].adr3.in2[0] +4763,2074,main.pedersen.segments[0].windows[37].adr3.in2[1] +4764,2069,main.pedersen.segments[0].windows[37].adr3.out[0] +4765,2075,main.pedersen.segments[0].windows[37].adr3.out[1] +4766,2096,main.pedersen.segments[0].windows[37].adr3.lamda +4767,2062,main.pedersen.segments[0].windows[37].adr4.in1[0] +4768,2063,main.pedersen.segments[0].windows[37].adr4.in1[1] +4769,2069,main.pedersen.segments[0].windows[37].adr4.in2[0] +4770,2075,main.pedersen.segments[0].windows[37].adr4.in2[1] +4771,2070,main.pedersen.segments[0].windows[37].adr4.out[0] +4772,2076,main.pedersen.segments[0].windows[37].adr4.out[1] +4773,2097,main.pedersen.segments[0].windows[37].adr4.lamda +4774,2062,main.pedersen.segments[0].windows[37].adr5.in1[0] +4775,2063,main.pedersen.segments[0].windows[37].adr5.in1[1] +4776,2070,main.pedersen.segments[0].windows[37].adr5.in2[0] +4777,2076,main.pedersen.segments[0].windows[37].adr5.in2[1] +4778,2071,main.pedersen.segments[0].windows[37].adr5.out[0] +4779,2077,main.pedersen.segments[0].windows[37].adr5.out[1] +4780,2098,main.pedersen.segments[0].windows[37].adr5.lamda +4781,2062,main.pedersen.segments[0].windows[37].adr6.in1[0] +4782,2063,main.pedersen.segments[0].windows[37].adr6.in1[1] +4783,2071,main.pedersen.segments[0].windows[37].adr6.in2[0] +4784,2077,main.pedersen.segments[0].windows[37].adr6.in2[1] +4785,2072,main.pedersen.segments[0].windows[37].adr6.out[0] +4786,2078,main.pedersen.segments[0].windows[37].adr6.out[1] +4787,2099,main.pedersen.segments[0].windows[37].adr6.lamda +4788,2062,main.pedersen.segments[0].windows[37].adr7.in1[0] +4789,2063,main.pedersen.segments[0].windows[37].adr7.in1[1] +4790,2072,main.pedersen.segments[0].windows[37].adr7.in2[0] +4791,2078,main.pedersen.segments[0].windows[37].adr7.in2[1] +4792,2073,main.pedersen.segments[0].windows[37].adr7.out[0] +4793,2079,main.pedersen.segments[0].windows[37].adr7.out[1] +4794,2100,main.pedersen.segments[0].windows[37].adr7.lamda +4795,2062,main.pedersen.segments[0].windows[37].adr8.in1[0] +4796,2063,main.pedersen.segments[0].windows[37].adr8.in1[1] +4797,2073,main.pedersen.segments[0].windows[37].adr8.in2[0] +4798,2079,main.pedersen.segments[0].windows[37].adr8.in2[1] +4799,2066,main.pedersen.segments[0].windows[37].adr8.out[0] +4800,2067,main.pedersen.segments[0].windows[37].adr8.out[1] +4801,2101,main.pedersen.segments[0].windows[37].adr8.lamda +4821,155,main.pedersen.segments[0].windows[38].in[0] +4822,156,main.pedersen.segments[0].windows[38].in[1] +4823,157,main.pedersen.segments[0].windows[38].in[2] +4824,158,main.pedersen.segments[0].windows[38].in[3] +4825,2111,main.pedersen.segments[0].windows[38].base[0] +4826,2112,main.pedersen.segments[0].windows[38].base[1] +4827,2113,main.pedersen.segments[0].windows[38].out[0] +4828,2114,main.pedersen.segments[0].windows[38].out[1] +4829,2115,main.pedersen.segments[0].windows[38].out8[0] +4830,2116,main.pedersen.segments[0].windows[38].out8[1] +4831,2111,main.pedersen.segments[0].windows[38].mux.c[0][0] +4832,2117,main.pedersen.segments[0].windows[38].mux.c[0][1] +4833,2118,main.pedersen.segments[0].windows[38].mux.c[0][2] +4834,2119,main.pedersen.segments[0].windows[38].mux.c[0][3] +4835,2120,main.pedersen.segments[0].windows[38].mux.c[0][4] +4836,2121,main.pedersen.segments[0].windows[38].mux.c[0][5] +4837,2122,main.pedersen.segments[0].windows[38].mux.c[0][6] +4838,2115,main.pedersen.segments[0].windows[38].mux.c[0][7] +4839,2112,main.pedersen.segments[0].windows[38].mux.c[1][0] +4840,2123,main.pedersen.segments[0].windows[38].mux.c[1][1] +4841,2124,main.pedersen.segments[0].windows[38].mux.c[1][2] +4842,2125,main.pedersen.segments[0].windows[38].mux.c[1][3] +4843,2126,main.pedersen.segments[0].windows[38].mux.c[1][4] +4844,2127,main.pedersen.segments[0].windows[38].mux.c[1][5] +4845,2128,main.pedersen.segments[0].windows[38].mux.c[1][6] +4846,2116,main.pedersen.segments[0].windows[38].mux.c[1][7] +4847,155,main.pedersen.segments[0].windows[38].mux.s[0] +4848,156,main.pedersen.segments[0].windows[38].mux.s[1] +4849,157,main.pedersen.segments[0].windows[38].mux.s[2] +4850,2113,main.pedersen.segments[0].windows[38].mux.out[0] +4851,2129,main.pedersen.segments[0].windows[38].mux.out[1] +4852,2130,main.pedersen.segments[0].windows[38].mux.a210[0] +4853,2131,main.pedersen.segments[0].windows[38].mux.a210[1] +4854,2132,main.pedersen.segments[0].windows[38].mux.a21[0] +4855,2133,main.pedersen.segments[0].windows[38].mux.a21[1] +4856,2134,main.pedersen.segments[0].windows[38].mux.a20[0] +4857,2135,main.pedersen.segments[0].windows[38].mux.a20[1] +4858,3459,main.pedersen.segments[0].windows[38].mux.a2[0] +4859,3460,main.pedersen.segments[0].windows[38].mux.a2[1] +4860,2136,main.pedersen.segments[0].windows[38].mux.a10[0] +4861,2137,main.pedersen.segments[0].windows[38].mux.a10[1] +4862,2138,main.pedersen.segments[0].windows[38].mux.a1[0] +4863,2139,main.pedersen.segments[0].windows[38].mux.a1[1] +4864,2140,main.pedersen.segments[0].windows[38].mux.a0[0] +4865,2141,main.pedersen.segments[0].windows[38].mux.a0[1] +4866,2111,main.pedersen.segments[0].windows[38].mux.a[0] +4867,2112,main.pedersen.segments[0].windows[38].mux.a[1] +4868,2142,main.pedersen.segments[0].windows[38].mux.s10 +4869,2111,main.pedersen.segments[0].windows[38].dbl2.in[0] +4870,2112,main.pedersen.segments[0].windows[38].dbl2.in[1] +4871,2117,main.pedersen.segments[0].windows[38].dbl2.out[0] +4872,2123,main.pedersen.segments[0].windows[38].dbl2.out[1] +4873,2143,main.pedersen.segments[0].windows[38].dbl2.lamda +4874,2144,main.pedersen.segments[0].windows[38].dbl2.x1_2 +4875,2111,main.pedersen.segments[0].windows[38].adr3.in1[0] +4876,2112,main.pedersen.segments[0].windows[38].adr3.in1[1] +4877,2117,main.pedersen.segments[0].windows[38].adr3.in2[0] +4878,2123,main.pedersen.segments[0].windows[38].adr3.in2[1] +4879,2118,main.pedersen.segments[0].windows[38].adr3.out[0] +4880,2124,main.pedersen.segments[0].windows[38].adr3.out[1] +4881,2145,main.pedersen.segments[0].windows[38].adr3.lamda +4882,2111,main.pedersen.segments[0].windows[38].adr4.in1[0] +4883,2112,main.pedersen.segments[0].windows[38].adr4.in1[1] +4884,2118,main.pedersen.segments[0].windows[38].adr4.in2[0] +4885,2124,main.pedersen.segments[0].windows[38].adr4.in2[1] +4886,2119,main.pedersen.segments[0].windows[38].adr4.out[0] +4887,2125,main.pedersen.segments[0].windows[38].adr4.out[1] +4888,2146,main.pedersen.segments[0].windows[38].adr4.lamda +4889,2111,main.pedersen.segments[0].windows[38].adr5.in1[0] +4890,2112,main.pedersen.segments[0].windows[38].adr5.in1[1] +4891,2119,main.pedersen.segments[0].windows[38].adr5.in2[0] +4892,2125,main.pedersen.segments[0].windows[38].adr5.in2[1] +4893,2120,main.pedersen.segments[0].windows[38].adr5.out[0] +4894,2126,main.pedersen.segments[0].windows[38].adr5.out[1] +4895,2147,main.pedersen.segments[0].windows[38].adr5.lamda +4896,2111,main.pedersen.segments[0].windows[38].adr6.in1[0] +4897,2112,main.pedersen.segments[0].windows[38].adr6.in1[1] +4898,2120,main.pedersen.segments[0].windows[38].adr6.in2[0] +4899,2126,main.pedersen.segments[0].windows[38].adr6.in2[1] +4900,2121,main.pedersen.segments[0].windows[38].adr6.out[0] +4901,2127,main.pedersen.segments[0].windows[38].adr6.out[1] +4902,2148,main.pedersen.segments[0].windows[38].adr6.lamda +4903,2111,main.pedersen.segments[0].windows[38].adr7.in1[0] +4904,2112,main.pedersen.segments[0].windows[38].adr7.in1[1] +4905,2121,main.pedersen.segments[0].windows[38].adr7.in2[0] +4906,2127,main.pedersen.segments[0].windows[38].adr7.in2[1] +4907,2122,main.pedersen.segments[0].windows[38].adr7.out[0] +4908,2128,main.pedersen.segments[0].windows[38].adr7.out[1] +4909,2149,main.pedersen.segments[0].windows[38].adr7.lamda +4910,2111,main.pedersen.segments[0].windows[38].adr8.in1[0] +4911,2112,main.pedersen.segments[0].windows[38].adr8.in1[1] +4912,2122,main.pedersen.segments[0].windows[38].adr8.in2[0] +4913,2128,main.pedersen.segments[0].windows[38].adr8.in2[1] +4914,2115,main.pedersen.segments[0].windows[38].adr8.out[0] +4915,2116,main.pedersen.segments[0].windows[38].adr8.out[1] +4916,2150,main.pedersen.segments[0].windows[38].adr8.lamda +4936,159,main.pedersen.segments[0].windows[39].in[0] +4937,160,main.pedersen.segments[0].windows[39].in[1] +4938,161,main.pedersen.segments[0].windows[39].in[2] +4939,162,main.pedersen.segments[0].windows[39].in[3] +4940,2160,main.pedersen.segments[0].windows[39].base[0] +4941,2161,main.pedersen.segments[0].windows[39].base[1] +4942,2162,main.pedersen.segments[0].windows[39].out[0] +4943,2163,main.pedersen.segments[0].windows[39].out[1] +4944,2164,main.pedersen.segments[0].windows[39].out8[0] +4945,2165,main.pedersen.segments[0].windows[39].out8[1] +4946,2160,main.pedersen.segments[0].windows[39].mux.c[0][0] +4947,2166,main.pedersen.segments[0].windows[39].mux.c[0][1] +4948,2167,main.pedersen.segments[0].windows[39].mux.c[0][2] +4949,2168,main.pedersen.segments[0].windows[39].mux.c[0][3] +4950,2169,main.pedersen.segments[0].windows[39].mux.c[0][4] +4951,2170,main.pedersen.segments[0].windows[39].mux.c[0][5] +4952,2171,main.pedersen.segments[0].windows[39].mux.c[0][6] +4953,2164,main.pedersen.segments[0].windows[39].mux.c[0][7] +4954,2161,main.pedersen.segments[0].windows[39].mux.c[1][0] +4955,2172,main.pedersen.segments[0].windows[39].mux.c[1][1] +4956,2173,main.pedersen.segments[0].windows[39].mux.c[1][2] +4957,2174,main.pedersen.segments[0].windows[39].mux.c[1][3] +4958,2175,main.pedersen.segments[0].windows[39].mux.c[1][4] +4959,2176,main.pedersen.segments[0].windows[39].mux.c[1][5] +4960,2177,main.pedersen.segments[0].windows[39].mux.c[1][6] +4961,2165,main.pedersen.segments[0].windows[39].mux.c[1][7] +4962,159,main.pedersen.segments[0].windows[39].mux.s[0] +4963,160,main.pedersen.segments[0].windows[39].mux.s[1] +4964,161,main.pedersen.segments[0].windows[39].mux.s[2] +4965,2162,main.pedersen.segments[0].windows[39].mux.out[0] +4966,2178,main.pedersen.segments[0].windows[39].mux.out[1] +4967,2179,main.pedersen.segments[0].windows[39].mux.a210[0] +4968,2180,main.pedersen.segments[0].windows[39].mux.a210[1] +4969,2181,main.pedersen.segments[0].windows[39].mux.a21[0] +4970,2182,main.pedersen.segments[0].windows[39].mux.a21[1] +4971,2183,main.pedersen.segments[0].windows[39].mux.a20[0] +4972,2184,main.pedersen.segments[0].windows[39].mux.a20[1] +4973,3461,main.pedersen.segments[0].windows[39].mux.a2[0] +4974,3462,main.pedersen.segments[0].windows[39].mux.a2[1] +4975,2185,main.pedersen.segments[0].windows[39].mux.a10[0] +4976,2186,main.pedersen.segments[0].windows[39].mux.a10[1] +4977,2187,main.pedersen.segments[0].windows[39].mux.a1[0] +4978,2188,main.pedersen.segments[0].windows[39].mux.a1[1] +4979,2189,main.pedersen.segments[0].windows[39].mux.a0[0] +4980,2190,main.pedersen.segments[0].windows[39].mux.a0[1] +4981,2160,main.pedersen.segments[0].windows[39].mux.a[0] +4982,2161,main.pedersen.segments[0].windows[39].mux.a[1] +4983,2191,main.pedersen.segments[0].windows[39].mux.s10 +4984,2160,main.pedersen.segments[0].windows[39].dbl2.in[0] +4985,2161,main.pedersen.segments[0].windows[39].dbl2.in[1] +4986,2166,main.pedersen.segments[0].windows[39].dbl2.out[0] +4987,2172,main.pedersen.segments[0].windows[39].dbl2.out[1] +4988,2192,main.pedersen.segments[0].windows[39].dbl2.lamda +4989,2193,main.pedersen.segments[0].windows[39].dbl2.x1_2 +4990,2160,main.pedersen.segments[0].windows[39].adr3.in1[0] +4991,2161,main.pedersen.segments[0].windows[39].adr3.in1[1] +4992,2166,main.pedersen.segments[0].windows[39].adr3.in2[0] +4993,2172,main.pedersen.segments[0].windows[39].adr3.in2[1] +4994,2167,main.pedersen.segments[0].windows[39].adr3.out[0] +4995,2173,main.pedersen.segments[0].windows[39].adr3.out[1] +4996,2194,main.pedersen.segments[0].windows[39].adr3.lamda +4997,2160,main.pedersen.segments[0].windows[39].adr4.in1[0] +4998,2161,main.pedersen.segments[0].windows[39].adr4.in1[1] +4999,2167,main.pedersen.segments[0].windows[39].adr4.in2[0] +5000,2173,main.pedersen.segments[0].windows[39].adr4.in2[1] +5001,2168,main.pedersen.segments[0].windows[39].adr4.out[0] +5002,2174,main.pedersen.segments[0].windows[39].adr4.out[1] +5003,2195,main.pedersen.segments[0].windows[39].adr4.lamda +5004,2160,main.pedersen.segments[0].windows[39].adr5.in1[0] +5005,2161,main.pedersen.segments[0].windows[39].adr5.in1[1] +5006,2168,main.pedersen.segments[0].windows[39].adr5.in2[0] +5007,2174,main.pedersen.segments[0].windows[39].adr5.in2[1] +5008,2169,main.pedersen.segments[0].windows[39].adr5.out[0] +5009,2175,main.pedersen.segments[0].windows[39].adr5.out[1] +5010,2196,main.pedersen.segments[0].windows[39].adr5.lamda +5011,2160,main.pedersen.segments[0].windows[39].adr6.in1[0] +5012,2161,main.pedersen.segments[0].windows[39].adr6.in1[1] +5013,2169,main.pedersen.segments[0].windows[39].adr6.in2[0] +5014,2175,main.pedersen.segments[0].windows[39].adr6.in2[1] +5015,2170,main.pedersen.segments[0].windows[39].adr6.out[0] +5016,2176,main.pedersen.segments[0].windows[39].adr6.out[1] +5017,2197,main.pedersen.segments[0].windows[39].adr6.lamda +5018,2160,main.pedersen.segments[0].windows[39].adr7.in1[0] +5019,2161,main.pedersen.segments[0].windows[39].adr7.in1[1] +5020,2170,main.pedersen.segments[0].windows[39].adr7.in2[0] +5021,2176,main.pedersen.segments[0].windows[39].adr7.in2[1] +5022,2171,main.pedersen.segments[0].windows[39].adr7.out[0] +5023,2177,main.pedersen.segments[0].windows[39].adr7.out[1] +5024,2198,main.pedersen.segments[0].windows[39].adr7.lamda +5025,2160,main.pedersen.segments[0].windows[39].adr8.in1[0] +5026,2161,main.pedersen.segments[0].windows[39].adr8.in1[1] +5027,2171,main.pedersen.segments[0].windows[39].adr8.in2[0] +5028,2177,main.pedersen.segments[0].windows[39].adr8.in2[1] +5029,2164,main.pedersen.segments[0].windows[39].adr8.out[0] +5030,2165,main.pedersen.segments[0].windows[39].adr8.out[1] +5031,2199,main.pedersen.segments[0].windows[39].adr8.lamda +5051,163,main.pedersen.segments[0].windows[40].in[0] +5052,164,main.pedersen.segments[0].windows[40].in[1] +5053,165,main.pedersen.segments[0].windows[40].in[2] +5054,166,main.pedersen.segments[0].windows[40].in[3] +5055,2209,main.pedersen.segments[0].windows[40].base[0] +5056,2210,main.pedersen.segments[0].windows[40].base[1] +5057,2211,main.pedersen.segments[0].windows[40].out[0] +5058,2212,main.pedersen.segments[0].windows[40].out[1] +5059,2213,main.pedersen.segments[0].windows[40].out8[0] +5060,2214,main.pedersen.segments[0].windows[40].out8[1] +5061,2209,main.pedersen.segments[0].windows[40].mux.c[0][0] +5062,2215,main.pedersen.segments[0].windows[40].mux.c[0][1] +5063,2216,main.pedersen.segments[0].windows[40].mux.c[0][2] +5064,2217,main.pedersen.segments[0].windows[40].mux.c[0][3] +5065,2218,main.pedersen.segments[0].windows[40].mux.c[0][4] +5066,2219,main.pedersen.segments[0].windows[40].mux.c[0][5] +5067,2220,main.pedersen.segments[0].windows[40].mux.c[0][6] +5068,2213,main.pedersen.segments[0].windows[40].mux.c[0][7] +5069,2210,main.pedersen.segments[0].windows[40].mux.c[1][0] +5070,2221,main.pedersen.segments[0].windows[40].mux.c[1][1] +5071,2222,main.pedersen.segments[0].windows[40].mux.c[1][2] +5072,2223,main.pedersen.segments[0].windows[40].mux.c[1][3] +5073,2224,main.pedersen.segments[0].windows[40].mux.c[1][4] +5074,2225,main.pedersen.segments[0].windows[40].mux.c[1][5] +5075,2226,main.pedersen.segments[0].windows[40].mux.c[1][6] +5076,2214,main.pedersen.segments[0].windows[40].mux.c[1][7] +5077,163,main.pedersen.segments[0].windows[40].mux.s[0] +5078,164,main.pedersen.segments[0].windows[40].mux.s[1] +5079,165,main.pedersen.segments[0].windows[40].mux.s[2] +5080,2211,main.pedersen.segments[0].windows[40].mux.out[0] +5081,2227,main.pedersen.segments[0].windows[40].mux.out[1] +5082,2228,main.pedersen.segments[0].windows[40].mux.a210[0] +5083,2229,main.pedersen.segments[0].windows[40].mux.a210[1] +5084,2230,main.pedersen.segments[0].windows[40].mux.a21[0] +5085,2231,main.pedersen.segments[0].windows[40].mux.a21[1] +5086,2232,main.pedersen.segments[0].windows[40].mux.a20[0] +5087,2233,main.pedersen.segments[0].windows[40].mux.a20[1] +5088,3463,main.pedersen.segments[0].windows[40].mux.a2[0] +5089,3464,main.pedersen.segments[0].windows[40].mux.a2[1] +5090,2234,main.pedersen.segments[0].windows[40].mux.a10[0] +5091,2235,main.pedersen.segments[0].windows[40].mux.a10[1] +5092,2236,main.pedersen.segments[0].windows[40].mux.a1[0] +5093,2237,main.pedersen.segments[0].windows[40].mux.a1[1] +5094,2238,main.pedersen.segments[0].windows[40].mux.a0[0] +5095,2239,main.pedersen.segments[0].windows[40].mux.a0[1] +5096,2209,main.pedersen.segments[0].windows[40].mux.a[0] +5097,2210,main.pedersen.segments[0].windows[40].mux.a[1] +5098,2240,main.pedersen.segments[0].windows[40].mux.s10 +5099,2209,main.pedersen.segments[0].windows[40].dbl2.in[0] +5100,2210,main.pedersen.segments[0].windows[40].dbl2.in[1] +5101,2215,main.pedersen.segments[0].windows[40].dbl2.out[0] +5102,2221,main.pedersen.segments[0].windows[40].dbl2.out[1] +5103,2241,main.pedersen.segments[0].windows[40].dbl2.lamda +5104,2242,main.pedersen.segments[0].windows[40].dbl2.x1_2 +5105,2209,main.pedersen.segments[0].windows[40].adr3.in1[0] +5106,2210,main.pedersen.segments[0].windows[40].adr3.in1[1] +5107,2215,main.pedersen.segments[0].windows[40].adr3.in2[0] +5108,2221,main.pedersen.segments[0].windows[40].adr3.in2[1] +5109,2216,main.pedersen.segments[0].windows[40].adr3.out[0] +5110,2222,main.pedersen.segments[0].windows[40].adr3.out[1] +5111,2243,main.pedersen.segments[0].windows[40].adr3.lamda +5112,2209,main.pedersen.segments[0].windows[40].adr4.in1[0] +5113,2210,main.pedersen.segments[0].windows[40].adr4.in1[1] +5114,2216,main.pedersen.segments[0].windows[40].adr4.in2[0] +5115,2222,main.pedersen.segments[0].windows[40].adr4.in2[1] +5116,2217,main.pedersen.segments[0].windows[40].adr4.out[0] +5117,2223,main.pedersen.segments[0].windows[40].adr4.out[1] +5118,2244,main.pedersen.segments[0].windows[40].adr4.lamda +5119,2209,main.pedersen.segments[0].windows[40].adr5.in1[0] +5120,2210,main.pedersen.segments[0].windows[40].adr5.in1[1] +5121,2217,main.pedersen.segments[0].windows[40].adr5.in2[0] +5122,2223,main.pedersen.segments[0].windows[40].adr5.in2[1] +5123,2218,main.pedersen.segments[0].windows[40].adr5.out[0] +5124,2224,main.pedersen.segments[0].windows[40].adr5.out[1] +5125,2245,main.pedersen.segments[0].windows[40].adr5.lamda +5126,2209,main.pedersen.segments[0].windows[40].adr6.in1[0] +5127,2210,main.pedersen.segments[0].windows[40].adr6.in1[1] +5128,2218,main.pedersen.segments[0].windows[40].adr6.in2[0] +5129,2224,main.pedersen.segments[0].windows[40].adr6.in2[1] +5130,2219,main.pedersen.segments[0].windows[40].adr6.out[0] +5131,2225,main.pedersen.segments[0].windows[40].adr6.out[1] +5132,2246,main.pedersen.segments[0].windows[40].adr6.lamda +5133,2209,main.pedersen.segments[0].windows[40].adr7.in1[0] +5134,2210,main.pedersen.segments[0].windows[40].adr7.in1[1] +5135,2219,main.pedersen.segments[0].windows[40].adr7.in2[0] +5136,2225,main.pedersen.segments[0].windows[40].adr7.in2[1] +5137,2220,main.pedersen.segments[0].windows[40].adr7.out[0] +5138,2226,main.pedersen.segments[0].windows[40].adr7.out[1] +5139,2247,main.pedersen.segments[0].windows[40].adr7.lamda +5140,2209,main.pedersen.segments[0].windows[40].adr8.in1[0] +5141,2210,main.pedersen.segments[0].windows[40].adr8.in1[1] +5142,2220,main.pedersen.segments[0].windows[40].adr8.in2[0] +5143,2226,main.pedersen.segments[0].windows[40].adr8.in2[1] +5144,2213,main.pedersen.segments[0].windows[40].adr8.out[0] +5145,2214,main.pedersen.segments[0].windows[40].adr8.out[1] +5146,2248,main.pedersen.segments[0].windows[40].adr8.lamda +5166,167,main.pedersen.segments[0].windows[41].in[0] +5167,168,main.pedersen.segments[0].windows[41].in[1] +5168,169,main.pedersen.segments[0].windows[41].in[2] +5169,170,main.pedersen.segments[0].windows[41].in[3] +5170,2258,main.pedersen.segments[0].windows[41].base[0] +5171,2259,main.pedersen.segments[0].windows[41].base[1] +5172,2260,main.pedersen.segments[0].windows[41].out[0] +5173,2261,main.pedersen.segments[0].windows[41].out[1] +5174,2262,main.pedersen.segments[0].windows[41].out8[0] +5175,2263,main.pedersen.segments[0].windows[41].out8[1] +5176,2258,main.pedersen.segments[0].windows[41].mux.c[0][0] +5177,2264,main.pedersen.segments[0].windows[41].mux.c[0][1] +5178,2265,main.pedersen.segments[0].windows[41].mux.c[0][2] +5179,2266,main.pedersen.segments[0].windows[41].mux.c[0][3] +5180,2267,main.pedersen.segments[0].windows[41].mux.c[0][4] +5181,2268,main.pedersen.segments[0].windows[41].mux.c[0][5] +5182,2269,main.pedersen.segments[0].windows[41].mux.c[0][6] +5183,2262,main.pedersen.segments[0].windows[41].mux.c[0][7] +5184,2259,main.pedersen.segments[0].windows[41].mux.c[1][0] +5185,2270,main.pedersen.segments[0].windows[41].mux.c[1][1] +5186,2271,main.pedersen.segments[0].windows[41].mux.c[1][2] +5187,2272,main.pedersen.segments[0].windows[41].mux.c[1][3] +5188,2273,main.pedersen.segments[0].windows[41].mux.c[1][4] +5189,2274,main.pedersen.segments[0].windows[41].mux.c[1][5] +5190,2275,main.pedersen.segments[0].windows[41].mux.c[1][6] +5191,2263,main.pedersen.segments[0].windows[41].mux.c[1][7] +5192,167,main.pedersen.segments[0].windows[41].mux.s[0] +5193,168,main.pedersen.segments[0].windows[41].mux.s[1] +5194,169,main.pedersen.segments[0].windows[41].mux.s[2] +5195,2260,main.pedersen.segments[0].windows[41].mux.out[0] +5196,2276,main.pedersen.segments[0].windows[41].mux.out[1] +5197,2277,main.pedersen.segments[0].windows[41].mux.a210[0] +5198,2278,main.pedersen.segments[0].windows[41].mux.a210[1] +5199,2279,main.pedersen.segments[0].windows[41].mux.a21[0] +5200,2280,main.pedersen.segments[0].windows[41].mux.a21[1] +5201,2281,main.pedersen.segments[0].windows[41].mux.a20[0] +5202,2282,main.pedersen.segments[0].windows[41].mux.a20[1] +5203,3465,main.pedersen.segments[0].windows[41].mux.a2[0] +5204,3466,main.pedersen.segments[0].windows[41].mux.a2[1] +5205,2283,main.pedersen.segments[0].windows[41].mux.a10[0] +5206,2284,main.pedersen.segments[0].windows[41].mux.a10[1] +5207,2285,main.pedersen.segments[0].windows[41].mux.a1[0] +5208,2286,main.pedersen.segments[0].windows[41].mux.a1[1] +5209,2287,main.pedersen.segments[0].windows[41].mux.a0[0] +5210,2288,main.pedersen.segments[0].windows[41].mux.a0[1] +5211,2258,main.pedersen.segments[0].windows[41].mux.a[0] +5212,2259,main.pedersen.segments[0].windows[41].mux.a[1] +5213,2289,main.pedersen.segments[0].windows[41].mux.s10 +5214,2258,main.pedersen.segments[0].windows[41].dbl2.in[0] +5215,2259,main.pedersen.segments[0].windows[41].dbl2.in[1] +5216,2264,main.pedersen.segments[0].windows[41].dbl2.out[0] +5217,2270,main.pedersen.segments[0].windows[41].dbl2.out[1] +5218,2290,main.pedersen.segments[0].windows[41].dbl2.lamda +5219,2291,main.pedersen.segments[0].windows[41].dbl2.x1_2 +5220,2258,main.pedersen.segments[0].windows[41].adr3.in1[0] +5221,2259,main.pedersen.segments[0].windows[41].adr3.in1[1] +5222,2264,main.pedersen.segments[0].windows[41].adr3.in2[0] +5223,2270,main.pedersen.segments[0].windows[41].adr3.in2[1] +5224,2265,main.pedersen.segments[0].windows[41].adr3.out[0] +5225,2271,main.pedersen.segments[0].windows[41].adr3.out[1] +5226,2292,main.pedersen.segments[0].windows[41].adr3.lamda +5227,2258,main.pedersen.segments[0].windows[41].adr4.in1[0] +5228,2259,main.pedersen.segments[0].windows[41].adr4.in1[1] +5229,2265,main.pedersen.segments[0].windows[41].adr4.in2[0] +5230,2271,main.pedersen.segments[0].windows[41].adr4.in2[1] +5231,2266,main.pedersen.segments[0].windows[41].adr4.out[0] +5232,2272,main.pedersen.segments[0].windows[41].adr4.out[1] +5233,2293,main.pedersen.segments[0].windows[41].adr4.lamda +5234,2258,main.pedersen.segments[0].windows[41].adr5.in1[0] +5235,2259,main.pedersen.segments[0].windows[41].adr5.in1[1] +5236,2266,main.pedersen.segments[0].windows[41].adr5.in2[0] +5237,2272,main.pedersen.segments[0].windows[41].adr5.in2[1] +5238,2267,main.pedersen.segments[0].windows[41].adr5.out[0] +5239,2273,main.pedersen.segments[0].windows[41].adr5.out[1] +5240,2294,main.pedersen.segments[0].windows[41].adr5.lamda +5241,2258,main.pedersen.segments[0].windows[41].adr6.in1[0] +5242,2259,main.pedersen.segments[0].windows[41].adr6.in1[1] +5243,2267,main.pedersen.segments[0].windows[41].adr6.in2[0] +5244,2273,main.pedersen.segments[0].windows[41].adr6.in2[1] +5245,2268,main.pedersen.segments[0].windows[41].adr6.out[0] +5246,2274,main.pedersen.segments[0].windows[41].adr6.out[1] +5247,2295,main.pedersen.segments[0].windows[41].adr6.lamda +5248,2258,main.pedersen.segments[0].windows[41].adr7.in1[0] +5249,2259,main.pedersen.segments[0].windows[41].adr7.in1[1] +5250,2268,main.pedersen.segments[0].windows[41].adr7.in2[0] +5251,2274,main.pedersen.segments[0].windows[41].adr7.in2[1] +5252,2269,main.pedersen.segments[0].windows[41].adr7.out[0] +5253,2275,main.pedersen.segments[0].windows[41].adr7.out[1] +5254,2296,main.pedersen.segments[0].windows[41].adr7.lamda +5255,2258,main.pedersen.segments[0].windows[41].adr8.in1[0] +5256,2259,main.pedersen.segments[0].windows[41].adr8.in1[1] +5257,2269,main.pedersen.segments[0].windows[41].adr8.in2[0] +5258,2275,main.pedersen.segments[0].windows[41].adr8.in2[1] +5259,2262,main.pedersen.segments[0].windows[41].adr8.out[0] +5260,2263,main.pedersen.segments[0].windows[41].adr8.out[1] +5261,2297,main.pedersen.segments[0].windows[41].adr8.lamda +5281,171,main.pedersen.segments[0].windows[42].in[0] +5282,172,main.pedersen.segments[0].windows[42].in[1] +5283,173,main.pedersen.segments[0].windows[42].in[2] +5284,174,main.pedersen.segments[0].windows[42].in[3] +5285,2307,main.pedersen.segments[0].windows[42].base[0] +5286,2308,main.pedersen.segments[0].windows[42].base[1] +5287,2309,main.pedersen.segments[0].windows[42].out[0] +5288,2310,main.pedersen.segments[0].windows[42].out[1] +5289,2311,main.pedersen.segments[0].windows[42].out8[0] +5290,2312,main.pedersen.segments[0].windows[42].out8[1] +5291,2307,main.pedersen.segments[0].windows[42].mux.c[0][0] +5292,2313,main.pedersen.segments[0].windows[42].mux.c[0][1] +5293,2314,main.pedersen.segments[0].windows[42].mux.c[0][2] +5294,2315,main.pedersen.segments[0].windows[42].mux.c[0][3] +5295,2316,main.pedersen.segments[0].windows[42].mux.c[0][4] +5296,2317,main.pedersen.segments[0].windows[42].mux.c[0][5] +5297,2318,main.pedersen.segments[0].windows[42].mux.c[0][6] +5298,2311,main.pedersen.segments[0].windows[42].mux.c[0][7] +5299,2308,main.pedersen.segments[0].windows[42].mux.c[1][0] +5300,2319,main.pedersen.segments[0].windows[42].mux.c[1][1] +5301,2320,main.pedersen.segments[0].windows[42].mux.c[1][2] +5302,2321,main.pedersen.segments[0].windows[42].mux.c[1][3] +5303,2322,main.pedersen.segments[0].windows[42].mux.c[1][4] +5304,2323,main.pedersen.segments[0].windows[42].mux.c[1][5] +5305,2324,main.pedersen.segments[0].windows[42].mux.c[1][6] +5306,2312,main.pedersen.segments[0].windows[42].mux.c[1][7] +5307,171,main.pedersen.segments[0].windows[42].mux.s[0] +5308,172,main.pedersen.segments[0].windows[42].mux.s[1] +5309,173,main.pedersen.segments[0].windows[42].mux.s[2] +5310,2309,main.pedersen.segments[0].windows[42].mux.out[0] +5311,2325,main.pedersen.segments[0].windows[42].mux.out[1] +5312,2326,main.pedersen.segments[0].windows[42].mux.a210[0] +5313,2327,main.pedersen.segments[0].windows[42].mux.a210[1] +5314,2328,main.pedersen.segments[0].windows[42].mux.a21[0] +5315,2329,main.pedersen.segments[0].windows[42].mux.a21[1] +5316,2330,main.pedersen.segments[0].windows[42].mux.a20[0] +5317,2331,main.pedersen.segments[0].windows[42].mux.a20[1] +5318,3467,main.pedersen.segments[0].windows[42].mux.a2[0] +5319,3468,main.pedersen.segments[0].windows[42].mux.a2[1] +5320,2332,main.pedersen.segments[0].windows[42].mux.a10[0] +5321,2333,main.pedersen.segments[0].windows[42].mux.a10[1] +5322,2334,main.pedersen.segments[0].windows[42].mux.a1[0] +5323,2335,main.pedersen.segments[0].windows[42].mux.a1[1] +5324,2336,main.pedersen.segments[0].windows[42].mux.a0[0] +5325,2337,main.pedersen.segments[0].windows[42].mux.a0[1] +5326,2307,main.pedersen.segments[0].windows[42].mux.a[0] +5327,2308,main.pedersen.segments[0].windows[42].mux.a[1] +5328,2338,main.pedersen.segments[0].windows[42].mux.s10 +5329,2307,main.pedersen.segments[0].windows[42].dbl2.in[0] +5330,2308,main.pedersen.segments[0].windows[42].dbl2.in[1] +5331,2313,main.pedersen.segments[0].windows[42].dbl2.out[0] +5332,2319,main.pedersen.segments[0].windows[42].dbl2.out[1] +5333,2339,main.pedersen.segments[0].windows[42].dbl2.lamda +5334,2340,main.pedersen.segments[0].windows[42].dbl2.x1_2 +5335,2307,main.pedersen.segments[0].windows[42].adr3.in1[0] +5336,2308,main.pedersen.segments[0].windows[42].adr3.in1[1] +5337,2313,main.pedersen.segments[0].windows[42].adr3.in2[0] +5338,2319,main.pedersen.segments[0].windows[42].adr3.in2[1] +5339,2314,main.pedersen.segments[0].windows[42].adr3.out[0] +5340,2320,main.pedersen.segments[0].windows[42].adr3.out[1] +5341,2341,main.pedersen.segments[0].windows[42].adr3.lamda +5342,2307,main.pedersen.segments[0].windows[42].adr4.in1[0] +5343,2308,main.pedersen.segments[0].windows[42].adr4.in1[1] +5344,2314,main.pedersen.segments[0].windows[42].adr4.in2[0] +5345,2320,main.pedersen.segments[0].windows[42].adr4.in2[1] +5346,2315,main.pedersen.segments[0].windows[42].adr4.out[0] +5347,2321,main.pedersen.segments[0].windows[42].adr4.out[1] +5348,2342,main.pedersen.segments[0].windows[42].adr4.lamda +5349,2307,main.pedersen.segments[0].windows[42].adr5.in1[0] +5350,2308,main.pedersen.segments[0].windows[42].adr5.in1[1] +5351,2315,main.pedersen.segments[0].windows[42].adr5.in2[0] +5352,2321,main.pedersen.segments[0].windows[42].adr5.in2[1] +5353,2316,main.pedersen.segments[0].windows[42].adr5.out[0] +5354,2322,main.pedersen.segments[0].windows[42].adr5.out[1] +5355,2343,main.pedersen.segments[0].windows[42].adr5.lamda +5356,2307,main.pedersen.segments[0].windows[42].adr6.in1[0] +5357,2308,main.pedersen.segments[0].windows[42].adr6.in1[1] +5358,2316,main.pedersen.segments[0].windows[42].adr6.in2[0] +5359,2322,main.pedersen.segments[0].windows[42].adr6.in2[1] +5360,2317,main.pedersen.segments[0].windows[42].adr6.out[0] +5361,2323,main.pedersen.segments[0].windows[42].adr6.out[1] +5362,2344,main.pedersen.segments[0].windows[42].adr6.lamda +5363,2307,main.pedersen.segments[0].windows[42].adr7.in1[0] +5364,2308,main.pedersen.segments[0].windows[42].adr7.in1[1] +5365,2317,main.pedersen.segments[0].windows[42].adr7.in2[0] +5366,2323,main.pedersen.segments[0].windows[42].adr7.in2[1] +5367,2318,main.pedersen.segments[0].windows[42].adr7.out[0] +5368,2324,main.pedersen.segments[0].windows[42].adr7.out[1] +5369,2345,main.pedersen.segments[0].windows[42].adr7.lamda +5370,2307,main.pedersen.segments[0].windows[42].adr8.in1[0] +5371,2308,main.pedersen.segments[0].windows[42].adr8.in1[1] +5372,2318,main.pedersen.segments[0].windows[42].adr8.in2[0] +5373,2324,main.pedersen.segments[0].windows[42].adr8.in2[1] +5374,2311,main.pedersen.segments[0].windows[42].adr8.out[0] +5375,2312,main.pedersen.segments[0].windows[42].adr8.out[1] +5376,2346,main.pedersen.segments[0].windows[42].adr8.lamda +5396,175,main.pedersen.segments[0].windows[43].in[0] +5397,176,main.pedersen.segments[0].windows[43].in[1] +5398,177,main.pedersen.segments[0].windows[43].in[2] +5399,178,main.pedersen.segments[0].windows[43].in[3] +5400,2356,main.pedersen.segments[0].windows[43].base[0] +5401,2357,main.pedersen.segments[0].windows[43].base[1] +5402,2358,main.pedersen.segments[0].windows[43].out[0] +5403,2359,main.pedersen.segments[0].windows[43].out[1] +5404,2360,main.pedersen.segments[0].windows[43].out8[0] +5405,2361,main.pedersen.segments[0].windows[43].out8[1] +5406,2356,main.pedersen.segments[0].windows[43].mux.c[0][0] +5407,2362,main.pedersen.segments[0].windows[43].mux.c[0][1] +5408,2363,main.pedersen.segments[0].windows[43].mux.c[0][2] +5409,2364,main.pedersen.segments[0].windows[43].mux.c[0][3] +5410,2365,main.pedersen.segments[0].windows[43].mux.c[0][4] +5411,2366,main.pedersen.segments[0].windows[43].mux.c[0][5] +5412,2367,main.pedersen.segments[0].windows[43].mux.c[0][6] +5413,2360,main.pedersen.segments[0].windows[43].mux.c[0][7] +5414,2357,main.pedersen.segments[0].windows[43].mux.c[1][0] +5415,2368,main.pedersen.segments[0].windows[43].mux.c[1][1] +5416,2369,main.pedersen.segments[0].windows[43].mux.c[1][2] +5417,2370,main.pedersen.segments[0].windows[43].mux.c[1][3] +5418,2371,main.pedersen.segments[0].windows[43].mux.c[1][4] +5419,2372,main.pedersen.segments[0].windows[43].mux.c[1][5] +5420,2373,main.pedersen.segments[0].windows[43].mux.c[1][6] +5421,2361,main.pedersen.segments[0].windows[43].mux.c[1][7] +5422,175,main.pedersen.segments[0].windows[43].mux.s[0] +5423,176,main.pedersen.segments[0].windows[43].mux.s[1] +5424,177,main.pedersen.segments[0].windows[43].mux.s[2] +5425,2358,main.pedersen.segments[0].windows[43].mux.out[0] +5426,2374,main.pedersen.segments[0].windows[43].mux.out[1] +5427,2375,main.pedersen.segments[0].windows[43].mux.a210[0] +5428,2376,main.pedersen.segments[0].windows[43].mux.a210[1] +5429,2377,main.pedersen.segments[0].windows[43].mux.a21[0] +5430,2378,main.pedersen.segments[0].windows[43].mux.a21[1] +5431,2379,main.pedersen.segments[0].windows[43].mux.a20[0] +5432,2380,main.pedersen.segments[0].windows[43].mux.a20[1] +5433,3469,main.pedersen.segments[0].windows[43].mux.a2[0] +5434,3470,main.pedersen.segments[0].windows[43].mux.a2[1] +5435,2381,main.pedersen.segments[0].windows[43].mux.a10[0] +5436,2382,main.pedersen.segments[0].windows[43].mux.a10[1] +5437,2383,main.pedersen.segments[0].windows[43].mux.a1[0] +5438,2384,main.pedersen.segments[0].windows[43].mux.a1[1] +5439,2385,main.pedersen.segments[0].windows[43].mux.a0[0] +5440,2386,main.pedersen.segments[0].windows[43].mux.a0[1] +5441,2356,main.pedersen.segments[0].windows[43].mux.a[0] +5442,2357,main.pedersen.segments[0].windows[43].mux.a[1] +5443,2387,main.pedersen.segments[0].windows[43].mux.s10 +5444,2356,main.pedersen.segments[0].windows[43].dbl2.in[0] +5445,2357,main.pedersen.segments[0].windows[43].dbl2.in[1] +5446,2362,main.pedersen.segments[0].windows[43].dbl2.out[0] +5447,2368,main.pedersen.segments[0].windows[43].dbl2.out[1] +5448,2388,main.pedersen.segments[0].windows[43].dbl2.lamda +5449,2389,main.pedersen.segments[0].windows[43].dbl2.x1_2 +5450,2356,main.pedersen.segments[0].windows[43].adr3.in1[0] +5451,2357,main.pedersen.segments[0].windows[43].adr3.in1[1] +5452,2362,main.pedersen.segments[0].windows[43].adr3.in2[0] +5453,2368,main.pedersen.segments[0].windows[43].adr3.in2[1] +5454,2363,main.pedersen.segments[0].windows[43].adr3.out[0] +5455,2369,main.pedersen.segments[0].windows[43].adr3.out[1] +5456,2390,main.pedersen.segments[0].windows[43].adr3.lamda +5457,2356,main.pedersen.segments[0].windows[43].adr4.in1[0] +5458,2357,main.pedersen.segments[0].windows[43].adr4.in1[1] +5459,2363,main.pedersen.segments[0].windows[43].adr4.in2[0] +5460,2369,main.pedersen.segments[0].windows[43].adr4.in2[1] +5461,2364,main.pedersen.segments[0].windows[43].adr4.out[0] +5462,2370,main.pedersen.segments[0].windows[43].adr4.out[1] +5463,2391,main.pedersen.segments[0].windows[43].adr4.lamda +5464,2356,main.pedersen.segments[0].windows[43].adr5.in1[0] +5465,2357,main.pedersen.segments[0].windows[43].adr5.in1[1] +5466,2364,main.pedersen.segments[0].windows[43].adr5.in2[0] +5467,2370,main.pedersen.segments[0].windows[43].adr5.in2[1] +5468,2365,main.pedersen.segments[0].windows[43].adr5.out[0] +5469,2371,main.pedersen.segments[0].windows[43].adr5.out[1] +5470,2392,main.pedersen.segments[0].windows[43].adr5.lamda +5471,2356,main.pedersen.segments[0].windows[43].adr6.in1[0] +5472,2357,main.pedersen.segments[0].windows[43].adr6.in1[1] +5473,2365,main.pedersen.segments[0].windows[43].adr6.in2[0] +5474,2371,main.pedersen.segments[0].windows[43].adr6.in2[1] +5475,2366,main.pedersen.segments[0].windows[43].adr6.out[0] +5476,2372,main.pedersen.segments[0].windows[43].adr6.out[1] +5477,2393,main.pedersen.segments[0].windows[43].adr6.lamda +5478,2356,main.pedersen.segments[0].windows[43].adr7.in1[0] +5479,2357,main.pedersen.segments[0].windows[43].adr7.in1[1] +5480,2366,main.pedersen.segments[0].windows[43].adr7.in2[0] +5481,2372,main.pedersen.segments[0].windows[43].adr7.in2[1] +5482,2367,main.pedersen.segments[0].windows[43].adr7.out[0] +5483,2373,main.pedersen.segments[0].windows[43].adr7.out[1] +5484,2394,main.pedersen.segments[0].windows[43].adr7.lamda +5485,2356,main.pedersen.segments[0].windows[43].adr8.in1[0] +5486,2357,main.pedersen.segments[0].windows[43].adr8.in1[1] +5487,2367,main.pedersen.segments[0].windows[43].adr8.in2[0] +5488,2373,main.pedersen.segments[0].windows[43].adr8.in2[1] +5489,2360,main.pedersen.segments[0].windows[43].adr8.out[0] +5490,2361,main.pedersen.segments[0].windows[43].adr8.out[1] +5491,2395,main.pedersen.segments[0].windows[43].adr8.lamda +5511,179,main.pedersen.segments[0].windows[44].in[0] +5512,180,main.pedersen.segments[0].windows[44].in[1] +5513,181,main.pedersen.segments[0].windows[44].in[2] +5514,182,main.pedersen.segments[0].windows[44].in[3] +5515,2405,main.pedersen.segments[0].windows[44].base[0] +5516,2406,main.pedersen.segments[0].windows[44].base[1] +5517,2407,main.pedersen.segments[0].windows[44].out[0] +5518,2408,main.pedersen.segments[0].windows[44].out[1] +5519,2409,main.pedersen.segments[0].windows[44].out8[0] +5520,2410,main.pedersen.segments[0].windows[44].out8[1] +5521,2405,main.pedersen.segments[0].windows[44].mux.c[0][0] +5522,2411,main.pedersen.segments[0].windows[44].mux.c[0][1] +5523,2412,main.pedersen.segments[0].windows[44].mux.c[0][2] +5524,2413,main.pedersen.segments[0].windows[44].mux.c[0][3] +5525,2414,main.pedersen.segments[0].windows[44].mux.c[0][4] +5526,2415,main.pedersen.segments[0].windows[44].mux.c[0][5] +5527,2416,main.pedersen.segments[0].windows[44].mux.c[0][6] +5528,2409,main.pedersen.segments[0].windows[44].mux.c[0][7] +5529,2406,main.pedersen.segments[0].windows[44].mux.c[1][0] +5530,2417,main.pedersen.segments[0].windows[44].mux.c[1][1] +5531,2418,main.pedersen.segments[0].windows[44].mux.c[1][2] +5532,2419,main.pedersen.segments[0].windows[44].mux.c[1][3] +5533,2420,main.pedersen.segments[0].windows[44].mux.c[1][4] +5534,2421,main.pedersen.segments[0].windows[44].mux.c[1][5] +5535,2422,main.pedersen.segments[0].windows[44].mux.c[1][6] +5536,2410,main.pedersen.segments[0].windows[44].mux.c[1][7] +5537,179,main.pedersen.segments[0].windows[44].mux.s[0] +5538,180,main.pedersen.segments[0].windows[44].mux.s[1] +5539,181,main.pedersen.segments[0].windows[44].mux.s[2] +5540,2407,main.pedersen.segments[0].windows[44].mux.out[0] +5541,2423,main.pedersen.segments[0].windows[44].mux.out[1] +5542,2424,main.pedersen.segments[0].windows[44].mux.a210[0] +5543,2425,main.pedersen.segments[0].windows[44].mux.a210[1] +5544,2426,main.pedersen.segments[0].windows[44].mux.a21[0] +5545,2427,main.pedersen.segments[0].windows[44].mux.a21[1] +5546,2428,main.pedersen.segments[0].windows[44].mux.a20[0] +5547,2429,main.pedersen.segments[0].windows[44].mux.a20[1] +5548,3471,main.pedersen.segments[0].windows[44].mux.a2[0] +5549,3472,main.pedersen.segments[0].windows[44].mux.a2[1] +5550,2430,main.pedersen.segments[0].windows[44].mux.a10[0] +5551,2431,main.pedersen.segments[0].windows[44].mux.a10[1] +5552,2432,main.pedersen.segments[0].windows[44].mux.a1[0] +5553,2433,main.pedersen.segments[0].windows[44].mux.a1[1] +5554,2434,main.pedersen.segments[0].windows[44].mux.a0[0] +5555,2435,main.pedersen.segments[0].windows[44].mux.a0[1] +5556,2405,main.pedersen.segments[0].windows[44].mux.a[0] +5557,2406,main.pedersen.segments[0].windows[44].mux.a[1] +5558,2436,main.pedersen.segments[0].windows[44].mux.s10 +5559,2405,main.pedersen.segments[0].windows[44].dbl2.in[0] +5560,2406,main.pedersen.segments[0].windows[44].dbl2.in[1] +5561,2411,main.pedersen.segments[0].windows[44].dbl2.out[0] +5562,2417,main.pedersen.segments[0].windows[44].dbl2.out[1] +5563,2437,main.pedersen.segments[0].windows[44].dbl2.lamda +5564,2438,main.pedersen.segments[0].windows[44].dbl2.x1_2 +5565,2405,main.pedersen.segments[0].windows[44].adr3.in1[0] +5566,2406,main.pedersen.segments[0].windows[44].adr3.in1[1] +5567,2411,main.pedersen.segments[0].windows[44].adr3.in2[0] +5568,2417,main.pedersen.segments[0].windows[44].adr3.in2[1] +5569,2412,main.pedersen.segments[0].windows[44].adr3.out[0] +5570,2418,main.pedersen.segments[0].windows[44].adr3.out[1] +5571,2439,main.pedersen.segments[0].windows[44].adr3.lamda +5572,2405,main.pedersen.segments[0].windows[44].adr4.in1[0] +5573,2406,main.pedersen.segments[0].windows[44].adr4.in1[1] +5574,2412,main.pedersen.segments[0].windows[44].adr4.in2[0] +5575,2418,main.pedersen.segments[0].windows[44].adr4.in2[1] +5576,2413,main.pedersen.segments[0].windows[44].adr4.out[0] +5577,2419,main.pedersen.segments[0].windows[44].adr4.out[1] +5578,2440,main.pedersen.segments[0].windows[44].adr4.lamda +5579,2405,main.pedersen.segments[0].windows[44].adr5.in1[0] +5580,2406,main.pedersen.segments[0].windows[44].adr5.in1[1] +5581,2413,main.pedersen.segments[0].windows[44].adr5.in2[0] +5582,2419,main.pedersen.segments[0].windows[44].adr5.in2[1] +5583,2414,main.pedersen.segments[0].windows[44].adr5.out[0] +5584,2420,main.pedersen.segments[0].windows[44].adr5.out[1] +5585,2441,main.pedersen.segments[0].windows[44].adr5.lamda +5586,2405,main.pedersen.segments[0].windows[44].adr6.in1[0] +5587,2406,main.pedersen.segments[0].windows[44].adr6.in1[1] +5588,2414,main.pedersen.segments[0].windows[44].adr6.in2[0] +5589,2420,main.pedersen.segments[0].windows[44].adr6.in2[1] +5590,2415,main.pedersen.segments[0].windows[44].adr6.out[0] +5591,2421,main.pedersen.segments[0].windows[44].adr6.out[1] +5592,2442,main.pedersen.segments[0].windows[44].adr6.lamda +5593,2405,main.pedersen.segments[0].windows[44].adr7.in1[0] +5594,2406,main.pedersen.segments[0].windows[44].adr7.in1[1] +5595,2415,main.pedersen.segments[0].windows[44].adr7.in2[0] +5596,2421,main.pedersen.segments[0].windows[44].adr7.in2[1] +5597,2416,main.pedersen.segments[0].windows[44].adr7.out[0] +5598,2422,main.pedersen.segments[0].windows[44].adr7.out[1] +5599,2443,main.pedersen.segments[0].windows[44].adr7.lamda +5600,2405,main.pedersen.segments[0].windows[44].adr8.in1[0] +5601,2406,main.pedersen.segments[0].windows[44].adr8.in1[1] +5602,2416,main.pedersen.segments[0].windows[44].adr8.in2[0] +5603,2422,main.pedersen.segments[0].windows[44].adr8.in2[1] +5604,2409,main.pedersen.segments[0].windows[44].adr8.out[0] +5605,2410,main.pedersen.segments[0].windows[44].adr8.out[1] +5606,2444,main.pedersen.segments[0].windows[44].adr8.lamda +5626,183,main.pedersen.segments[0].windows[45].in[0] +5627,184,main.pedersen.segments[0].windows[45].in[1] +5628,185,main.pedersen.segments[0].windows[45].in[2] +5629,186,main.pedersen.segments[0].windows[45].in[3] +5630,2454,main.pedersen.segments[0].windows[45].base[0] +5631,2455,main.pedersen.segments[0].windows[45].base[1] +5632,2456,main.pedersen.segments[0].windows[45].out[0] +5633,2457,main.pedersen.segments[0].windows[45].out[1] +5634,2458,main.pedersen.segments[0].windows[45].out8[0] +5635,2459,main.pedersen.segments[0].windows[45].out8[1] +5636,2454,main.pedersen.segments[0].windows[45].mux.c[0][0] +5637,2460,main.pedersen.segments[0].windows[45].mux.c[0][1] +5638,2461,main.pedersen.segments[0].windows[45].mux.c[0][2] +5639,2462,main.pedersen.segments[0].windows[45].mux.c[0][3] +5640,2463,main.pedersen.segments[0].windows[45].mux.c[0][4] +5641,2464,main.pedersen.segments[0].windows[45].mux.c[0][5] +5642,2465,main.pedersen.segments[0].windows[45].mux.c[0][6] +5643,2458,main.pedersen.segments[0].windows[45].mux.c[0][7] +5644,2455,main.pedersen.segments[0].windows[45].mux.c[1][0] +5645,2466,main.pedersen.segments[0].windows[45].mux.c[1][1] +5646,2467,main.pedersen.segments[0].windows[45].mux.c[1][2] +5647,2468,main.pedersen.segments[0].windows[45].mux.c[1][3] +5648,2469,main.pedersen.segments[0].windows[45].mux.c[1][4] +5649,2470,main.pedersen.segments[0].windows[45].mux.c[1][5] +5650,2471,main.pedersen.segments[0].windows[45].mux.c[1][6] +5651,2459,main.pedersen.segments[0].windows[45].mux.c[1][7] +5652,183,main.pedersen.segments[0].windows[45].mux.s[0] +5653,184,main.pedersen.segments[0].windows[45].mux.s[1] +5654,185,main.pedersen.segments[0].windows[45].mux.s[2] +5655,2456,main.pedersen.segments[0].windows[45].mux.out[0] +5656,2472,main.pedersen.segments[0].windows[45].mux.out[1] +5657,2473,main.pedersen.segments[0].windows[45].mux.a210[0] +5658,2474,main.pedersen.segments[0].windows[45].mux.a210[1] +5659,2475,main.pedersen.segments[0].windows[45].mux.a21[0] +5660,2476,main.pedersen.segments[0].windows[45].mux.a21[1] +5661,2477,main.pedersen.segments[0].windows[45].mux.a20[0] +5662,2478,main.pedersen.segments[0].windows[45].mux.a20[1] +5663,3473,main.pedersen.segments[0].windows[45].mux.a2[0] +5664,3474,main.pedersen.segments[0].windows[45].mux.a2[1] +5665,2479,main.pedersen.segments[0].windows[45].mux.a10[0] +5666,2480,main.pedersen.segments[0].windows[45].mux.a10[1] +5667,2481,main.pedersen.segments[0].windows[45].mux.a1[0] +5668,2482,main.pedersen.segments[0].windows[45].mux.a1[1] +5669,2483,main.pedersen.segments[0].windows[45].mux.a0[0] +5670,2484,main.pedersen.segments[0].windows[45].mux.a0[1] +5671,2454,main.pedersen.segments[0].windows[45].mux.a[0] +5672,2455,main.pedersen.segments[0].windows[45].mux.a[1] +5673,2485,main.pedersen.segments[0].windows[45].mux.s10 +5674,2454,main.pedersen.segments[0].windows[45].dbl2.in[0] +5675,2455,main.pedersen.segments[0].windows[45].dbl2.in[1] +5676,2460,main.pedersen.segments[0].windows[45].dbl2.out[0] +5677,2466,main.pedersen.segments[0].windows[45].dbl2.out[1] +5678,2486,main.pedersen.segments[0].windows[45].dbl2.lamda +5679,2487,main.pedersen.segments[0].windows[45].dbl2.x1_2 +5680,2454,main.pedersen.segments[0].windows[45].adr3.in1[0] +5681,2455,main.pedersen.segments[0].windows[45].adr3.in1[1] +5682,2460,main.pedersen.segments[0].windows[45].adr3.in2[0] +5683,2466,main.pedersen.segments[0].windows[45].adr3.in2[1] +5684,2461,main.pedersen.segments[0].windows[45].adr3.out[0] +5685,2467,main.pedersen.segments[0].windows[45].adr3.out[1] +5686,2488,main.pedersen.segments[0].windows[45].adr3.lamda +5687,2454,main.pedersen.segments[0].windows[45].adr4.in1[0] +5688,2455,main.pedersen.segments[0].windows[45].adr4.in1[1] +5689,2461,main.pedersen.segments[0].windows[45].adr4.in2[0] +5690,2467,main.pedersen.segments[0].windows[45].adr4.in2[1] +5691,2462,main.pedersen.segments[0].windows[45].adr4.out[0] +5692,2468,main.pedersen.segments[0].windows[45].adr4.out[1] +5693,2489,main.pedersen.segments[0].windows[45].adr4.lamda +5694,2454,main.pedersen.segments[0].windows[45].adr5.in1[0] +5695,2455,main.pedersen.segments[0].windows[45].adr5.in1[1] +5696,2462,main.pedersen.segments[0].windows[45].adr5.in2[0] +5697,2468,main.pedersen.segments[0].windows[45].adr5.in2[1] +5698,2463,main.pedersen.segments[0].windows[45].adr5.out[0] +5699,2469,main.pedersen.segments[0].windows[45].adr5.out[1] +5700,2490,main.pedersen.segments[0].windows[45].adr5.lamda +5701,2454,main.pedersen.segments[0].windows[45].adr6.in1[0] +5702,2455,main.pedersen.segments[0].windows[45].adr6.in1[1] +5703,2463,main.pedersen.segments[0].windows[45].adr6.in2[0] +5704,2469,main.pedersen.segments[0].windows[45].adr6.in2[1] +5705,2464,main.pedersen.segments[0].windows[45].adr6.out[0] +5706,2470,main.pedersen.segments[0].windows[45].adr6.out[1] +5707,2491,main.pedersen.segments[0].windows[45].adr6.lamda +5708,2454,main.pedersen.segments[0].windows[45].adr7.in1[0] +5709,2455,main.pedersen.segments[0].windows[45].adr7.in1[1] +5710,2464,main.pedersen.segments[0].windows[45].adr7.in2[0] +5711,2470,main.pedersen.segments[0].windows[45].adr7.in2[1] +5712,2465,main.pedersen.segments[0].windows[45].adr7.out[0] +5713,2471,main.pedersen.segments[0].windows[45].adr7.out[1] +5714,2492,main.pedersen.segments[0].windows[45].adr7.lamda +5715,2454,main.pedersen.segments[0].windows[45].adr8.in1[0] +5716,2455,main.pedersen.segments[0].windows[45].adr8.in1[1] +5717,2465,main.pedersen.segments[0].windows[45].adr8.in2[0] +5718,2471,main.pedersen.segments[0].windows[45].adr8.in2[1] +5719,2458,main.pedersen.segments[0].windows[45].adr8.out[0] +5720,2459,main.pedersen.segments[0].windows[45].adr8.out[1] +5721,2493,main.pedersen.segments[0].windows[45].adr8.lamda +5741,187,main.pedersen.segments[0].windows[46].in[0] +5742,188,main.pedersen.segments[0].windows[46].in[1] +5743,189,main.pedersen.segments[0].windows[46].in[2] +5744,190,main.pedersen.segments[0].windows[46].in[3] +5745,2503,main.pedersen.segments[0].windows[46].base[0] +5746,2504,main.pedersen.segments[0].windows[46].base[1] +5747,2505,main.pedersen.segments[0].windows[46].out[0] +5748,2506,main.pedersen.segments[0].windows[46].out[1] +5749,2507,main.pedersen.segments[0].windows[46].out8[0] +5750,2508,main.pedersen.segments[0].windows[46].out8[1] +5751,2503,main.pedersen.segments[0].windows[46].mux.c[0][0] +5752,2509,main.pedersen.segments[0].windows[46].mux.c[0][1] +5753,2510,main.pedersen.segments[0].windows[46].mux.c[0][2] +5754,2511,main.pedersen.segments[0].windows[46].mux.c[0][3] +5755,2512,main.pedersen.segments[0].windows[46].mux.c[0][4] +5756,2513,main.pedersen.segments[0].windows[46].mux.c[0][5] +5757,2514,main.pedersen.segments[0].windows[46].mux.c[0][6] +5758,2507,main.pedersen.segments[0].windows[46].mux.c[0][7] +5759,2504,main.pedersen.segments[0].windows[46].mux.c[1][0] +5760,2515,main.pedersen.segments[0].windows[46].mux.c[1][1] +5761,2516,main.pedersen.segments[0].windows[46].mux.c[1][2] +5762,2517,main.pedersen.segments[0].windows[46].mux.c[1][3] +5763,2518,main.pedersen.segments[0].windows[46].mux.c[1][4] +5764,2519,main.pedersen.segments[0].windows[46].mux.c[1][5] +5765,2520,main.pedersen.segments[0].windows[46].mux.c[1][6] +5766,2508,main.pedersen.segments[0].windows[46].mux.c[1][7] +5767,187,main.pedersen.segments[0].windows[46].mux.s[0] +5768,188,main.pedersen.segments[0].windows[46].mux.s[1] +5769,189,main.pedersen.segments[0].windows[46].mux.s[2] +5770,2505,main.pedersen.segments[0].windows[46].mux.out[0] +5771,2521,main.pedersen.segments[0].windows[46].mux.out[1] +5772,2522,main.pedersen.segments[0].windows[46].mux.a210[0] +5773,2523,main.pedersen.segments[0].windows[46].mux.a210[1] +5774,2524,main.pedersen.segments[0].windows[46].mux.a21[0] +5775,2525,main.pedersen.segments[0].windows[46].mux.a21[1] +5776,2526,main.pedersen.segments[0].windows[46].mux.a20[0] +5777,2527,main.pedersen.segments[0].windows[46].mux.a20[1] +5778,3475,main.pedersen.segments[0].windows[46].mux.a2[0] +5779,3476,main.pedersen.segments[0].windows[46].mux.a2[1] +5780,2528,main.pedersen.segments[0].windows[46].mux.a10[0] +5781,2529,main.pedersen.segments[0].windows[46].mux.a10[1] +5782,2530,main.pedersen.segments[0].windows[46].mux.a1[0] +5783,2531,main.pedersen.segments[0].windows[46].mux.a1[1] +5784,2532,main.pedersen.segments[0].windows[46].mux.a0[0] +5785,2533,main.pedersen.segments[0].windows[46].mux.a0[1] +5786,2503,main.pedersen.segments[0].windows[46].mux.a[0] +5787,2504,main.pedersen.segments[0].windows[46].mux.a[1] +5788,2534,main.pedersen.segments[0].windows[46].mux.s10 +5789,2503,main.pedersen.segments[0].windows[46].dbl2.in[0] +5790,2504,main.pedersen.segments[0].windows[46].dbl2.in[1] +5791,2509,main.pedersen.segments[0].windows[46].dbl2.out[0] +5792,2515,main.pedersen.segments[0].windows[46].dbl2.out[1] +5793,2535,main.pedersen.segments[0].windows[46].dbl2.lamda +5794,2536,main.pedersen.segments[0].windows[46].dbl2.x1_2 +5795,2503,main.pedersen.segments[0].windows[46].adr3.in1[0] +5796,2504,main.pedersen.segments[0].windows[46].adr3.in1[1] +5797,2509,main.pedersen.segments[0].windows[46].adr3.in2[0] +5798,2515,main.pedersen.segments[0].windows[46].adr3.in2[1] +5799,2510,main.pedersen.segments[0].windows[46].adr3.out[0] +5800,2516,main.pedersen.segments[0].windows[46].adr3.out[1] +5801,2537,main.pedersen.segments[0].windows[46].adr3.lamda +5802,2503,main.pedersen.segments[0].windows[46].adr4.in1[0] +5803,2504,main.pedersen.segments[0].windows[46].adr4.in1[1] +5804,2510,main.pedersen.segments[0].windows[46].adr4.in2[0] +5805,2516,main.pedersen.segments[0].windows[46].adr4.in2[1] +5806,2511,main.pedersen.segments[0].windows[46].adr4.out[0] +5807,2517,main.pedersen.segments[0].windows[46].adr4.out[1] +5808,2538,main.pedersen.segments[0].windows[46].adr4.lamda +5809,2503,main.pedersen.segments[0].windows[46].adr5.in1[0] +5810,2504,main.pedersen.segments[0].windows[46].adr5.in1[1] +5811,2511,main.pedersen.segments[0].windows[46].adr5.in2[0] +5812,2517,main.pedersen.segments[0].windows[46].adr5.in2[1] +5813,2512,main.pedersen.segments[0].windows[46].adr5.out[0] +5814,2518,main.pedersen.segments[0].windows[46].adr5.out[1] +5815,2539,main.pedersen.segments[0].windows[46].adr5.lamda +5816,2503,main.pedersen.segments[0].windows[46].adr6.in1[0] +5817,2504,main.pedersen.segments[0].windows[46].adr6.in1[1] +5818,2512,main.pedersen.segments[0].windows[46].adr6.in2[0] +5819,2518,main.pedersen.segments[0].windows[46].adr6.in2[1] +5820,2513,main.pedersen.segments[0].windows[46].adr6.out[0] +5821,2519,main.pedersen.segments[0].windows[46].adr6.out[1] +5822,2540,main.pedersen.segments[0].windows[46].adr6.lamda +5823,2503,main.pedersen.segments[0].windows[46].adr7.in1[0] +5824,2504,main.pedersen.segments[0].windows[46].adr7.in1[1] +5825,2513,main.pedersen.segments[0].windows[46].adr7.in2[0] +5826,2519,main.pedersen.segments[0].windows[46].adr7.in2[1] +5827,2514,main.pedersen.segments[0].windows[46].adr7.out[0] +5828,2520,main.pedersen.segments[0].windows[46].adr7.out[1] +5829,2541,main.pedersen.segments[0].windows[46].adr7.lamda +5830,2503,main.pedersen.segments[0].windows[46].adr8.in1[0] +5831,2504,main.pedersen.segments[0].windows[46].adr8.in1[1] +5832,2514,main.pedersen.segments[0].windows[46].adr8.in2[0] +5833,2520,main.pedersen.segments[0].windows[46].adr8.in2[1] +5834,2507,main.pedersen.segments[0].windows[46].adr8.out[0] +5835,2508,main.pedersen.segments[0].windows[46].adr8.out[1] +5836,2542,main.pedersen.segments[0].windows[46].adr8.lamda +5856,191,main.pedersen.segments[0].windows[47].in[0] +5857,192,main.pedersen.segments[0].windows[47].in[1] +5858,193,main.pedersen.segments[0].windows[47].in[2] +5859,194,main.pedersen.segments[0].windows[47].in[3] +5860,2552,main.pedersen.segments[0].windows[47].base[0] +5861,2553,main.pedersen.segments[0].windows[47].base[1] +5862,2554,main.pedersen.segments[0].windows[47].out[0] +5863,2555,main.pedersen.segments[0].windows[47].out[1] +5864,2556,main.pedersen.segments[0].windows[47].out8[0] +5865,2557,main.pedersen.segments[0].windows[47].out8[1] +5866,2552,main.pedersen.segments[0].windows[47].mux.c[0][0] +5867,2558,main.pedersen.segments[0].windows[47].mux.c[0][1] +5868,2559,main.pedersen.segments[0].windows[47].mux.c[0][2] +5869,2560,main.pedersen.segments[0].windows[47].mux.c[0][3] +5870,2561,main.pedersen.segments[0].windows[47].mux.c[0][4] +5871,2562,main.pedersen.segments[0].windows[47].mux.c[0][5] +5872,2563,main.pedersen.segments[0].windows[47].mux.c[0][6] +5873,2556,main.pedersen.segments[0].windows[47].mux.c[0][7] +5874,2553,main.pedersen.segments[0].windows[47].mux.c[1][0] +5875,2564,main.pedersen.segments[0].windows[47].mux.c[1][1] +5876,2565,main.pedersen.segments[0].windows[47].mux.c[1][2] +5877,2566,main.pedersen.segments[0].windows[47].mux.c[1][3] +5878,2567,main.pedersen.segments[0].windows[47].mux.c[1][4] +5879,2568,main.pedersen.segments[0].windows[47].mux.c[1][5] +5880,2569,main.pedersen.segments[0].windows[47].mux.c[1][6] +5881,2557,main.pedersen.segments[0].windows[47].mux.c[1][7] +5882,191,main.pedersen.segments[0].windows[47].mux.s[0] +5883,192,main.pedersen.segments[0].windows[47].mux.s[1] +5884,193,main.pedersen.segments[0].windows[47].mux.s[2] +5885,2554,main.pedersen.segments[0].windows[47].mux.out[0] +5886,2570,main.pedersen.segments[0].windows[47].mux.out[1] +5887,2571,main.pedersen.segments[0].windows[47].mux.a210[0] +5888,2572,main.pedersen.segments[0].windows[47].mux.a210[1] +5889,2573,main.pedersen.segments[0].windows[47].mux.a21[0] +5890,2574,main.pedersen.segments[0].windows[47].mux.a21[1] +5891,2575,main.pedersen.segments[0].windows[47].mux.a20[0] +5892,2576,main.pedersen.segments[0].windows[47].mux.a20[1] +5893,3477,main.pedersen.segments[0].windows[47].mux.a2[0] +5894,3478,main.pedersen.segments[0].windows[47].mux.a2[1] +5895,2577,main.pedersen.segments[0].windows[47].mux.a10[0] +5896,2578,main.pedersen.segments[0].windows[47].mux.a10[1] +5897,2579,main.pedersen.segments[0].windows[47].mux.a1[0] +5898,2580,main.pedersen.segments[0].windows[47].mux.a1[1] +5899,2581,main.pedersen.segments[0].windows[47].mux.a0[0] +5900,2582,main.pedersen.segments[0].windows[47].mux.a0[1] +5901,2552,main.pedersen.segments[0].windows[47].mux.a[0] +5902,2553,main.pedersen.segments[0].windows[47].mux.a[1] +5903,2583,main.pedersen.segments[0].windows[47].mux.s10 +5904,2552,main.pedersen.segments[0].windows[47].dbl2.in[0] +5905,2553,main.pedersen.segments[0].windows[47].dbl2.in[1] +5906,2558,main.pedersen.segments[0].windows[47].dbl2.out[0] +5907,2564,main.pedersen.segments[0].windows[47].dbl2.out[1] +5908,2584,main.pedersen.segments[0].windows[47].dbl2.lamda +5909,2585,main.pedersen.segments[0].windows[47].dbl2.x1_2 +5910,2552,main.pedersen.segments[0].windows[47].adr3.in1[0] +5911,2553,main.pedersen.segments[0].windows[47].adr3.in1[1] +5912,2558,main.pedersen.segments[0].windows[47].adr3.in2[0] +5913,2564,main.pedersen.segments[0].windows[47].adr3.in2[1] +5914,2559,main.pedersen.segments[0].windows[47].adr3.out[0] +5915,2565,main.pedersen.segments[0].windows[47].adr3.out[1] +5916,2586,main.pedersen.segments[0].windows[47].adr3.lamda +5917,2552,main.pedersen.segments[0].windows[47].adr4.in1[0] +5918,2553,main.pedersen.segments[0].windows[47].adr4.in1[1] +5919,2559,main.pedersen.segments[0].windows[47].adr4.in2[0] +5920,2565,main.pedersen.segments[0].windows[47].adr4.in2[1] +5921,2560,main.pedersen.segments[0].windows[47].adr4.out[0] +5922,2566,main.pedersen.segments[0].windows[47].adr4.out[1] +5923,2587,main.pedersen.segments[0].windows[47].adr4.lamda +5924,2552,main.pedersen.segments[0].windows[47].adr5.in1[0] +5925,2553,main.pedersen.segments[0].windows[47].adr5.in1[1] +5926,2560,main.pedersen.segments[0].windows[47].adr5.in2[0] +5927,2566,main.pedersen.segments[0].windows[47].adr5.in2[1] +5928,2561,main.pedersen.segments[0].windows[47].adr5.out[0] +5929,2567,main.pedersen.segments[0].windows[47].adr5.out[1] +5930,2588,main.pedersen.segments[0].windows[47].adr5.lamda +5931,2552,main.pedersen.segments[0].windows[47].adr6.in1[0] +5932,2553,main.pedersen.segments[0].windows[47].adr6.in1[1] +5933,2561,main.pedersen.segments[0].windows[47].adr6.in2[0] +5934,2567,main.pedersen.segments[0].windows[47].adr6.in2[1] +5935,2562,main.pedersen.segments[0].windows[47].adr6.out[0] +5936,2568,main.pedersen.segments[0].windows[47].adr6.out[1] +5937,2589,main.pedersen.segments[0].windows[47].adr6.lamda +5938,2552,main.pedersen.segments[0].windows[47].adr7.in1[0] +5939,2553,main.pedersen.segments[0].windows[47].adr7.in1[1] +5940,2562,main.pedersen.segments[0].windows[47].adr7.in2[0] +5941,2568,main.pedersen.segments[0].windows[47].adr7.in2[1] +5942,2563,main.pedersen.segments[0].windows[47].adr7.out[0] +5943,2569,main.pedersen.segments[0].windows[47].adr7.out[1] +5944,2590,main.pedersen.segments[0].windows[47].adr7.lamda +5945,2552,main.pedersen.segments[0].windows[47].adr8.in1[0] +5946,2553,main.pedersen.segments[0].windows[47].adr8.in1[1] +5947,2563,main.pedersen.segments[0].windows[47].adr8.in2[0] +5948,2569,main.pedersen.segments[0].windows[47].adr8.in2[1] +5949,2556,main.pedersen.segments[0].windows[47].adr8.out[0] +5950,2557,main.pedersen.segments[0].windows[47].adr8.out[1] +5951,2591,main.pedersen.segments[0].windows[47].adr8.lamda +5971,195,main.pedersen.segments[0].windows[48].in[0] +5972,196,main.pedersen.segments[0].windows[48].in[1] +5973,197,main.pedersen.segments[0].windows[48].in[2] +5974,198,main.pedersen.segments[0].windows[48].in[3] +5975,2601,main.pedersen.segments[0].windows[48].base[0] +5976,2602,main.pedersen.segments[0].windows[48].base[1] +5977,2603,main.pedersen.segments[0].windows[48].out[0] +5978,2604,main.pedersen.segments[0].windows[48].out[1] +5979,2605,main.pedersen.segments[0].windows[48].out8[0] +5980,2606,main.pedersen.segments[0].windows[48].out8[1] +5981,2601,main.pedersen.segments[0].windows[48].mux.c[0][0] +5982,2607,main.pedersen.segments[0].windows[48].mux.c[0][1] +5983,2608,main.pedersen.segments[0].windows[48].mux.c[0][2] +5984,2609,main.pedersen.segments[0].windows[48].mux.c[0][3] +5985,2610,main.pedersen.segments[0].windows[48].mux.c[0][4] +5986,2611,main.pedersen.segments[0].windows[48].mux.c[0][5] +5987,2612,main.pedersen.segments[0].windows[48].mux.c[0][6] +5988,2605,main.pedersen.segments[0].windows[48].mux.c[0][7] +5989,2602,main.pedersen.segments[0].windows[48].mux.c[1][0] +5990,2613,main.pedersen.segments[0].windows[48].mux.c[1][1] +5991,2614,main.pedersen.segments[0].windows[48].mux.c[1][2] +5992,2615,main.pedersen.segments[0].windows[48].mux.c[1][3] +5993,2616,main.pedersen.segments[0].windows[48].mux.c[1][4] +5994,2617,main.pedersen.segments[0].windows[48].mux.c[1][5] +5995,2618,main.pedersen.segments[0].windows[48].mux.c[1][6] +5996,2606,main.pedersen.segments[0].windows[48].mux.c[1][7] +5997,195,main.pedersen.segments[0].windows[48].mux.s[0] +5998,196,main.pedersen.segments[0].windows[48].mux.s[1] +5999,197,main.pedersen.segments[0].windows[48].mux.s[2] +6000,2603,main.pedersen.segments[0].windows[48].mux.out[0] +6001,2619,main.pedersen.segments[0].windows[48].mux.out[1] +6002,2620,main.pedersen.segments[0].windows[48].mux.a210[0] +6003,2621,main.pedersen.segments[0].windows[48].mux.a210[1] +6004,2622,main.pedersen.segments[0].windows[48].mux.a21[0] +6005,2623,main.pedersen.segments[0].windows[48].mux.a21[1] +6006,2624,main.pedersen.segments[0].windows[48].mux.a20[0] +6007,2625,main.pedersen.segments[0].windows[48].mux.a20[1] +6008,3479,main.pedersen.segments[0].windows[48].mux.a2[0] +6009,3480,main.pedersen.segments[0].windows[48].mux.a2[1] +6010,2626,main.pedersen.segments[0].windows[48].mux.a10[0] +6011,2627,main.pedersen.segments[0].windows[48].mux.a10[1] +6012,2628,main.pedersen.segments[0].windows[48].mux.a1[0] +6013,2629,main.pedersen.segments[0].windows[48].mux.a1[1] +6014,2630,main.pedersen.segments[0].windows[48].mux.a0[0] +6015,2631,main.pedersen.segments[0].windows[48].mux.a0[1] +6016,2601,main.pedersen.segments[0].windows[48].mux.a[0] +6017,2602,main.pedersen.segments[0].windows[48].mux.a[1] +6018,2632,main.pedersen.segments[0].windows[48].mux.s10 +6019,2601,main.pedersen.segments[0].windows[48].dbl2.in[0] +6020,2602,main.pedersen.segments[0].windows[48].dbl2.in[1] +6021,2607,main.pedersen.segments[0].windows[48].dbl2.out[0] +6022,2613,main.pedersen.segments[0].windows[48].dbl2.out[1] +6023,2633,main.pedersen.segments[0].windows[48].dbl2.lamda +6024,2634,main.pedersen.segments[0].windows[48].dbl2.x1_2 +6025,2601,main.pedersen.segments[0].windows[48].adr3.in1[0] +6026,2602,main.pedersen.segments[0].windows[48].adr3.in1[1] +6027,2607,main.pedersen.segments[0].windows[48].adr3.in2[0] +6028,2613,main.pedersen.segments[0].windows[48].adr3.in2[1] +6029,2608,main.pedersen.segments[0].windows[48].adr3.out[0] +6030,2614,main.pedersen.segments[0].windows[48].adr3.out[1] +6031,2635,main.pedersen.segments[0].windows[48].adr3.lamda +6032,2601,main.pedersen.segments[0].windows[48].adr4.in1[0] +6033,2602,main.pedersen.segments[0].windows[48].adr4.in1[1] +6034,2608,main.pedersen.segments[0].windows[48].adr4.in2[0] +6035,2614,main.pedersen.segments[0].windows[48].adr4.in2[1] +6036,2609,main.pedersen.segments[0].windows[48].adr4.out[0] +6037,2615,main.pedersen.segments[0].windows[48].adr4.out[1] +6038,2636,main.pedersen.segments[0].windows[48].adr4.lamda +6039,2601,main.pedersen.segments[0].windows[48].adr5.in1[0] +6040,2602,main.pedersen.segments[0].windows[48].adr5.in1[1] +6041,2609,main.pedersen.segments[0].windows[48].adr5.in2[0] +6042,2615,main.pedersen.segments[0].windows[48].adr5.in2[1] +6043,2610,main.pedersen.segments[0].windows[48].adr5.out[0] +6044,2616,main.pedersen.segments[0].windows[48].adr5.out[1] +6045,2637,main.pedersen.segments[0].windows[48].adr5.lamda +6046,2601,main.pedersen.segments[0].windows[48].adr6.in1[0] +6047,2602,main.pedersen.segments[0].windows[48].adr6.in1[1] +6048,2610,main.pedersen.segments[0].windows[48].adr6.in2[0] +6049,2616,main.pedersen.segments[0].windows[48].adr6.in2[1] +6050,2611,main.pedersen.segments[0].windows[48].adr6.out[0] +6051,2617,main.pedersen.segments[0].windows[48].adr6.out[1] +6052,2638,main.pedersen.segments[0].windows[48].adr6.lamda +6053,2601,main.pedersen.segments[0].windows[48].adr7.in1[0] +6054,2602,main.pedersen.segments[0].windows[48].adr7.in1[1] +6055,2611,main.pedersen.segments[0].windows[48].adr7.in2[0] +6056,2617,main.pedersen.segments[0].windows[48].adr7.in2[1] +6057,2612,main.pedersen.segments[0].windows[48].adr7.out[0] +6058,2618,main.pedersen.segments[0].windows[48].adr7.out[1] +6059,2639,main.pedersen.segments[0].windows[48].adr7.lamda +6060,2601,main.pedersen.segments[0].windows[48].adr8.in1[0] +6061,2602,main.pedersen.segments[0].windows[48].adr8.in1[1] +6062,2612,main.pedersen.segments[0].windows[48].adr8.in2[0] +6063,2618,main.pedersen.segments[0].windows[48].adr8.in2[1] +6064,2605,main.pedersen.segments[0].windows[48].adr8.out[0] +6065,2606,main.pedersen.segments[0].windows[48].adr8.out[1] +6066,2640,main.pedersen.segments[0].windows[48].adr8.lamda +6086,199,main.pedersen.segments[0].windows[49].in[0] +6087,200,main.pedersen.segments[0].windows[49].in[1] +6088,201,main.pedersen.segments[0].windows[49].in[2] +6089,202,main.pedersen.segments[0].windows[49].in[3] +6090,2650,main.pedersen.segments[0].windows[49].base[0] +6091,2651,main.pedersen.segments[0].windows[49].base[1] +6092,2652,main.pedersen.segments[0].windows[49].out[0] +6093,2653,main.pedersen.segments[0].windows[49].out[1] +6094,2654,main.pedersen.segments[0].windows[49].out8[0] +6095,2655,main.pedersen.segments[0].windows[49].out8[1] +6096,2650,main.pedersen.segments[0].windows[49].mux.c[0][0] +6097,2656,main.pedersen.segments[0].windows[49].mux.c[0][1] +6098,2657,main.pedersen.segments[0].windows[49].mux.c[0][2] +6099,2658,main.pedersen.segments[0].windows[49].mux.c[0][3] +6100,2659,main.pedersen.segments[0].windows[49].mux.c[0][4] +6101,2660,main.pedersen.segments[0].windows[49].mux.c[0][5] +6102,2661,main.pedersen.segments[0].windows[49].mux.c[0][6] +6103,2654,main.pedersen.segments[0].windows[49].mux.c[0][7] +6104,2651,main.pedersen.segments[0].windows[49].mux.c[1][0] +6105,2662,main.pedersen.segments[0].windows[49].mux.c[1][1] +6106,2663,main.pedersen.segments[0].windows[49].mux.c[1][2] +6107,2664,main.pedersen.segments[0].windows[49].mux.c[1][3] +6108,2665,main.pedersen.segments[0].windows[49].mux.c[1][4] +6109,2666,main.pedersen.segments[0].windows[49].mux.c[1][5] +6110,2667,main.pedersen.segments[0].windows[49].mux.c[1][6] +6111,2655,main.pedersen.segments[0].windows[49].mux.c[1][7] +6112,199,main.pedersen.segments[0].windows[49].mux.s[0] +6113,200,main.pedersen.segments[0].windows[49].mux.s[1] +6114,201,main.pedersen.segments[0].windows[49].mux.s[2] +6115,2652,main.pedersen.segments[0].windows[49].mux.out[0] +6116,2668,main.pedersen.segments[0].windows[49].mux.out[1] +6117,2669,main.pedersen.segments[0].windows[49].mux.a210[0] +6118,2670,main.pedersen.segments[0].windows[49].mux.a210[1] +6119,2671,main.pedersen.segments[0].windows[49].mux.a21[0] +6120,2672,main.pedersen.segments[0].windows[49].mux.a21[1] +6121,2673,main.pedersen.segments[0].windows[49].mux.a20[0] +6122,2674,main.pedersen.segments[0].windows[49].mux.a20[1] +6123,3481,main.pedersen.segments[0].windows[49].mux.a2[0] +6124,3482,main.pedersen.segments[0].windows[49].mux.a2[1] +6125,2675,main.pedersen.segments[0].windows[49].mux.a10[0] +6126,2676,main.pedersen.segments[0].windows[49].mux.a10[1] +6127,2677,main.pedersen.segments[0].windows[49].mux.a1[0] +6128,2678,main.pedersen.segments[0].windows[49].mux.a1[1] +6129,2679,main.pedersen.segments[0].windows[49].mux.a0[0] +6130,2680,main.pedersen.segments[0].windows[49].mux.a0[1] +6131,2650,main.pedersen.segments[0].windows[49].mux.a[0] +6132,2651,main.pedersen.segments[0].windows[49].mux.a[1] +6133,2681,main.pedersen.segments[0].windows[49].mux.s10 +6134,2650,main.pedersen.segments[0].windows[49].dbl2.in[0] +6135,2651,main.pedersen.segments[0].windows[49].dbl2.in[1] +6136,2656,main.pedersen.segments[0].windows[49].dbl2.out[0] +6137,2662,main.pedersen.segments[0].windows[49].dbl2.out[1] +6138,2682,main.pedersen.segments[0].windows[49].dbl2.lamda +6139,2683,main.pedersen.segments[0].windows[49].dbl2.x1_2 +6140,2650,main.pedersen.segments[0].windows[49].adr3.in1[0] +6141,2651,main.pedersen.segments[0].windows[49].adr3.in1[1] +6142,2656,main.pedersen.segments[0].windows[49].adr3.in2[0] +6143,2662,main.pedersen.segments[0].windows[49].adr3.in2[1] +6144,2657,main.pedersen.segments[0].windows[49].adr3.out[0] +6145,2663,main.pedersen.segments[0].windows[49].adr3.out[1] +6146,2684,main.pedersen.segments[0].windows[49].adr3.lamda +6147,2650,main.pedersen.segments[0].windows[49].adr4.in1[0] +6148,2651,main.pedersen.segments[0].windows[49].adr4.in1[1] +6149,2657,main.pedersen.segments[0].windows[49].adr4.in2[0] +6150,2663,main.pedersen.segments[0].windows[49].adr4.in2[1] +6151,2658,main.pedersen.segments[0].windows[49].adr4.out[0] +6152,2664,main.pedersen.segments[0].windows[49].adr4.out[1] +6153,2685,main.pedersen.segments[0].windows[49].adr4.lamda +6154,2650,main.pedersen.segments[0].windows[49].adr5.in1[0] +6155,2651,main.pedersen.segments[0].windows[49].adr5.in1[1] +6156,2658,main.pedersen.segments[0].windows[49].adr5.in2[0] +6157,2664,main.pedersen.segments[0].windows[49].adr5.in2[1] +6158,2659,main.pedersen.segments[0].windows[49].adr5.out[0] +6159,2665,main.pedersen.segments[0].windows[49].adr5.out[1] +6160,2686,main.pedersen.segments[0].windows[49].adr5.lamda +6161,2650,main.pedersen.segments[0].windows[49].adr6.in1[0] +6162,2651,main.pedersen.segments[0].windows[49].adr6.in1[1] +6163,2659,main.pedersen.segments[0].windows[49].adr6.in2[0] +6164,2665,main.pedersen.segments[0].windows[49].adr6.in2[1] +6165,2660,main.pedersen.segments[0].windows[49].adr6.out[0] +6166,2666,main.pedersen.segments[0].windows[49].adr6.out[1] +6167,2687,main.pedersen.segments[0].windows[49].adr6.lamda +6168,2650,main.pedersen.segments[0].windows[49].adr7.in1[0] +6169,2651,main.pedersen.segments[0].windows[49].adr7.in1[1] +6170,2660,main.pedersen.segments[0].windows[49].adr7.in2[0] +6171,2666,main.pedersen.segments[0].windows[49].adr7.in2[1] +6172,2661,main.pedersen.segments[0].windows[49].adr7.out[0] +6173,2667,main.pedersen.segments[0].windows[49].adr7.out[1] +6174,2688,main.pedersen.segments[0].windows[49].adr7.lamda +6175,2650,main.pedersen.segments[0].windows[49].adr8.in1[0] +6176,2651,main.pedersen.segments[0].windows[49].adr8.in1[1] +6177,2661,main.pedersen.segments[0].windows[49].adr8.in2[0] +6178,2667,main.pedersen.segments[0].windows[49].adr8.in2[1] +6179,2654,main.pedersen.segments[0].windows[49].adr8.out[0] +6180,2655,main.pedersen.segments[0].windows[49].adr8.out[1] +6181,2689,main.pedersen.segments[0].windows[49].adr8.lamda +662,260,main.pedersen.segments[0].doublers1[0].in[0] +663,261,main.pedersen.segments[0].doublers1[0].in[1] +664,338,main.pedersen.segments[0].doublers1[0].out[0] +665,339,main.pedersen.segments[0].doublers1[0].out[1] +666,340,main.pedersen.segments[0].doublers1[0].lamda +667,341,main.pedersen.segments[0].doublers1[0].x1_2 +777,302,main.pedersen.segments[0].doublers1[1].in[0] +778,303,main.pedersen.segments[0].doublers1[1].in[1] +779,387,main.pedersen.segments[0].doublers1[1].out[0] +780,388,main.pedersen.segments[0].doublers1[1].out[1] +781,389,main.pedersen.segments[0].doublers1[1].lamda +782,390,main.pedersen.segments[0].doublers1[1].x1_2 +892,351,main.pedersen.segments[0].doublers1[2].in[0] +893,352,main.pedersen.segments[0].doublers1[2].in[1] +894,436,main.pedersen.segments[0].doublers1[2].out[0] +895,437,main.pedersen.segments[0].doublers1[2].out[1] +896,438,main.pedersen.segments[0].doublers1[2].lamda +897,439,main.pedersen.segments[0].doublers1[2].x1_2 +1007,400,main.pedersen.segments[0].doublers1[3].in[0] +1008,401,main.pedersen.segments[0].doublers1[3].in[1] +1009,485,main.pedersen.segments[0].doublers1[3].out[0] +1010,486,main.pedersen.segments[0].doublers1[3].out[1] +1011,487,main.pedersen.segments[0].doublers1[3].lamda +1012,488,main.pedersen.segments[0].doublers1[3].x1_2 +1122,449,main.pedersen.segments[0].doublers1[4].in[0] +1123,450,main.pedersen.segments[0].doublers1[4].in[1] +1124,534,main.pedersen.segments[0].doublers1[4].out[0] +1125,535,main.pedersen.segments[0].doublers1[4].out[1] +1126,536,main.pedersen.segments[0].doublers1[4].lamda +1127,537,main.pedersen.segments[0].doublers1[4].x1_2 +1237,498,main.pedersen.segments[0].doublers1[5].in[0] +1238,499,main.pedersen.segments[0].doublers1[5].in[1] +1239,583,main.pedersen.segments[0].doublers1[5].out[0] +1240,584,main.pedersen.segments[0].doublers1[5].out[1] +1241,585,main.pedersen.segments[0].doublers1[5].lamda +1242,586,main.pedersen.segments[0].doublers1[5].x1_2 +1352,547,main.pedersen.segments[0].doublers1[6].in[0] +1353,548,main.pedersen.segments[0].doublers1[6].in[1] +1354,632,main.pedersen.segments[0].doublers1[6].out[0] +1355,633,main.pedersen.segments[0].doublers1[6].out[1] +1356,634,main.pedersen.segments[0].doublers1[6].lamda +1357,635,main.pedersen.segments[0].doublers1[6].x1_2 +1467,596,main.pedersen.segments[0].doublers1[7].in[0] +1468,597,main.pedersen.segments[0].doublers1[7].in[1] +1469,681,main.pedersen.segments[0].doublers1[7].out[0] +1470,682,main.pedersen.segments[0].doublers1[7].out[1] +1471,683,main.pedersen.segments[0].doublers1[7].lamda +1472,684,main.pedersen.segments[0].doublers1[7].x1_2 +1582,645,main.pedersen.segments[0].doublers1[8].in[0] +1583,646,main.pedersen.segments[0].doublers1[8].in[1] +1584,730,main.pedersen.segments[0].doublers1[8].out[0] +1585,731,main.pedersen.segments[0].doublers1[8].out[1] +1586,732,main.pedersen.segments[0].doublers1[8].lamda +1587,733,main.pedersen.segments[0].doublers1[8].x1_2 +1697,694,main.pedersen.segments[0].doublers1[9].in[0] +1698,695,main.pedersen.segments[0].doublers1[9].in[1] +1699,779,main.pedersen.segments[0].doublers1[9].out[0] +1700,780,main.pedersen.segments[0].doublers1[9].out[1] +1701,781,main.pedersen.segments[0].doublers1[9].lamda +1702,782,main.pedersen.segments[0].doublers1[9].x1_2 +1812,743,main.pedersen.segments[0].doublers1[10].in[0] +1813,744,main.pedersen.segments[0].doublers1[10].in[1] +1814,828,main.pedersen.segments[0].doublers1[10].out[0] +1815,829,main.pedersen.segments[0].doublers1[10].out[1] +1816,830,main.pedersen.segments[0].doublers1[10].lamda +1817,831,main.pedersen.segments[0].doublers1[10].x1_2 +1927,792,main.pedersen.segments[0].doublers1[11].in[0] +1928,793,main.pedersen.segments[0].doublers1[11].in[1] +1929,877,main.pedersen.segments[0].doublers1[11].out[0] +1930,878,main.pedersen.segments[0].doublers1[11].out[1] +1931,879,main.pedersen.segments[0].doublers1[11].lamda +1932,880,main.pedersen.segments[0].doublers1[11].x1_2 +2042,841,main.pedersen.segments[0].doublers1[12].in[0] +2043,842,main.pedersen.segments[0].doublers1[12].in[1] +2044,926,main.pedersen.segments[0].doublers1[12].out[0] +2045,927,main.pedersen.segments[0].doublers1[12].out[1] +2046,928,main.pedersen.segments[0].doublers1[12].lamda +2047,929,main.pedersen.segments[0].doublers1[12].x1_2 +2157,890,main.pedersen.segments[0].doublers1[13].in[0] +2158,891,main.pedersen.segments[0].doublers1[13].in[1] +2159,975,main.pedersen.segments[0].doublers1[13].out[0] +2160,976,main.pedersen.segments[0].doublers1[13].out[1] +2161,977,main.pedersen.segments[0].doublers1[13].lamda +2162,978,main.pedersen.segments[0].doublers1[13].x1_2 +2272,939,main.pedersen.segments[0].doublers1[14].in[0] +2273,940,main.pedersen.segments[0].doublers1[14].in[1] +2274,1024,main.pedersen.segments[0].doublers1[14].out[0] +2275,1025,main.pedersen.segments[0].doublers1[14].out[1] +2276,1026,main.pedersen.segments[0].doublers1[14].lamda +2277,1027,main.pedersen.segments[0].doublers1[14].x1_2 +2387,988,main.pedersen.segments[0].doublers1[15].in[0] +2388,989,main.pedersen.segments[0].doublers1[15].in[1] +2389,1073,main.pedersen.segments[0].doublers1[15].out[0] +2390,1074,main.pedersen.segments[0].doublers1[15].out[1] +2391,1075,main.pedersen.segments[0].doublers1[15].lamda +2392,1076,main.pedersen.segments[0].doublers1[15].x1_2 +2502,1037,main.pedersen.segments[0].doublers1[16].in[0] +2503,1038,main.pedersen.segments[0].doublers1[16].in[1] +2504,1122,main.pedersen.segments[0].doublers1[16].out[0] +2505,1123,main.pedersen.segments[0].doublers1[16].out[1] +2506,1124,main.pedersen.segments[0].doublers1[16].lamda +2507,1125,main.pedersen.segments[0].doublers1[16].x1_2 +2617,1086,main.pedersen.segments[0].doublers1[17].in[0] +2618,1087,main.pedersen.segments[0].doublers1[17].in[1] +2619,1171,main.pedersen.segments[0].doublers1[17].out[0] +2620,1172,main.pedersen.segments[0].doublers1[17].out[1] +2621,1173,main.pedersen.segments[0].doublers1[17].lamda +2622,1174,main.pedersen.segments[0].doublers1[17].x1_2 +2732,1135,main.pedersen.segments[0].doublers1[18].in[0] +2733,1136,main.pedersen.segments[0].doublers1[18].in[1] +2734,1220,main.pedersen.segments[0].doublers1[18].out[0] +2735,1221,main.pedersen.segments[0].doublers1[18].out[1] +2736,1222,main.pedersen.segments[0].doublers1[18].lamda +2737,1223,main.pedersen.segments[0].doublers1[18].x1_2 +2847,1184,main.pedersen.segments[0].doublers1[19].in[0] +2848,1185,main.pedersen.segments[0].doublers1[19].in[1] +2849,1269,main.pedersen.segments[0].doublers1[19].out[0] +2850,1270,main.pedersen.segments[0].doublers1[19].out[1] +2851,1271,main.pedersen.segments[0].doublers1[19].lamda +2852,1272,main.pedersen.segments[0].doublers1[19].x1_2 +2962,1233,main.pedersen.segments[0].doublers1[20].in[0] +2963,1234,main.pedersen.segments[0].doublers1[20].in[1] +2964,1318,main.pedersen.segments[0].doublers1[20].out[0] +2965,1319,main.pedersen.segments[0].doublers1[20].out[1] +2966,1320,main.pedersen.segments[0].doublers1[20].lamda +2967,1321,main.pedersen.segments[0].doublers1[20].x1_2 +3077,1282,main.pedersen.segments[0].doublers1[21].in[0] +3078,1283,main.pedersen.segments[0].doublers1[21].in[1] +3079,1367,main.pedersen.segments[0].doublers1[21].out[0] +3080,1368,main.pedersen.segments[0].doublers1[21].out[1] +3081,1369,main.pedersen.segments[0].doublers1[21].lamda +3082,1370,main.pedersen.segments[0].doublers1[21].x1_2 +3192,1331,main.pedersen.segments[0].doublers1[22].in[0] +3193,1332,main.pedersen.segments[0].doublers1[22].in[1] +3194,1416,main.pedersen.segments[0].doublers1[22].out[0] +3195,1417,main.pedersen.segments[0].doublers1[22].out[1] +3196,1418,main.pedersen.segments[0].doublers1[22].lamda +3197,1419,main.pedersen.segments[0].doublers1[22].x1_2 +3307,1380,main.pedersen.segments[0].doublers1[23].in[0] +3308,1381,main.pedersen.segments[0].doublers1[23].in[1] +3309,1465,main.pedersen.segments[0].doublers1[23].out[0] +3310,1466,main.pedersen.segments[0].doublers1[23].out[1] +3311,1467,main.pedersen.segments[0].doublers1[23].lamda +3312,1468,main.pedersen.segments[0].doublers1[23].x1_2 +3422,1429,main.pedersen.segments[0].doublers1[24].in[0] +3423,1430,main.pedersen.segments[0].doublers1[24].in[1] +3424,1514,main.pedersen.segments[0].doublers1[24].out[0] +3425,1515,main.pedersen.segments[0].doublers1[24].out[1] +3426,1516,main.pedersen.segments[0].doublers1[24].lamda +3427,1517,main.pedersen.segments[0].doublers1[24].x1_2 +3537,1478,main.pedersen.segments[0].doublers1[25].in[0] +3538,1479,main.pedersen.segments[0].doublers1[25].in[1] +3539,1563,main.pedersen.segments[0].doublers1[25].out[0] +3540,1564,main.pedersen.segments[0].doublers1[25].out[1] +3541,1565,main.pedersen.segments[0].doublers1[25].lamda +3542,1566,main.pedersen.segments[0].doublers1[25].x1_2 +3652,1527,main.pedersen.segments[0].doublers1[26].in[0] +3653,1528,main.pedersen.segments[0].doublers1[26].in[1] +3654,1612,main.pedersen.segments[0].doublers1[26].out[0] +3655,1613,main.pedersen.segments[0].doublers1[26].out[1] +3656,1614,main.pedersen.segments[0].doublers1[26].lamda +3657,1615,main.pedersen.segments[0].doublers1[26].x1_2 +3767,1576,main.pedersen.segments[0].doublers1[27].in[0] +3768,1577,main.pedersen.segments[0].doublers1[27].in[1] +3769,1661,main.pedersen.segments[0].doublers1[27].out[0] +3770,1662,main.pedersen.segments[0].doublers1[27].out[1] +3771,1663,main.pedersen.segments[0].doublers1[27].lamda +3772,1664,main.pedersen.segments[0].doublers1[27].x1_2 +3882,1625,main.pedersen.segments[0].doublers1[28].in[0] +3883,1626,main.pedersen.segments[0].doublers1[28].in[1] +3884,1710,main.pedersen.segments[0].doublers1[28].out[0] +3885,1711,main.pedersen.segments[0].doublers1[28].out[1] +3886,1712,main.pedersen.segments[0].doublers1[28].lamda +3887,1713,main.pedersen.segments[0].doublers1[28].x1_2 +3997,1674,main.pedersen.segments[0].doublers1[29].in[0] +3998,1675,main.pedersen.segments[0].doublers1[29].in[1] +3999,1759,main.pedersen.segments[0].doublers1[29].out[0] +4000,1760,main.pedersen.segments[0].doublers1[29].out[1] +4001,1761,main.pedersen.segments[0].doublers1[29].lamda +4002,1762,main.pedersen.segments[0].doublers1[29].x1_2 +4112,1723,main.pedersen.segments[0].doublers1[30].in[0] +4113,1724,main.pedersen.segments[0].doublers1[30].in[1] +4114,1808,main.pedersen.segments[0].doublers1[30].out[0] +4115,1809,main.pedersen.segments[0].doublers1[30].out[1] +4116,1810,main.pedersen.segments[0].doublers1[30].lamda +4117,1811,main.pedersen.segments[0].doublers1[30].x1_2 +4227,1772,main.pedersen.segments[0].doublers1[31].in[0] +4228,1773,main.pedersen.segments[0].doublers1[31].in[1] +4229,1857,main.pedersen.segments[0].doublers1[31].out[0] +4230,1858,main.pedersen.segments[0].doublers1[31].out[1] +4231,1859,main.pedersen.segments[0].doublers1[31].lamda +4232,1860,main.pedersen.segments[0].doublers1[31].x1_2 +4342,1821,main.pedersen.segments[0].doublers1[32].in[0] +4343,1822,main.pedersen.segments[0].doublers1[32].in[1] +4344,1906,main.pedersen.segments[0].doublers1[32].out[0] +4345,1907,main.pedersen.segments[0].doublers1[32].out[1] +4346,1908,main.pedersen.segments[0].doublers1[32].lamda +4347,1909,main.pedersen.segments[0].doublers1[32].x1_2 +4457,1870,main.pedersen.segments[0].doublers1[33].in[0] +4458,1871,main.pedersen.segments[0].doublers1[33].in[1] +4459,1955,main.pedersen.segments[0].doublers1[33].out[0] +4460,1956,main.pedersen.segments[0].doublers1[33].out[1] +4461,1957,main.pedersen.segments[0].doublers1[33].lamda +4462,1958,main.pedersen.segments[0].doublers1[33].x1_2 +4572,1919,main.pedersen.segments[0].doublers1[34].in[0] +4573,1920,main.pedersen.segments[0].doublers1[34].in[1] +4574,2004,main.pedersen.segments[0].doublers1[34].out[0] +4575,2005,main.pedersen.segments[0].doublers1[34].out[1] +4576,2006,main.pedersen.segments[0].doublers1[34].lamda +4577,2007,main.pedersen.segments[0].doublers1[34].x1_2 +4687,1968,main.pedersen.segments[0].doublers1[35].in[0] +4688,1969,main.pedersen.segments[0].doublers1[35].in[1] +4689,2053,main.pedersen.segments[0].doublers1[35].out[0] +4690,2054,main.pedersen.segments[0].doublers1[35].out[1] +4691,2055,main.pedersen.segments[0].doublers1[35].lamda +4692,2056,main.pedersen.segments[0].doublers1[35].x1_2 +4802,2017,main.pedersen.segments[0].doublers1[36].in[0] +4803,2018,main.pedersen.segments[0].doublers1[36].in[1] +4804,2102,main.pedersen.segments[0].doublers1[36].out[0] +4805,2103,main.pedersen.segments[0].doublers1[36].out[1] +4806,2104,main.pedersen.segments[0].doublers1[36].lamda +4807,2105,main.pedersen.segments[0].doublers1[36].x1_2 +4917,2066,main.pedersen.segments[0].doublers1[37].in[0] +4918,2067,main.pedersen.segments[0].doublers1[37].in[1] +4919,2151,main.pedersen.segments[0].doublers1[37].out[0] +4920,2152,main.pedersen.segments[0].doublers1[37].out[1] +4921,2153,main.pedersen.segments[0].doublers1[37].lamda +4922,2154,main.pedersen.segments[0].doublers1[37].x1_2 +5032,2115,main.pedersen.segments[0].doublers1[38].in[0] +5033,2116,main.pedersen.segments[0].doublers1[38].in[1] +5034,2200,main.pedersen.segments[0].doublers1[38].out[0] +5035,2201,main.pedersen.segments[0].doublers1[38].out[1] +5036,2202,main.pedersen.segments[0].doublers1[38].lamda +5037,2203,main.pedersen.segments[0].doublers1[38].x1_2 +5147,2164,main.pedersen.segments[0].doublers1[39].in[0] +5148,2165,main.pedersen.segments[0].doublers1[39].in[1] +5149,2249,main.pedersen.segments[0].doublers1[39].out[0] +5150,2250,main.pedersen.segments[0].doublers1[39].out[1] +5151,2251,main.pedersen.segments[0].doublers1[39].lamda +5152,2252,main.pedersen.segments[0].doublers1[39].x1_2 +5262,2213,main.pedersen.segments[0].doublers1[40].in[0] +5263,2214,main.pedersen.segments[0].doublers1[40].in[1] +5264,2298,main.pedersen.segments[0].doublers1[40].out[0] +5265,2299,main.pedersen.segments[0].doublers1[40].out[1] +5266,2300,main.pedersen.segments[0].doublers1[40].lamda +5267,2301,main.pedersen.segments[0].doublers1[40].x1_2 +5377,2262,main.pedersen.segments[0].doublers1[41].in[0] +5378,2263,main.pedersen.segments[0].doublers1[41].in[1] +5379,2347,main.pedersen.segments[0].doublers1[41].out[0] +5380,2348,main.pedersen.segments[0].doublers1[41].out[1] +5381,2349,main.pedersen.segments[0].doublers1[41].lamda +5382,2350,main.pedersen.segments[0].doublers1[41].x1_2 +5492,2311,main.pedersen.segments[0].doublers1[42].in[0] +5493,2312,main.pedersen.segments[0].doublers1[42].in[1] +5494,2396,main.pedersen.segments[0].doublers1[42].out[0] +5495,2397,main.pedersen.segments[0].doublers1[42].out[1] +5496,2398,main.pedersen.segments[0].doublers1[42].lamda +5497,2399,main.pedersen.segments[0].doublers1[42].x1_2 +5607,2360,main.pedersen.segments[0].doublers1[43].in[0] +5608,2361,main.pedersen.segments[0].doublers1[43].in[1] +5609,2445,main.pedersen.segments[0].doublers1[43].out[0] +5610,2446,main.pedersen.segments[0].doublers1[43].out[1] +5611,2447,main.pedersen.segments[0].doublers1[43].lamda +5612,2448,main.pedersen.segments[0].doublers1[43].x1_2 +5722,2409,main.pedersen.segments[0].doublers1[44].in[0] +5723,2410,main.pedersen.segments[0].doublers1[44].in[1] +5724,2494,main.pedersen.segments[0].doublers1[44].out[0] +5725,2495,main.pedersen.segments[0].doublers1[44].out[1] +5726,2496,main.pedersen.segments[0].doublers1[44].lamda +5727,2497,main.pedersen.segments[0].doublers1[44].x1_2 +5837,2458,main.pedersen.segments[0].doublers1[45].in[0] +5838,2459,main.pedersen.segments[0].doublers1[45].in[1] +5839,2543,main.pedersen.segments[0].doublers1[45].out[0] +5840,2544,main.pedersen.segments[0].doublers1[45].out[1] +5841,2545,main.pedersen.segments[0].doublers1[45].lamda +5842,2546,main.pedersen.segments[0].doublers1[45].x1_2 +5952,2507,main.pedersen.segments[0].doublers1[46].in[0] +5953,2508,main.pedersen.segments[0].doublers1[46].in[1] +5954,2592,main.pedersen.segments[0].doublers1[46].out[0] +5955,2593,main.pedersen.segments[0].doublers1[46].out[1] +5956,2594,main.pedersen.segments[0].doublers1[46].lamda +5957,2595,main.pedersen.segments[0].doublers1[46].x1_2 +6067,2556,main.pedersen.segments[0].doublers1[47].in[0] +6068,2557,main.pedersen.segments[0].doublers1[47].in[1] +6069,2641,main.pedersen.segments[0].doublers1[47].out[0] +6070,2642,main.pedersen.segments[0].doublers1[47].out[1] +6071,2643,main.pedersen.segments[0].doublers1[47].lamda +6072,2644,main.pedersen.segments[0].doublers1[47].x1_2 +6182,2605,main.pedersen.segments[0].doublers1[48].in[0] +6183,2606,main.pedersen.segments[0].doublers1[48].in[1] +6184,2690,main.pedersen.segments[0].doublers1[48].out[0] +6185,2691,main.pedersen.segments[0].doublers1[48].out[1] +6186,2692,main.pedersen.segments[0].doublers1[48].lamda +6187,2693,main.pedersen.segments[0].doublers1[48].x1_2 +668,338,main.pedersen.segments[0].doublers2[0].in[0] +669,339,main.pedersen.segments[0].doublers2[0].in[1] +670,298,main.pedersen.segments[0].doublers2[0].out[0] +671,299,main.pedersen.segments[0].doublers2[0].out[1] +672,342,main.pedersen.segments[0].doublers2[0].lamda +673,343,main.pedersen.segments[0].doublers2[0].x1_2 +783,387,main.pedersen.segments[0].doublers2[1].in[0] +784,388,main.pedersen.segments[0].doublers2[1].in[1] +785,347,main.pedersen.segments[0].doublers2[1].out[0] +786,348,main.pedersen.segments[0].doublers2[1].out[1] +787,391,main.pedersen.segments[0].doublers2[1].lamda +788,392,main.pedersen.segments[0].doublers2[1].x1_2 +898,436,main.pedersen.segments[0].doublers2[2].in[0] +899,437,main.pedersen.segments[0].doublers2[2].in[1] +900,396,main.pedersen.segments[0].doublers2[2].out[0] +901,397,main.pedersen.segments[0].doublers2[2].out[1] +902,440,main.pedersen.segments[0].doublers2[2].lamda +903,441,main.pedersen.segments[0].doublers2[2].x1_2 +1013,485,main.pedersen.segments[0].doublers2[3].in[0] +1014,486,main.pedersen.segments[0].doublers2[3].in[1] +1015,445,main.pedersen.segments[0].doublers2[3].out[0] +1016,446,main.pedersen.segments[0].doublers2[3].out[1] +1017,489,main.pedersen.segments[0].doublers2[3].lamda +1018,490,main.pedersen.segments[0].doublers2[3].x1_2 +1128,534,main.pedersen.segments[0].doublers2[4].in[0] +1129,535,main.pedersen.segments[0].doublers2[4].in[1] +1130,494,main.pedersen.segments[0].doublers2[4].out[0] +1131,495,main.pedersen.segments[0].doublers2[4].out[1] +1132,538,main.pedersen.segments[0].doublers2[4].lamda +1133,539,main.pedersen.segments[0].doublers2[4].x1_2 +1243,583,main.pedersen.segments[0].doublers2[5].in[0] +1244,584,main.pedersen.segments[0].doublers2[5].in[1] +1245,543,main.pedersen.segments[0].doublers2[5].out[0] +1246,544,main.pedersen.segments[0].doublers2[5].out[1] +1247,587,main.pedersen.segments[0].doublers2[5].lamda +1248,588,main.pedersen.segments[0].doublers2[5].x1_2 +1358,632,main.pedersen.segments[0].doublers2[6].in[0] +1359,633,main.pedersen.segments[0].doublers2[6].in[1] +1360,592,main.pedersen.segments[0].doublers2[6].out[0] +1361,593,main.pedersen.segments[0].doublers2[6].out[1] +1362,636,main.pedersen.segments[0].doublers2[6].lamda +1363,637,main.pedersen.segments[0].doublers2[6].x1_2 +1473,681,main.pedersen.segments[0].doublers2[7].in[0] +1474,682,main.pedersen.segments[0].doublers2[7].in[1] +1475,641,main.pedersen.segments[0].doublers2[7].out[0] +1476,642,main.pedersen.segments[0].doublers2[7].out[1] +1477,685,main.pedersen.segments[0].doublers2[7].lamda +1478,686,main.pedersen.segments[0].doublers2[7].x1_2 +1588,730,main.pedersen.segments[0].doublers2[8].in[0] +1589,731,main.pedersen.segments[0].doublers2[8].in[1] +1590,690,main.pedersen.segments[0].doublers2[8].out[0] +1591,691,main.pedersen.segments[0].doublers2[8].out[1] +1592,734,main.pedersen.segments[0].doublers2[8].lamda +1593,735,main.pedersen.segments[0].doublers2[8].x1_2 +1703,779,main.pedersen.segments[0].doublers2[9].in[0] +1704,780,main.pedersen.segments[0].doublers2[9].in[1] +1705,739,main.pedersen.segments[0].doublers2[9].out[0] +1706,740,main.pedersen.segments[0].doublers2[9].out[1] +1707,783,main.pedersen.segments[0].doublers2[9].lamda +1708,784,main.pedersen.segments[0].doublers2[9].x1_2 +1818,828,main.pedersen.segments[0].doublers2[10].in[0] +1819,829,main.pedersen.segments[0].doublers2[10].in[1] +1820,788,main.pedersen.segments[0].doublers2[10].out[0] +1821,789,main.pedersen.segments[0].doublers2[10].out[1] +1822,832,main.pedersen.segments[0].doublers2[10].lamda +1823,833,main.pedersen.segments[0].doublers2[10].x1_2 +1933,877,main.pedersen.segments[0].doublers2[11].in[0] +1934,878,main.pedersen.segments[0].doublers2[11].in[1] +1935,837,main.pedersen.segments[0].doublers2[11].out[0] +1936,838,main.pedersen.segments[0].doublers2[11].out[1] +1937,881,main.pedersen.segments[0].doublers2[11].lamda +1938,882,main.pedersen.segments[0].doublers2[11].x1_2 +2048,926,main.pedersen.segments[0].doublers2[12].in[0] +2049,927,main.pedersen.segments[0].doublers2[12].in[1] +2050,886,main.pedersen.segments[0].doublers2[12].out[0] +2051,887,main.pedersen.segments[0].doublers2[12].out[1] +2052,930,main.pedersen.segments[0].doublers2[12].lamda +2053,931,main.pedersen.segments[0].doublers2[12].x1_2 +2163,975,main.pedersen.segments[0].doublers2[13].in[0] +2164,976,main.pedersen.segments[0].doublers2[13].in[1] +2165,935,main.pedersen.segments[0].doublers2[13].out[0] +2166,936,main.pedersen.segments[0].doublers2[13].out[1] +2167,979,main.pedersen.segments[0].doublers2[13].lamda +2168,980,main.pedersen.segments[0].doublers2[13].x1_2 +2278,1024,main.pedersen.segments[0].doublers2[14].in[0] +2279,1025,main.pedersen.segments[0].doublers2[14].in[1] +2280,984,main.pedersen.segments[0].doublers2[14].out[0] +2281,985,main.pedersen.segments[0].doublers2[14].out[1] +2282,1028,main.pedersen.segments[0].doublers2[14].lamda +2283,1029,main.pedersen.segments[0].doublers2[14].x1_2 +2393,1073,main.pedersen.segments[0].doublers2[15].in[0] +2394,1074,main.pedersen.segments[0].doublers2[15].in[1] +2395,1033,main.pedersen.segments[0].doublers2[15].out[0] +2396,1034,main.pedersen.segments[0].doublers2[15].out[1] +2397,1077,main.pedersen.segments[0].doublers2[15].lamda +2398,1078,main.pedersen.segments[0].doublers2[15].x1_2 +2508,1122,main.pedersen.segments[0].doublers2[16].in[0] +2509,1123,main.pedersen.segments[0].doublers2[16].in[1] +2510,1082,main.pedersen.segments[0].doublers2[16].out[0] +2511,1083,main.pedersen.segments[0].doublers2[16].out[1] +2512,1126,main.pedersen.segments[0].doublers2[16].lamda +2513,1127,main.pedersen.segments[0].doublers2[16].x1_2 +2623,1171,main.pedersen.segments[0].doublers2[17].in[0] +2624,1172,main.pedersen.segments[0].doublers2[17].in[1] +2625,1131,main.pedersen.segments[0].doublers2[17].out[0] +2626,1132,main.pedersen.segments[0].doublers2[17].out[1] +2627,1175,main.pedersen.segments[0].doublers2[17].lamda +2628,1176,main.pedersen.segments[0].doublers2[17].x1_2 +2738,1220,main.pedersen.segments[0].doublers2[18].in[0] +2739,1221,main.pedersen.segments[0].doublers2[18].in[1] +2740,1180,main.pedersen.segments[0].doublers2[18].out[0] +2741,1181,main.pedersen.segments[0].doublers2[18].out[1] +2742,1224,main.pedersen.segments[0].doublers2[18].lamda +2743,1225,main.pedersen.segments[0].doublers2[18].x1_2 +2853,1269,main.pedersen.segments[0].doublers2[19].in[0] +2854,1270,main.pedersen.segments[0].doublers2[19].in[1] +2855,1229,main.pedersen.segments[0].doublers2[19].out[0] +2856,1230,main.pedersen.segments[0].doublers2[19].out[1] +2857,1273,main.pedersen.segments[0].doublers2[19].lamda +2858,1274,main.pedersen.segments[0].doublers2[19].x1_2 +2968,1318,main.pedersen.segments[0].doublers2[20].in[0] +2969,1319,main.pedersen.segments[0].doublers2[20].in[1] +2970,1278,main.pedersen.segments[0].doublers2[20].out[0] +2971,1279,main.pedersen.segments[0].doublers2[20].out[1] +2972,1322,main.pedersen.segments[0].doublers2[20].lamda +2973,1323,main.pedersen.segments[0].doublers2[20].x1_2 +3083,1367,main.pedersen.segments[0].doublers2[21].in[0] +3084,1368,main.pedersen.segments[0].doublers2[21].in[1] +3085,1327,main.pedersen.segments[0].doublers2[21].out[0] +3086,1328,main.pedersen.segments[0].doublers2[21].out[1] +3087,1371,main.pedersen.segments[0].doublers2[21].lamda +3088,1372,main.pedersen.segments[0].doublers2[21].x1_2 +3198,1416,main.pedersen.segments[0].doublers2[22].in[0] +3199,1417,main.pedersen.segments[0].doublers2[22].in[1] +3200,1376,main.pedersen.segments[0].doublers2[22].out[0] +3201,1377,main.pedersen.segments[0].doublers2[22].out[1] +3202,1420,main.pedersen.segments[0].doublers2[22].lamda +3203,1421,main.pedersen.segments[0].doublers2[22].x1_2 +3313,1465,main.pedersen.segments[0].doublers2[23].in[0] +3314,1466,main.pedersen.segments[0].doublers2[23].in[1] +3315,1425,main.pedersen.segments[0].doublers2[23].out[0] +3316,1426,main.pedersen.segments[0].doublers2[23].out[1] +3317,1469,main.pedersen.segments[0].doublers2[23].lamda +3318,1470,main.pedersen.segments[0].doublers2[23].x1_2 +3428,1514,main.pedersen.segments[0].doublers2[24].in[0] +3429,1515,main.pedersen.segments[0].doublers2[24].in[1] +3430,1474,main.pedersen.segments[0].doublers2[24].out[0] +3431,1475,main.pedersen.segments[0].doublers2[24].out[1] +3432,1518,main.pedersen.segments[0].doublers2[24].lamda +3433,1519,main.pedersen.segments[0].doublers2[24].x1_2 +3543,1563,main.pedersen.segments[0].doublers2[25].in[0] +3544,1564,main.pedersen.segments[0].doublers2[25].in[1] +3545,1523,main.pedersen.segments[0].doublers2[25].out[0] +3546,1524,main.pedersen.segments[0].doublers2[25].out[1] +3547,1567,main.pedersen.segments[0].doublers2[25].lamda +3548,1568,main.pedersen.segments[0].doublers2[25].x1_2 +3658,1612,main.pedersen.segments[0].doublers2[26].in[0] +3659,1613,main.pedersen.segments[0].doublers2[26].in[1] +3660,1572,main.pedersen.segments[0].doublers2[26].out[0] +3661,1573,main.pedersen.segments[0].doublers2[26].out[1] +3662,1616,main.pedersen.segments[0].doublers2[26].lamda +3663,1617,main.pedersen.segments[0].doublers2[26].x1_2 +3773,1661,main.pedersen.segments[0].doublers2[27].in[0] +3774,1662,main.pedersen.segments[0].doublers2[27].in[1] +3775,1621,main.pedersen.segments[0].doublers2[27].out[0] +3776,1622,main.pedersen.segments[0].doublers2[27].out[1] +3777,1665,main.pedersen.segments[0].doublers2[27].lamda +3778,1666,main.pedersen.segments[0].doublers2[27].x1_2 +3888,1710,main.pedersen.segments[0].doublers2[28].in[0] +3889,1711,main.pedersen.segments[0].doublers2[28].in[1] +3890,1670,main.pedersen.segments[0].doublers2[28].out[0] +3891,1671,main.pedersen.segments[0].doublers2[28].out[1] +3892,1714,main.pedersen.segments[0].doublers2[28].lamda +3893,1715,main.pedersen.segments[0].doublers2[28].x1_2 +4003,1759,main.pedersen.segments[0].doublers2[29].in[0] +4004,1760,main.pedersen.segments[0].doublers2[29].in[1] +4005,1719,main.pedersen.segments[0].doublers2[29].out[0] +4006,1720,main.pedersen.segments[0].doublers2[29].out[1] +4007,1763,main.pedersen.segments[0].doublers2[29].lamda +4008,1764,main.pedersen.segments[0].doublers2[29].x1_2 +4118,1808,main.pedersen.segments[0].doublers2[30].in[0] +4119,1809,main.pedersen.segments[0].doublers2[30].in[1] +4120,1768,main.pedersen.segments[0].doublers2[30].out[0] +4121,1769,main.pedersen.segments[0].doublers2[30].out[1] +4122,1812,main.pedersen.segments[0].doublers2[30].lamda +4123,1813,main.pedersen.segments[0].doublers2[30].x1_2 +4233,1857,main.pedersen.segments[0].doublers2[31].in[0] +4234,1858,main.pedersen.segments[0].doublers2[31].in[1] +4235,1817,main.pedersen.segments[0].doublers2[31].out[0] +4236,1818,main.pedersen.segments[0].doublers2[31].out[1] +4237,1861,main.pedersen.segments[0].doublers2[31].lamda +4238,1862,main.pedersen.segments[0].doublers2[31].x1_2 +4348,1906,main.pedersen.segments[0].doublers2[32].in[0] +4349,1907,main.pedersen.segments[0].doublers2[32].in[1] +4350,1866,main.pedersen.segments[0].doublers2[32].out[0] +4351,1867,main.pedersen.segments[0].doublers2[32].out[1] +4352,1910,main.pedersen.segments[0].doublers2[32].lamda +4353,1911,main.pedersen.segments[0].doublers2[32].x1_2 +4463,1955,main.pedersen.segments[0].doublers2[33].in[0] +4464,1956,main.pedersen.segments[0].doublers2[33].in[1] +4465,1915,main.pedersen.segments[0].doublers2[33].out[0] +4466,1916,main.pedersen.segments[0].doublers2[33].out[1] +4467,1959,main.pedersen.segments[0].doublers2[33].lamda +4468,1960,main.pedersen.segments[0].doublers2[33].x1_2 +4578,2004,main.pedersen.segments[0].doublers2[34].in[0] +4579,2005,main.pedersen.segments[0].doublers2[34].in[1] +4580,1964,main.pedersen.segments[0].doublers2[34].out[0] +4581,1965,main.pedersen.segments[0].doublers2[34].out[1] +4582,2008,main.pedersen.segments[0].doublers2[34].lamda +4583,2009,main.pedersen.segments[0].doublers2[34].x1_2 +4693,2053,main.pedersen.segments[0].doublers2[35].in[0] +4694,2054,main.pedersen.segments[0].doublers2[35].in[1] +4695,2013,main.pedersen.segments[0].doublers2[35].out[0] +4696,2014,main.pedersen.segments[0].doublers2[35].out[1] +4697,2057,main.pedersen.segments[0].doublers2[35].lamda +4698,2058,main.pedersen.segments[0].doublers2[35].x1_2 +4808,2102,main.pedersen.segments[0].doublers2[36].in[0] +4809,2103,main.pedersen.segments[0].doublers2[36].in[1] +4810,2062,main.pedersen.segments[0].doublers2[36].out[0] +4811,2063,main.pedersen.segments[0].doublers2[36].out[1] +4812,2106,main.pedersen.segments[0].doublers2[36].lamda +4813,2107,main.pedersen.segments[0].doublers2[36].x1_2 +4923,2151,main.pedersen.segments[0].doublers2[37].in[0] +4924,2152,main.pedersen.segments[0].doublers2[37].in[1] +4925,2111,main.pedersen.segments[0].doublers2[37].out[0] +4926,2112,main.pedersen.segments[0].doublers2[37].out[1] +4927,2155,main.pedersen.segments[0].doublers2[37].lamda +4928,2156,main.pedersen.segments[0].doublers2[37].x1_2 +5038,2200,main.pedersen.segments[0].doublers2[38].in[0] +5039,2201,main.pedersen.segments[0].doublers2[38].in[1] +5040,2160,main.pedersen.segments[0].doublers2[38].out[0] +5041,2161,main.pedersen.segments[0].doublers2[38].out[1] +5042,2204,main.pedersen.segments[0].doublers2[38].lamda +5043,2205,main.pedersen.segments[0].doublers2[38].x1_2 +5153,2249,main.pedersen.segments[0].doublers2[39].in[0] +5154,2250,main.pedersen.segments[0].doublers2[39].in[1] +5155,2209,main.pedersen.segments[0].doublers2[39].out[0] +5156,2210,main.pedersen.segments[0].doublers2[39].out[1] +5157,2253,main.pedersen.segments[0].doublers2[39].lamda +5158,2254,main.pedersen.segments[0].doublers2[39].x1_2 +5268,2298,main.pedersen.segments[0].doublers2[40].in[0] +5269,2299,main.pedersen.segments[0].doublers2[40].in[1] +5270,2258,main.pedersen.segments[0].doublers2[40].out[0] +5271,2259,main.pedersen.segments[0].doublers2[40].out[1] +5272,2302,main.pedersen.segments[0].doublers2[40].lamda +5273,2303,main.pedersen.segments[0].doublers2[40].x1_2 +5383,2347,main.pedersen.segments[0].doublers2[41].in[0] +5384,2348,main.pedersen.segments[0].doublers2[41].in[1] +5385,2307,main.pedersen.segments[0].doublers2[41].out[0] +5386,2308,main.pedersen.segments[0].doublers2[41].out[1] +5387,2351,main.pedersen.segments[0].doublers2[41].lamda +5388,2352,main.pedersen.segments[0].doublers2[41].x1_2 +5498,2396,main.pedersen.segments[0].doublers2[42].in[0] +5499,2397,main.pedersen.segments[0].doublers2[42].in[1] +5500,2356,main.pedersen.segments[0].doublers2[42].out[0] +5501,2357,main.pedersen.segments[0].doublers2[42].out[1] +5502,2400,main.pedersen.segments[0].doublers2[42].lamda +5503,2401,main.pedersen.segments[0].doublers2[42].x1_2 +5613,2445,main.pedersen.segments[0].doublers2[43].in[0] +5614,2446,main.pedersen.segments[0].doublers2[43].in[1] +5615,2405,main.pedersen.segments[0].doublers2[43].out[0] +5616,2406,main.pedersen.segments[0].doublers2[43].out[1] +5617,2449,main.pedersen.segments[0].doublers2[43].lamda +5618,2450,main.pedersen.segments[0].doublers2[43].x1_2 +5728,2494,main.pedersen.segments[0].doublers2[44].in[0] +5729,2495,main.pedersen.segments[0].doublers2[44].in[1] +5730,2454,main.pedersen.segments[0].doublers2[44].out[0] +5731,2455,main.pedersen.segments[0].doublers2[44].out[1] +5732,2498,main.pedersen.segments[0].doublers2[44].lamda +5733,2499,main.pedersen.segments[0].doublers2[44].x1_2 +5843,2543,main.pedersen.segments[0].doublers2[45].in[0] +5844,2544,main.pedersen.segments[0].doublers2[45].in[1] +5845,2503,main.pedersen.segments[0].doublers2[45].out[0] +5846,2504,main.pedersen.segments[0].doublers2[45].out[1] +5847,2547,main.pedersen.segments[0].doublers2[45].lamda +5848,2548,main.pedersen.segments[0].doublers2[45].x1_2 +5958,2592,main.pedersen.segments[0].doublers2[46].in[0] +5959,2593,main.pedersen.segments[0].doublers2[46].in[1] +5960,2552,main.pedersen.segments[0].doublers2[46].out[0] +5961,2553,main.pedersen.segments[0].doublers2[46].out[1] +5962,2596,main.pedersen.segments[0].doublers2[46].lamda +5963,2597,main.pedersen.segments[0].doublers2[46].x1_2 +6073,2641,main.pedersen.segments[0].doublers2[47].in[0] +6074,2642,main.pedersen.segments[0].doublers2[47].in[1] +6075,2601,main.pedersen.segments[0].doublers2[47].out[0] +6076,2602,main.pedersen.segments[0].doublers2[47].out[1] +6077,2645,main.pedersen.segments[0].doublers2[47].lamda +6078,2646,main.pedersen.segments[0].doublers2[47].x1_2 +6188,2690,main.pedersen.segments[0].doublers2[48].in[0] +6189,2691,main.pedersen.segments[0].doublers2[48].in[1] +6190,2650,main.pedersen.segments[0].doublers2[48].out[0] +6191,2651,main.pedersen.segments[0].doublers2[48].out[1] +6192,2694,main.pedersen.segments[0].doublers2[48].lamda +6193,2695,main.pedersen.segments[0].doublers2[48].x1_2 +674,258,main.pedersen.segments[0].adders[0].in1[0] +675,259,main.pedersen.segments[0].adders[0].in1[1] +676,300,main.pedersen.segments[0].adders[0].in2[0] +677,301,main.pedersen.segments[0].adders[0].in2[1] +678,344,main.pedersen.segments[0].adders[0].out[0] +679,345,main.pedersen.segments[0].adders[0].out[1] +680,346,main.pedersen.segments[0].adders[0].lamda +789,344,main.pedersen.segments[0].adders[1].in1[0] +790,345,main.pedersen.segments[0].adders[1].in1[1] +791,349,main.pedersen.segments[0].adders[1].in2[0] +792,350,main.pedersen.segments[0].adders[1].in2[1] +793,393,main.pedersen.segments[0].adders[1].out[0] +794,394,main.pedersen.segments[0].adders[1].out[1] +795,395,main.pedersen.segments[0].adders[1].lamda +904,393,main.pedersen.segments[0].adders[2].in1[0] +905,394,main.pedersen.segments[0].adders[2].in1[1] +906,398,main.pedersen.segments[0].adders[2].in2[0] +907,399,main.pedersen.segments[0].adders[2].in2[1] +908,442,main.pedersen.segments[0].adders[2].out[0] +909,443,main.pedersen.segments[0].adders[2].out[1] +910,444,main.pedersen.segments[0].adders[2].lamda +1019,442,main.pedersen.segments[0].adders[3].in1[0] +1020,443,main.pedersen.segments[0].adders[3].in1[1] +1021,447,main.pedersen.segments[0].adders[3].in2[0] +1022,448,main.pedersen.segments[0].adders[3].in2[1] +1023,491,main.pedersen.segments[0].adders[3].out[0] +1024,492,main.pedersen.segments[0].adders[3].out[1] +1025,493,main.pedersen.segments[0].adders[3].lamda +1134,491,main.pedersen.segments[0].adders[4].in1[0] +1135,492,main.pedersen.segments[0].adders[4].in1[1] +1136,496,main.pedersen.segments[0].adders[4].in2[0] +1137,497,main.pedersen.segments[0].adders[4].in2[1] +1138,540,main.pedersen.segments[0].adders[4].out[0] +1139,541,main.pedersen.segments[0].adders[4].out[1] +1140,542,main.pedersen.segments[0].adders[4].lamda +1249,540,main.pedersen.segments[0].adders[5].in1[0] +1250,541,main.pedersen.segments[0].adders[5].in1[1] +1251,545,main.pedersen.segments[0].adders[5].in2[0] +1252,546,main.pedersen.segments[0].adders[5].in2[1] +1253,589,main.pedersen.segments[0].adders[5].out[0] +1254,590,main.pedersen.segments[0].adders[5].out[1] +1255,591,main.pedersen.segments[0].adders[5].lamda +1364,589,main.pedersen.segments[0].adders[6].in1[0] +1365,590,main.pedersen.segments[0].adders[6].in1[1] +1366,594,main.pedersen.segments[0].adders[6].in2[0] +1367,595,main.pedersen.segments[0].adders[6].in2[1] +1368,638,main.pedersen.segments[0].adders[6].out[0] +1369,639,main.pedersen.segments[0].adders[6].out[1] +1370,640,main.pedersen.segments[0].adders[6].lamda +1479,638,main.pedersen.segments[0].adders[7].in1[0] +1480,639,main.pedersen.segments[0].adders[7].in1[1] +1481,643,main.pedersen.segments[0].adders[7].in2[0] +1482,644,main.pedersen.segments[0].adders[7].in2[1] +1483,687,main.pedersen.segments[0].adders[7].out[0] +1484,688,main.pedersen.segments[0].adders[7].out[1] +1485,689,main.pedersen.segments[0].adders[7].lamda +1594,687,main.pedersen.segments[0].adders[8].in1[0] +1595,688,main.pedersen.segments[0].adders[8].in1[1] +1596,692,main.pedersen.segments[0].adders[8].in2[0] +1597,693,main.pedersen.segments[0].adders[8].in2[1] +1598,736,main.pedersen.segments[0].adders[8].out[0] +1599,737,main.pedersen.segments[0].adders[8].out[1] +1600,738,main.pedersen.segments[0].adders[8].lamda +1709,736,main.pedersen.segments[0].adders[9].in1[0] +1710,737,main.pedersen.segments[0].adders[9].in1[1] +1711,741,main.pedersen.segments[0].adders[9].in2[0] +1712,742,main.pedersen.segments[0].adders[9].in2[1] +1713,785,main.pedersen.segments[0].adders[9].out[0] +1714,786,main.pedersen.segments[0].adders[9].out[1] +1715,787,main.pedersen.segments[0].adders[9].lamda +1824,785,main.pedersen.segments[0].adders[10].in1[0] +1825,786,main.pedersen.segments[0].adders[10].in1[1] +1826,790,main.pedersen.segments[0].adders[10].in2[0] +1827,791,main.pedersen.segments[0].adders[10].in2[1] +1828,834,main.pedersen.segments[0].adders[10].out[0] +1829,835,main.pedersen.segments[0].adders[10].out[1] +1830,836,main.pedersen.segments[0].adders[10].lamda +1939,834,main.pedersen.segments[0].adders[11].in1[0] +1940,835,main.pedersen.segments[0].adders[11].in1[1] +1941,839,main.pedersen.segments[0].adders[11].in2[0] +1942,840,main.pedersen.segments[0].adders[11].in2[1] +1943,883,main.pedersen.segments[0].adders[11].out[0] +1944,884,main.pedersen.segments[0].adders[11].out[1] +1945,885,main.pedersen.segments[0].adders[11].lamda +2054,883,main.pedersen.segments[0].adders[12].in1[0] +2055,884,main.pedersen.segments[0].adders[12].in1[1] +2056,888,main.pedersen.segments[0].adders[12].in2[0] +2057,889,main.pedersen.segments[0].adders[12].in2[1] +2058,932,main.pedersen.segments[0].adders[12].out[0] +2059,933,main.pedersen.segments[0].adders[12].out[1] +2060,934,main.pedersen.segments[0].adders[12].lamda +2169,932,main.pedersen.segments[0].adders[13].in1[0] +2170,933,main.pedersen.segments[0].adders[13].in1[1] +2171,937,main.pedersen.segments[0].adders[13].in2[0] +2172,938,main.pedersen.segments[0].adders[13].in2[1] +2173,981,main.pedersen.segments[0].adders[13].out[0] +2174,982,main.pedersen.segments[0].adders[13].out[1] +2175,983,main.pedersen.segments[0].adders[13].lamda +2284,981,main.pedersen.segments[0].adders[14].in1[0] +2285,982,main.pedersen.segments[0].adders[14].in1[1] +2286,986,main.pedersen.segments[0].adders[14].in2[0] +2287,987,main.pedersen.segments[0].adders[14].in2[1] +2288,1030,main.pedersen.segments[0].adders[14].out[0] +2289,1031,main.pedersen.segments[0].adders[14].out[1] +2290,1032,main.pedersen.segments[0].adders[14].lamda +2399,1030,main.pedersen.segments[0].adders[15].in1[0] +2400,1031,main.pedersen.segments[0].adders[15].in1[1] +2401,1035,main.pedersen.segments[0].adders[15].in2[0] +2402,1036,main.pedersen.segments[0].adders[15].in2[1] +2403,1079,main.pedersen.segments[0].adders[15].out[0] +2404,1080,main.pedersen.segments[0].adders[15].out[1] +2405,1081,main.pedersen.segments[0].adders[15].lamda +2514,1079,main.pedersen.segments[0].adders[16].in1[0] +2515,1080,main.pedersen.segments[0].adders[16].in1[1] +2516,1084,main.pedersen.segments[0].adders[16].in2[0] +2517,1085,main.pedersen.segments[0].adders[16].in2[1] +2518,1128,main.pedersen.segments[0].adders[16].out[0] +2519,1129,main.pedersen.segments[0].adders[16].out[1] +2520,1130,main.pedersen.segments[0].adders[16].lamda +2629,1128,main.pedersen.segments[0].adders[17].in1[0] +2630,1129,main.pedersen.segments[0].adders[17].in1[1] +2631,1133,main.pedersen.segments[0].adders[17].in2[0] +2632,1134,main.pedersen.segments[0].adders[17].in2[1] +2633,1177,main.pedersen.segments[0].adders[17].out[0] +2634,1178,main.pedersen.segments[0].adders[17].out[1] +2635,1179,main.pedersen.segments[0].adders[17].lamda +2744,1177,main.pedersen.segments[0].adders[18].in1[0] +2745,1178,main.pedersen.segments[0].adders[18].in1[1] +2746,1182,main.pedersen.segments[0].adders[18].in2[0] +2747,1183,main.pedersen.segments[0].adders[18].in2[1] +2748,1226,main.pedersen.segments[0].adders[18].out[0] +2749,1227,main.pedersen.segments[0].adders[18].out[1] +2750,1228,main.pedersen.segments[0].adders[18].lamda +2859,1226,main.pedersen.segments[0].adders[19].in1[0] +2860,1227,main.pedersen.segments[0].adders[19].in1[1] +2861,1231,main.pedersen.segments[0].adders[19].in2[0] +2862,1232,main.pedersen.segments[0].adders[19].in2[1] +2863,1275,main.pedersen.segments[0].adders[19].out[0] +2864,1276,main.pedersen.segments[0].adders[19].out[1] +2865,1277,main.pedersen.segments[0].adders[19].lamda +2974,1275,main.pedersen.segments[0].adders[20].in1[0] +2975,1276,main.pedersen.segments[0].adders[20].in1[1] +2976,1280,main.pedersen.segments[0].adders[20].in2[0] +2977,1281,main.pedersen.segments[0].adders[20].in2[1] +2978,1324,main.pedersen.segments[0].adders[20].out[0] +2979,1325,main.pedersen.segments[0].adders[20].out[1] +2980,1326,main.pedersen.segments[0].adders[20].lamda +3089,1324,main.pedersen.segments[0].adders[21].in1[0] +3090,1325,main.pedersen.segments[0].adders[21].in1[1] +3091,1329,main.pedersen.segments[0].adders[21].in2[0] +3092,1330,main.pedersen.segments[0].adders[21].in2[1] +3093,1373,main.pedersen.segments[0].adders[21].out[0] +3094,1374,main.pedersen.segments[0].adders[21].out[1] +3095,1375,main.pedersen.segments[0].adders[21].lamda +3204,1373,main.pedersen.segments[0].adders[22].in1[0] +3205,1374,main.pedersen.segments[0].adders[22].in1[1] +3206,1378,main.pedersen.segments[0].adders[22].in2[0] +3207,1379,main.pedersen.segments[0].adders[22].in2[1] +3208,1422,main.pedersen.segments[0].adders[22].out[0] +3209,1423,main.pedersen.segments[0].adders[22].out[1] +3210,1424,main.pedersen.segments[0].adders[22].lamda +3319,1422,main.pedersen.segments[0].adders[23].in1[0] +3320,1423,main.pedersen.segments[0].adders[23].in1[1] +3321,1427,main.pedersen.segments[0].adders[23].in2[0] +3322,1428,main.pedersen.segments[0].adders[23].in2[1] +3323,1471,main.pedersen.segments[0].adders[23].out[0] +3324,1472,main.pedersen.segments[0].adders[23].out[1] +3325,1473,main.pedersen.segments[0].adders[23].lamda +3434,1471,main.pedersen.segments[0].adders[24].in1[0] +3435,1472,main.pedersen.segments[0].adders[24].in1[1] +3436,1476,main.pedersen.segments[0].adders[24].in2[0] +3437,1477,main.pedersen.segments[0].adders[24].in2[1] +3438,1520,main.pedersen.segments[0].adders[24].out[0] +3439,1521,main.pedersen.segments[0].adders[24].out[1] +3440,1522,main.pedersen.segments[0].adders[24].lamda +3549,1520,main.pedersen.segments[0].adders[25].in1[0] +3550,1521,main.pedersen.segments[0].adders[25].in1[1] +3551,1525,main.pedersen.segments[0].adders[25].in2[0] +3552,1526,main.pedersen.segments[0].adders[25].in2[1] +3553,1569,main.pedersen.segments[0].adders[25].out[0] +3554,1570,main.pedersen.segments[0].adders[25].out[1] +3555,1571,main.pedersen.segments[0].adders[25].lamda +3664,1569,main.pedersen.segments[0].adders[26].in1[0] +3665,1570,main.pedersen.segments[0].adders[26].in1[1] +3666,1574,main.pedersen.segments[0].adders[26].in2[0] +3667,1575,main.pedersen.segments[0].adders[26].in2[1] +3668,1618,main.pedersen.segments[0].adders[26].out[0] +3669,1619,main.pedersen.segments[0].adders[26].out[1] +3670,1620,main.pedersen.segments[0].adders[26].lamda +3779,1618,main.pedersen.segments[0].adders[27].in1[0] +3780,1619,main.pedersen.segments[0].adders[27].in1[1] +3781,1623,main.pedersen.segments[0].adders[27].in2[0] +3782,1624,main.pedersen.segments[0].adders[27].in2[1] +3783,1667,main.pedersen.segments[0].adders[27].out[0] +3784,1668,main.pedersen.segments[0].adders[27].out[1] +3785,1669,main.pedersen.segments[0].adders[27].lamda +3894,1667,main.pedersen.segments[0].adders[28].in1[0] +3895,1668,main.pedersen.segments[0].adders[28].in1[1] +3896,1672,main.pedersen.segments[0].adders[28].in2[0] +3897,1673,main.pedersen.segments[0].adders[28].in2[1] +3898,1716,main.pedersen.segments[0].adders[28].out[0] +3899,1717,main.pedersen.segments[0].adders[28].out[1] +3900,1718,main.pedersen.segments[0].adders[28].lamda +4009,1716,main.pedersen.segments[0].adders[29].in1[0] +4010,1717,main.pedersen.segments[0].adders[29].in1[1] +4011,1721,main.pedersen.segments[0].adders[29].in2[0] +4012,1722,main.pedersen.segments[0].adders[29].in2[1] +4013,1765,main.pedersen.segments[0].adders[29].out[0] +4014,1766,main.pedersen.segments[0].adders[29].out[1] +4015,1767,main.pedersen.segments[0].adders[29].lamda +4124,1765,main.pedersen.segments[0].adders[30].in1[0] +4125,1766,main.pedersen.segments[0].adders[30].in1[1] +4126,1770,main.pedersen.segments[0].adders[30].in2[0] +4127,1771,main.pedersen.segments[0].adders[30].in2[1] +4128,1814,main.pedersen.segments[0].adders[30].out[0] +4129,1815,main.pedersen.segments[0].adders[30].out[1] +4130,1816,main.pedersen.segments[0].adders[30].lamda +4239,1814,main.pedersen.segments[0].adders[31].in1[0] +4240,1815,main.pedersen.segments[0].adders[31].in1[1] +4241,1819,main.pedersen.segments[0].adders[31].in2[0] +4242,1820,main.pedersen.segments[0].adders[31].in2[1] +4243,1863,main.pedersen.segments[0].adders[31].out[0] +4244,1864,main.pedersen.segments[0].adders[31].out[1] +4245,1865,main.pedersen.segments[0].adders[31].lamda +4354,1863,main.pedersen.segments[0].adders[32].in1[0] +4355,1864,main.pedersen.segments[0].adders[32].in1[1] +4356,1868,main.pedersen.segments[0].adders[32].in2[0] +4357,1869,main.pedersen.segments[0].adders[32].in2[1] +4358,1912,main.pedersen.segments[0].adders[32].out[0] +4359,1913,main.pedersen.segments[0].adders[32].out[1] +4360,1914,main.pedersen.segments[0].adders[32].lamda +4469,1912,main.pedersen.segments[0].adders[33].in1[0] +4470,1913,main.pedersen.segments[0].adders[33].in1[1] +4471,1917,main.pedersen.segments[0].adders[33].in2[0] +4472,1918,main.pedersen.segments[0].adders[33].in2[1] +4473,1961,main.pedersen.segments[0].adders[33].out[0] +4474,1962,main.pedersen.segments[0].adders[33].out[1] +4475,1963,main.pedersen.segments[0].adders[33].lamda +4584,1961,main.pedersen.segments[0].adders[34].in1[0] +4585,1962,main.pedersen.segments[0].adders[34].in1[1] +4586,1966,main.pedersen.segments[0].adders[34].in2[0] +4587,1967,main.pedersen.segments[0].adders[34].in2[1] +4588,2010,main.pedersen.segments[0].adders[34].out[0] +4589,2011,main.pedersen.segments[0].adders[34].out[1] +4590,2012,main.pedersen.segments[0].adders[34].lamda +4699,2010,main.pedersen.segments[0].adders[35].in1[0] +4700,2011,main.pedersen.segments[0].adders[35].in1[1] +4701,2015,main.pedersen.segments[0].adders[35].in2[0] +4702,2016,main.pedersen.segments[0].adders[35].in2[1] +4703,2059,main.pedersen.segments[0].adders[35].out[0] +4704,2060,main.pedersen.segments[0].adders[35].out[1] +4705,2061,main.pedersen.segments[0].adders[35].lamda +4814,2059,main.pedersen.segments[0].adders[36].in1[0] +4815,2060,main.pedersen.segments[0].adders[36].in1[1] +4816,2064,main.pedersen.segments[0].adders[36].in2[0] +4817,2065,main.pedersen.segments[0].adders[36].in2[1] +4818,2108,main.pedersen.segments[0].adders[36].out[0] +4819,2109,main.pedersen.segments[0].adders[36].out[1] +4820,2110,main.pedersen.segments[0].adders[36].lamda +4929,2108,main.pedersen.segments[0].adders[37].in1[0] +4930,2109,main.pedersen.segments[0].adders[37].in1[1] +4931,2113,main.pedersen.segments[0].adders[37].in2[0] +4932,2114,main.pedersen.segments[0].adders[37].in2[1] +4933,2157,main.pedersen.segments[0].adders[37].out[0] +4934,2158,main.pedersen.segments[0].adders[37].out[1] +4935,2159,main.pedersen.segments[0].adders[37].lamda +5044,2157,main.pedersen.segments[0].adders[38].in1[0] +5045,2158,main.pedersen.segments[0].adders[38].in1[1] +5046,2162,main.pedersen.segments[0].adders[38].in2[0] +5047,2163,main.pedersen.segments[0].adders[38].in2[1] +5048,2206,main.pedersen.segments[0].adders[38].out[0] +5049,2207,main.pedersen.segments[0].adders[38].out[1] +5050,2208,main.pedersen.segments[0].adders[38].lamda +5159,2206,main.pedersen.segments[0].adders[39].in1[0] +5160,2207,main.pedersen.segments[0].adders[39].in1[1] +5161,2211,main.pedersen.segments[0].adders[39].in2[0] +5162,2212,main.pedersen.segments[0].adders[39].in2[1] +5163,2255,main.pedersen.segments[0].adders[39].out[0] +5164,2256,main.pedersen.segments[0].adders[39].out[1] +5165,2257,main.pedersen.segments[0].adders[39].lamda +5274,2255,main.pedersen.segments[0].adders[40].in1[0] +5275,2256,main.pedersen.segments[0].adders[40].in1[1] +5276,2260,main.pedersen.segments[0].adders[40].in2[0] +5277,2261,main.pedersen.segments[0].adders[40].in2[1] +5278,2304,main.pedersen.segments[0].adders[40].out[0] +5279,2305,main.pedersen.segments[0].adders[40].out[1] +5280,2306,main.pedersen.segments[0].adders[40].lamda +5389,2304,main.pedersen.segments[0].adders[41].in1[0] +5390,2305,main.pedersen.segments[0].adders[41].in1[1] +5391,2309,main.pedersen.segments[0].adders[41].in2[0] +5392,2310,main.pedersen.segments[0].adders[41].in2[1] +5393,2353,main.pedersen.segments[0].adders[41].out[0] +5394,2354,main.pedersen.segments[0].adders[41].out[1] +5395,2355,main.pedersen.segments[0].adders[41].lamda +5504,2353,main.pedersen.segments[0].adders[42].in1[0] +5505,2354,main.pedersen.segments[0].adders[42].in1[1] +5506,2358,main.pedersen.segments[0].adders[42].in2[0] +5507,2359,main.pedersen.segments[0].adders[42].in2[1] +5508,2402,main.pedersen.segments[0].adders[42].out[0] +5509,2403,main.pedersen.segments[0].adders[42].out[1] +5510,2404,main.pedersen.segments[0].adders[42].lamda +5619,2402,main.pedersen.segments[0].adders[43].in1[0] +5620,2403,main.pedersen.segments[0].adders[43].in1[1] +5621,2407,main.pedersen.segments[0].adders[43].in2[0] +5622,2408,main.pedersen.segments[0].adders[43].in2[1] +5623,2451,main.pedersen.segments[0].adders[43].out[0] +5624,2452,main.pedersen.segments[0].adders[43].out[1] +5625,2453,main.pedersen.segments[0].adders[43].lamda +5734,2451,main.pedersen.segments[0].adders[44].in1[0] +5735,2452,main.pedersen.segments[0].adders[44].in1[1] +5736,2456,main.pedersen.segments[0].adders[44].in2[0] +5737,2457,main.pedersen.segments[0].adders[44].in2[1] +5738,2500,main.pedersen.segments[0].adders[44].out[0] +5739,2501,main.pedersen.segments[0].adders[44].out[1] +5740,2502,main.pedersen.segments[0].adders[44].lamda +5849,2500,main.pedersen.segments[0].adders[45].in1[0] +5850,2501,main.pedersen.segments[0].adders[45].in1[1] +5851,2505,main.pedersen.segments[0].adders[45].in2[0] +5852,2506,main.pedersen.segments[0].adders[45].in2[1] +5853,2549,main.pedersen.segments[0].adders[45].out[0] +5854,2550,main.pedersen.segments[0].adders[45].out[1] +5855,2551,main.pedersen.segments[0].adders[45].lamda +5964,2549,main.pedersen.segments[0].adders[46].in1[0] +5965,2550,main.pedersen.segments[0].adders[46].in1[1] +5966,2554,main.pedersen.segments[0].adders[46].in2[0] +5967,2555,main.pedersen.segments[0].adders[46].in2[1] +5968,2598,main.pedersen.segments[0].adders[46].out[0] +5969,2599,main.pedersen.segments[0].adders[46].out[1] +5970,2600,main.pedersen.segments[0].adders[46].lamda +6079,2598,main.pedersen.segments[0].adders[47].in1[0] +6080,2599,main.pedersen.segments[0].adders[47].in1[1] +6081,2603,main.pedersen.segments[0].adders[47].in2[0] +6082,2604,main.pedersen.segments[0].adders[47].in2[1] +6083,2647,main.pedersen.segments[0].adders[47].out[0] +6084,2648,main.pedersen.segments[0].adders[47].out[1] +6085,2649,main.pedersen.segments[0].adders[47].lamda +6194,2647,main.pedersen.segments[0].adders[48].in1[0] +6195,2648,main.pedersen.segments[0].adders[48].in1[1] +6196,2652,main.pedersen.segments[0].adders[48].in2[0] +6197,2653,main.pedersen.segments[0].adders[48].in2[1] +6198,2696,main.pedersen.segments[0].adders[48].out[0] +6199,2697,main.pedersen.segments[0].adders[48].out[1] +6200,2698,main.pedersen.segments[0].adders[48].lamda +6201,2696,main.pedersen.segments[0].m2e.in[0] +6202,2697,main.pedersen.segments[0].m2e.in[1] +6203,256,main.pedersen.segments[0].m2e.out[0] +6204,257,main.pedersen.segments[0].m2e.out[1] +6205,203,main.pedersen.segments[1].in[0] +6206,204,main.pedersen.segments[1].in[1] +6207,205,main.pedersen.segments[1].in[2] +6208,206,main.pedersen.segments[1].in[3] +6209,207,main.pedersen.segments[1].in[4] +6210,208,main.pedersen.segments[1].in[5] +6211,209,main.pedersen.segments[1].in[6] +6212,210,main.pedersen.segments[1].in[7] +6213,211,main.pedersen.segments[1].in[8] +6214,212,main.pedersen.segments[1].in[9] +6215,213,main.pedersen.segments[1].in[10] +6216,214,main.pedersen.segments[1].in[11] +6217,215,main.pedersen.segments[1].in[12] +6218,216,main.pedersen.segments[1].in[13] +6219,217,main.pedersen.segments[1].in[14] +6220,218,main.pedersen.segments[1].in[15] +6221,219,main.pedersen.segments[1].in[16] +6222,220,main.pedersen.segments[1].in[17] +6223,221,main.pedersen.segments[1].in[18] +6224,222,main.pedersen.segments[1].in[19] +6225,223,main.pedersen.segments[1].in[20] +6226,224,main.pedersen.segments[1].in[21] +6227,225,main.pedersen.segments[1].in[22] +6228,226,main.pedersen.segments[1].in[23] +6229,227,main.pedersen.segments[1].in[24] +6230,228,main.pedersen.segments[1].in[25] +6231,229,main.pedersen.segments[1].in[26] +6232,230,main.pedersen.segments[1].in[27] +6233,231,main.pedersen.segments[1].in[28] +6234,232,main.pedersen.segments[1].in[29] +6235,233,main.pedersen.segments[1].in[30] +6236,234,main.pedersen.segments[1].in[31] +6237,235,main.pedersen.segments[1].in[32] +6238,236,main.pedersen.segments[1].in[33] +6239,237,main.pedersen.segments[1].in[34] +6240,238,main.pedersen.segments[1].in[35] +6241,239,main.pedersen.segments[1].in[36] +6242,240,main.pedersen.segments[1].in[37] +6243,241,main.pedersen.segments[1].in[38] +6244,242,main.pedersen.segments[1].in[39] +6245,243,main.pedersen.segments[1].in[40] +6246,244,main.pedersen.segments[1].in[41] +6247,245,main.pedersen.segments[1].in[42] +6248,246,main.pedersen.segments[1].in[43] +6249,247,main.pedersen.segments[1].in[44] +6250,248,main.pedersen.segments[1].in[45] +6251,249,main.pedersen.segments[1].in[46] +6252,250,main.pedersen.segments[1].in[47] +6253,251,main.pedersen.segments[1].in[48] +6254,252,main.pedersen.segments[1].in[49] +6255,253,main.pedersen.segments[1].in[50] +6256,254,main.pedersen.segments[1].in[51] +6257,255,main.pedersen.segments[1].in[52] +6258,3511,main.pedersen.segments[1].in[53] +6259,3512,main.pedersen.segments[1].in[54] +6260,3513,main.pedersen.segments[1].in[55] +6261,3516,main.pedersen.segments[1].base[0] +6262,3517,main.pedersen.segments[1].base[1] +6263,2699,main.pedersen.segments[1].out[0] +6264,2700,main.pedersen.segments[1].out[1] +6265,3516,main.pedersen.segments[1].e2m.in[0] +6266,3517,main.pedersen.segments[1].e2m.in[1] +6267,3483,main.pedersen.segments[1].e2m.out[0] +6268,3484,main.pedersen.segments[1].e2m.out[1] +6269,203,main.pedersen.segments[1].windows[0].in[0] +6270,204,main.pedersen.segments[1].windows[0].in[1] +6271,205,main.pedersen.segments[1].windows[0].in[2] +6272,206,main.pedersen.segments[1].windows[0].in[3] +6273,3483,main.pedersen.segments[1].windows[0].base[0] +6274,3484,main.pedersen.segments[1].windows[0].base[1] +6275,2701,main.pedersen.segments[1].windows[0].out[0] +6276,2702,main.pedersen.segments[1].windows[0].out[1] +6277,2703,main.pedersen.segments[1].windows[0].out8[0] +6278,2704,main.pedersen.segments[1].windows[0].out8[1] +6279,3483,main.pedersen.segments[1].windows[0].mux.c[0][0] +6280,2705,main.pedersen.segments[1].windows[0].mux.c[0][1] +6281,2706,main.pedersen.segments[1].windows[0].mux.c[0][2] +6282,2707,main.pedersen.segments[1].windows[0].mux.c[0][3] +6283,2708,main.pedersen.segments[1].windows[0].mux.c[0][4] +6284,2709,main.pedersen.segments[1].windows[0].mux.c[0][5] +6285,2710,main.pedersen.segments[1].windows[0].mux.c[0][6] +6286,2703,main.pedersen.segments[1].windows[0].mux.c[0][7] +6287,3484,main.pedersen.segments[1].windows[0].mux.c[1][0] +6288,2711,main.pedersen.segments[1].windows[0].mux.c[1][1] +6289,2712,main.pedersen.segments[1].windows[0].mux.c[1][2] +6290,2713,main.pedersen.segments[1].windows[0].mux.c[1][3] +6291,2714,main.pedersen.segments[1].windows[0].mux.c[1][4] +6292,2715,main.pedersen.segments[1].windows[0].mux.c[1][5] +6293,2716,main.pedersen.segments[1].windows[0].mux.c[1][6] +6294,2704,main.pedersen.segments[1].windows[0].mux.c[1][7] +6295,203,main.pedersen.segments[1].windows[0].mux.s[0] +6296,204,main.pedersen.segments[1].windows[0].mux.s[1] +6297,205,main.pedersen.segments[1].windows[0].mux.s[2] +6298,2701,main.pedersen.segments[1].windows[0].mux.out[0] +6299,2717,main.pedersen.segments[1].windows[0].mux.out[1] +6300,2718,main.pedersen.segments[1].windows[0].mux.a210[0] +6301,2719,main.pedersen.segments[1].windows[0].mux.a210[1] +6302,2720,main.pedersen.segments[1].windows[0].mux.a21[0] +6303,2721,main.pedersen.segments[1].windows[0].mux.a21[1] +6304,2722,main.pedersen.segments[1].windows[0].mux.a20[0] +6305,2723,main.pedersen.segments[1].windows[0].mux.a20[1] +6306,2724,main.pedersen.segments[1].windows[0].mux.a2[0] +6307,2725,main.pedersen.segments[1].windows[0].mux.a2[1] +6308,2726,main.pedersen.segments[1].windows[0].mux.a10[0] +6309,2727,main.pedersen.segments[1].windows[0].mux.a10[1] +6310,2728,main.pedersen.segments[1].windows[0].mux.a1[0] +6311,2729,main.pedersen.segments[1].windows[0].mux.a1[1] +6312,2730,main.pedersen.segments[1].windows[0].mux.a0[0] +6313,2731,main.pedersen.segments[1].windows[0].mux.a0[1] +6314,3483,main.pedersen.segments[1].windows[0].mux.a[0] +6315,3484,main.pedersen.segments[1].windows[0].mux.a[1] +6316,2732,main.pedersen.segments[1].windows[0].mux.s10 +6317,3483,main.pedersen.segments[1].windows[0].dbl2.in[0] +6318,3484,main.pedersen.segments[1].windows[0].dbl2.in[1] +6319,2705,main.pedersen.segments[1].windows[0].dbl2.out[0] +6320,2711,main.pedersen.segments[1].windows[0].dbl2.out[1] +6321,2733,main.pedersen.segments[1].windows[0].dbl2.lamda +6322,2734,main.pedersen.segments[1].windows[0].dbl2.x1_2 +6323,3483,main.pedersen.segments[1].windows[0].adr3.in1[0] +6324,3484,main.pedersen.segments[1].windows[0].adr3.in1[1] +6325,2705,main.pedersen.segments[1].windows[0].adr3.in2[0] +6326,2711,main.pedersen.segments[1].windows[0].adr3.in2[1] +6327,2706,main.pedersen.segments[1].windows[0].adr3.out[0] +6328,2712,main.pedersen.segments[1].windows[0].adr3.out[1] +6329,2735,main.pedersen.segments[1].windows[0].adr3.lamda +6330,3483,main.pedersen.segments[1].windows[0].adr4.in1[0] +6331,3484,main.pedersen.segments[1].windows[0].adr4.in1[1] +6332,2706,main.pedersen.segments[1].windows[0].adr4.in2[0] +6333,2712,main.pedersen.segments[1].windows[0].adr4.in2[1] +6334,2707,main.pedersen.segments[1].windows[0].adr4.out[0] +6335,2713,main.pedersen.segments[1].windows[0].adr4.out[1] +6336,2736,main.pedersen.segments[1].windows[0].adr4.lamda +6337,3483,main.pedersen.segments[1].windows[0].adr5.in1[0] +6338,3484,main.pedersen.segments[1].windows[0].adr5.in1[1] +6339,2707,main.pedersen.segments[1].windows[0].adr5.in2[0] +6340,2713,main.pedersen.segments[1].windows[0].adr5.in2[1] +6341,2708,main.pedersen.segments[1].windows[0].adr5.out[0] +6342,2714,main.pedersen.segments[1].windows[0].adr5.out[1] +6343,2737,main.pedersen.segments[1].windows[0].adr5.lamda +6344,3483,main.pedersen.segments[1].windows[0].adr6.in1[0] +6345,3484,main.pedersen.segments[1].windows[0].adr6.in1[1] +6346,2708,main.pedersen.segments[1].windows[0].adr6.in2[0] +6347,2714,main.pedersen.segments[1].windows[0].adr6.in2[1] +6348,2709,main.pedersen.segments[1].windows[0].adr6.out[0] +6349,2715,main.pedersen.segments[1].windows[0].adr6.out[1] +6350,2738,main.pedersen.segments[1].windows[0].adr6.lamda +6351,3483,main.pedersen.segments[1].windows[0].adr7.in1[0] +6352,3484,main.pedersen.segments[1].windows[0].adr7.in1[1] +6353,2709,main.pedersen.segments[1].windows[0].adr7.in2[0] +6354,2715,main.pedersen.segments[1].windows[0].adr7.in2[1] +6355,2710,main.pedersen.segments[1].windows[0].adr7.out[0] +6356,2716,main.pedersen.segments[1].windows[0].adr7.out[1] +6357,2739,main.pedersen.segments[1].windows[0].adr7.lamda +6358,3483,main.pedersen.segments[1].windows[0].adr8.in1[0] +6359,3484,main.pedersen.segments[1].windows[0].adr8.in1[1] +6360,2710,main.pedersen.segments[1].windows[0].adr8.in2[0] +6361,2716,main.pedersen.segments[1].windows[0].adr8.in2[1] +6362,2703,main.pedersen.segments[1].windows[0].adr8.out[0] +6363,2704,main.pedersen.segments[1].windows[0].adr8.out[1] +6364,2740,main.pedersen.segments[1].windows[0].adr8.lamda +6365,207,main.pedersen.segments[1].windows[1].in[0] +6366,208,main.pedersen.segments[1].windows[1].in[1] +6367,209,main.pedersen.segments[1].windows[1].in[2] +6368,210,main.pedersen.segments[1].windows[1].in[3] +6369,2741,main.pedersen.segments[1].windows[1].base[0] +6370,2742,main.pedersen.segments[1].windows[1].base[1] +6371,2743,main.pedersen.segments[1].windows[1].out[0] +6372,2744,main.pedersen.segments[1].windows[1].out[1] +6373,2745,main.pedersen.segments[1].windows[1].out8[0] +6374,2746,main.pedersen.segments[1].windows[1].out8[1] +6375,2741,main.pedersen.segments[1].windows[1].mux.c[0][0] +6376,2747,main.pedersen.segments[1].windows[1].mux.c[0][1] +6377,2748,main.pedersen.segments[1].windows[1].mux.c[0][2] +6378,2749,main.pedersen.segments[1].windows[1].mux.c[0][3] +6379,2750,main.pedersen.segments[1].windows[1].mux.c[0][4] +6380,2751,main.pedersen.segments[1].windows[1].mux.c[0][5] +6381,2752,main.pedersen.segments[1].windows[1].mux.c[0][6] +6382,2745,main.pedersen.segments[1].windows[1].mux.c[0][7] +6383,2742,main.pedersen.segments[1].windows[1].mux.c[1][0] +6384,2753,main.pedersen.segments[1].windows[1].mux.c[1][1] +6385,2754,main.pedersen.segments[1].windows[1].mux.c[1][2] +6386,2755,main.pedersen.segments[1].windows[1].mux.c[1][3] +6387,2756,main.pedersen.segments[1].windows[1].mux.c[1][4] +6388,2757,main.pedersen.segments[1].windows[1].mux.c[1][5] +6389,2758,main.pedersen.segments[1].windows[1].mux.c[1][6] +6390,2746,main.pedersen.segments[1].windows[1].mux.c[1][7] +6391,207,main.pedersen.segments[1].windows[1].mux.s[0] +6392,208,main.pedersen.segments[1].windows[1].mux.s[1] +6393,209,main.pedersen.segments[1].windows[1].mux.s[2] +6394,2743,main.pedersen.segments[1].windows[1].mux.out[0] +6395,2759,main.pedersen.segments[1].windows[1].mux.out[1] +6396,2760,main.pedersen.segments[1].windows[1].mux.a210[0] +6397,2761,main.pedersen.segments[1].windows[1].mux.a210[1] +6398,2762,main.pedersen.segments[1].windows[1].mux.a21[0] +6399,2763,main.pedersen.segments[1].windows[1].mux.a21[1] +6400,2764,main.pedersen.segments[1].windows[1].mux.a20[0] +6401,2765,main.pedersen.segments[1].windows[1].mux.a20[1] +6402,3485,main.pedersen.segments[1].windows[1].mux.a2[0] +6403,3486,main.pedersen.segments[1].windows[1].mux.a2[1] +6404,2766,main.pedersen.segments[1].windows[1].mux.a10[0] +6405,2767,main.pedersen.segments[1].windows[1].mux.a10[1] +6406,2768,main.pedersen.segments[1].windows[1].mux.a1[0] +6407,2769,main.pedersen.segments[1].windows[1].mux.a1[1] +6408,2770,main.pedersen.segments[1].windows[1].mux.a0[0] +6409,2771,main.pedersen.segments[1].windows[1].mux.a0[1] +6410,2741,main.pedersen.segments[1].windows[1].mux.a[0] +6411,2742,main.pedersen.segments[1].windows[1].mux.a[1] +6412,2772,main.pedersen.segments[1].windows[1].mux.s10 +6413,2741,main.pedersen.segments[1].windows[1].dbl2.in[0] +6414,2742,main.pedersen.segments[1].windows[1].dbl2.in[1] +6415,2747,main.pedersen.segments[1].windows[1].dbl2.out[0] +6416,2753,main.pedersen.segments[1].windows[1].dbl2.out[1] +6417,2773,main.pedersen.segments[1].windows[1].dbl2.lamda +6418,2774,main.pedersen.segments[1].windows[1].dbl2.x1_2 +6419,2741,main.pedersen.segments[1].windows[1].adr3.in1[0] +6420,2742,main.pedersen.segments[1].windows[1].adr3.in1[1] +6421,2747,main.pedersen.segments[1].windows[1].adr3.in2[0] +6422,2753,main.pedersen.segments[1].windows[1].adr3.in2[1] +6423,2748,main.pedersen.segments[1].windows[1].adr3.out[0] +6424,2754,main.pedersen.segments[1].windows[1].adr3.out[1] +6425,2775,main.pedersen.segments[1].windows[1].adr3.lamda +6426,2741,main.pedersen.segments[1].windows[1].adr4.in1[0] +6427,2742,main.pedersen.segments[1].windows[1].adr4.in1[1] +6428,2748,main.pedersen.segments[1].windows[1].adr4.in2[0] +6429,2754,main.pedersen.segments[1].windows[1].adr4.in2[1] +6430,2749,main.pedersen.segments[1].windows[1].adr4.out[0] +6431,2755,main.pedersen.segments[1].windows[1].adr4.out[1] +6432,2776,main.pedersen.segments[1].windows[1].adr4.lamda +6433,2741,main.pedersen.segments[1].windows[1].adr5.in1[0] +6434,2742,main.pedersen.segments[1].windows[1].adr5.in1[1] +6435,2749,main.pedersen.segments[1].windows[1].adr5.in2[0] +6436,2755,main.pedersen.segments[1].windows[1].adr5.in2[1] +6437,2750,main.pedersen.segments[1].windows[1].adr5.out[0] +6438,2756,main.pedersen.segments[1].windows[1].adr5.out[1] +6439,2777,main.pedersen.segments[1].windows[1].adr5.lamda +6440,2741,main.pedersen.segments[1].windows[1].adr6.in1[0] +6441,2742,main.pedersen.segments[1].windows[1].adr6.in1[1] +6442,2750,main.pedersen.segments[1].windows[1].adr6.in2[0] +6443,2756,main.pedersen.segments[1].windows[1].adr6.in2[1] +6444,2751,main.pedersen.segments[1].windows[1].adr6.out[0] +6445,2757,main.pedersen.segments[1].windows[1].adr6.out[1] +6446,2778,main.pedersen.segments[1].windows[1].adr6.lamda +6447,2741,main.pedersen.segments[1].windows[1].adr7.in1[0] +6448,2742,main.pedersen.segments[1].windows[1].adr7.in1[1] +6449,2751,main.pedersen.segments[1].windows[1].adr7.in2[0] +6450,2757,main.pedersen.segments[1].windows[1].adr7.in2[1] +6451,2752,main.pedersen.segments[1].windows[1].adr7.out[0] +6452,2758,main.pedersen.segments[1].windows[1].adr7.out[1] +6453,2779,main.pedersen.segments[1].windows[1].adr7.lamda +6454,2741,main.pedersen.segments[1].windows[1].adr8.in1[0] +6455,2742,main.pedersen.segments[1].windows[1].adr8.in1[1] +6456,2752,main.pedersen.segments[1].windows[1].adr8.in2[0] +6457,2758,main.pedersen.segments[1].windows[1].adr8.in2[1] +6458,2745,main.pedersen.segments[1].windows[1].adr8.out[0] +6459,2746,main.pedersen.segments[1].windows[1].adr8.out[1] +6460,2780,main.pedersen.segments[1].windows[1].adr8.lamda +6480,211,main.pedersen.segments[1].windows[2].in[0] +6481,212,main.pedersen.segments[1].windows[2].in[1] +6482,213,main.pedersen.segments[1].windows[2].in[2] +6483,214,main.pedersen.segments[1].windows[2].in[3] +6484,2790,main.pedersen.segments[1].windows[2].base[0] +6485,2791,main.pedersen.segments[1].windows[2].base[1] +6486,2792,main.pedersen.segments[1].windows[2].out[0] +6487,2793,main.pedersen.segments[1].windows[2].out[1] +6488,2794,main.pedersen.segments[1].windows[2].out8[0] +6489,2795,main.pedersen.segments[1].windows[2].out8[1] +6490,2790,main.pedersen.segments[1].windows[2].mux.c[0][0] +6491,2796,main.pedersen.segments[1].windows[2].mux.c[0][1] +6492,2797,main.pedersen.segments[1].windows[2].mux.c[0][2] +6493,2798,main.pedersen.segments[1].windows[2].mux.c[0][3] +6494,2799,main.pedersen.segments[1].windows[2].mux.c[0][4] +6495,2800,main.pedersen.segments[1].windows[2].mux.c[0][5] +6496,2801,main.pedersen.segments[1].windows[2].mux.c[0][6] +6497,2794,main.pedersen.segments[1].windows[2].mux.c[0][7] +6498,2791,main.pedersen.segments[1].windows[2].mux.c[1][0] +6499,2802,main.pedersen.segments[1].windows[2].mux.c[1][1] +6500,2803,main.pedersen.segments[1].windows[2].mux.c[1][2] +6501,2804,main.pedersen.segments[1].windows[2].mux.c[1][3] +6502,2805,main.pedersen.segments[1].windows[2].mux.c[1][4] +6503,2806,main.pedersen.segments[1].windows[2].mux.c[1][5] +6504,2807,main.pedersen.segments[1].windows[2].mux.c[1][6] +6505,2795,main.pedersen.segments[1].windows[2].mux.c[1][7] +6506,211,main.pedersen.segments[1].windows[2].mux.s[0] +6507,212,main.pedersen.segments[1].windows[2].mux.s[1] +6508,213,main.pedersen.segments[1].windows[2].mux.s[2] +6509,2792,main.pedersen.segments[1].windows[2].mux.out[0] +6510,2808,main.pedersen.segments[1].windows[2].mux.out[1] +6511,2809,main.pedersen.segments[1].windows[2].mux.a210[0] +6512,2810,main.pedersen.segments[1].windows[2].mux.a210[1] +6513,2811,main.pedersen.segments[1].windows[2].mux.a21[0] +6514,2812,main.pedersen.segments[1].windows[2].mux.a21[1] +6515,2813,main.pedersen.segments[1].windows[2].mux.a20[0] +6516,2814,main.pedersen.segments[1].windows[2].mux.a20[1] +6517,3487,main.pedersen.segments[1].windows[2].mux.a2[0] +6518,3488,main.pedersen.segments[1].windows[2].mux.a2[1] +6519,2815,main.pedersen.segments[1].windows[2].mux.a10[0] +6520,2816,main.pedersen.segments[1].windows[2].mux.a10[1] +6521,2817,main.pedersen.segments[1].windows[2].mux.a1[0] +6522,2818,main.pedersen.segments[1].windows[2].mux.a1[1] +6523,2819,main.pedersen.segments[1].windows[2].mux.a0[0] +6524,2820,main.pedersen.segments[1].windows[2].mux.a0[1] +6525,2790,main.pedersen.segments[1].windows[2].mux.a[0] +6526,2791,main.pedersen.segments[1].windows[2].mux.a[1] +6527,2821,main.pedersen.segments[1].windows[2].mux.s10 +6528,2790,main.pedersen.segments[1].windows[2].dbl2.in[0] +6529,2791,main.pedersen.segments[1].windows[2].dbl2.in[1] +6530,2796,main.pedersen.segments[1].windows[2].dbl2.out[0] +6531,2802,main.pedersen.segments[1].windows[2].dbl2.out[1] +6532,2822,main.pedersen.segments[1].windows[2].dbl2.lamda +6533,2823,main.pedersen.segments[1].windows[2].dbl2.x1_2 +6534,2790,main.pedersen.segments[1].windows[2].adr3.in1[0] +6535,2791,main.pedersen.segments[1].windows[2].adr3.in1[1] +6536,2796,main.pedersen.segments[1].windows[2].adr3.in2[0] +6537,2802,main.pedersen.segments[1].windows[2].adr3.in2[1] +6538,2797,main.pedersen.segments[1].windows[2].adr3.out[0] +6539,2803,main.pedersen.segments[1].windows[2].adr3.out[1] +6540,2824,main.pedersen.segments[1].windows[2].adr3.lamda +6541,2790,main.pedersen.segments[1].windows[2].adr4.in1[0] +6542,2791,main.pedersen.segments[1].windows[2].adr4.in1[1] +6543,2797,main.pedersen.segments[1].windows[2].adr4.in2[0] +6544,2803,main.pedersen.segments[1].windows[2].adr4.in2[1] +6545,2798,main.pedersen.segments[1].windows[2].adr4.out[0] +6546,2804,main.pedersen.segments[1].windows[2].adr4.out[1] +6547,2825,main.pedersen.segments[1].windows[2].adr4.lamda +6548,2790,main.pedersen.segments[1].windows[2].adr5.in1[0] +6549,2791,main.pedersen.segments[1].windows[2].adr5.in1[1] +6550,2798,main.pedersen.segments[1].windows[2].adr5.in2[0] +6551,2804,main.pedersen.segments[1].windows[2].adr5.in2[1] +6552,2799,main.pedersen.segments[1].windows[2].adr5.out[0] +6553,2805,main.pedersen.segments[1].windows[2].adr5.out[1] +6554,2826,main.pedersen.segments[1].windows[2].adr5.lamda +6555,2790,main.pedersen.segments[1].windows[2].adr6.in1[0] +6556,2791,main.pedersen.segments[1].windows[2].adr6.in1[1] +6557,2799,main.pedersen.segments[1].windows[2].adr6.in2[0] +6558,2805,main.pedersen.segments[1].windows[2].adr6.in2[1] +6559,2800,main.pedersen.segments[1].windows[2].adr6.out[0] +6560,2806,main.pedersen.segments[1].windows[2].adr6.out[1] +6561,2827,main.pedersen.segments[1].windows[2].adr6.lamda +6562,2790,main.pedersen.segments[1].windows[2].adr7.in1[0] +6563,2791,main.pedersen.segments[1].windows[2].adr7.in1[1] +6564,2800,main.pedersen.segments[1].windows[2].adr7.in2[0] +6565,2806,main.pedersen.segments[1].windows[2].adr7.in2[1] +6566,2801,main.pedersen.segments[1].windows[2].adr7.out[0] +6567,2807,main.pedersen.segments[1].windows[2].adr7.out[1] +6568,2828,main.pedersen.segments[1].windows[2].adr7.lamda +6569,2790,main.pedersen.segments[1].windows[2].adr8.in1[0] +6570,2791,main.pedersen.segments[1].windows[2].adr8.in1[1] +6571,2801,main.pedersen.segments[1].windows[2].adr8.in2[0] +6572,2807,main.pedersen.segments[1].windows[2].adr8.in2[1] +6573,2794,main.pedersen.segments[1].windows[2].adr8.out[0] +6574,2795,main.pedersen.segments[1].windows[2].adr8.out[1] +6575,2829,main.pedersen.segments[1].windows[2].adr8.lamda +6595,215,main.pedersen.segments[1].windows[3].in[0] +6596,216,main.pedersen.segments[1].windows[3].in[1] +6597,217,main.pedersen.segments[1].windows[3].in[2] +6598,218,main.pedersen.segments[1].windows[3].in[3] +6599,2839,main.pedersen.segments[1].windows[3].base[0] +6600,2840,main.pedersen.segments[1].windows[3].base[1] +6601,2841,main.pedersen.segments[1].windows[3].out[0] +6602,2842,main.pedersen.segments[1].windows[3].out[1] +6603,2843,main.pedersen.segments[1].windows[3].out8[0] +6604,2844,main.pedersen.segments[1].windows[3].out8[1] +6605,2839,main.pedersen.segments[1].windows[3].mux.c[0][0] +6606,2845,main.pedersen.segments[1].windows[3].mux.c[0][1] +6607,2846,main.pedersen.segments[1].windows[3].mux.c[0][2] +6608,2847,main.pedersen.segments[1].windows[3].mux.c[0][3] +6609,2848,main.pedersen.segments[1].windows[3].mux.c[0][4] +6610,2849,main.pedersen.segments[1].windows[3].mux.c[0][5] +6611,2850,main.pedersen.segments[1].windows[3].mux.c[0][6] +6612,2843,main.pedersen.segments[1].windows[3].mux.c[0][7] +6613,2840,main.pedersen.segments[1].windows[3].mux.c[1][0] +6614,2851,main.pedersen.segments[1].windows[3].mux.c[1][1] +6615,2852,main.pedersen.segments[1].windows[3].mux.c[1][2] +6616,2853,main.pedersen.segments[1].windows[3].mux.c[1][3] +6617,2854,main.pedersen.segments[1].windows[3].mux.c[1][4] +6618,2855,main.pedersen.segments[1].windows[3].mux.c[1][5] +6619,2856,main.pedersen.segments[1].windows[3].mux.c[1][6] +6620,2844,main.pedersen.segments[1].windows[3].mux.c[1][7] +6621,215,main.pedersen.segments[1].windows[3].mux.s[0] +6622,216,main.pedersen.segments[1].windows[3].mux.s[1] +6623,217,main.pedersen.segments[1].windows[3].mux.s[2] +6624,2841,main.pedersen.segments[1].windows[3].mux.out[0] +6625,2857,main.pedersen.segments[1].windows[3].mux.out[1] +6626,2858,main.pedersen.segments[1].windows[3].mux.a210[0] +6627,2859,main.pedersen.segments[1].windows[3].mux.a210[1] +6628,2860,main.pedersen.segments[1].windows[3].mux.a21[0] +6629,2861,main.pedersen.segments[1].windows[3].mux.a21[1] +6630,2862,main.pedersen.segments[1].windows[3].mux.a20[0] +6631,2863,main.pedersen.segments[1].windows[3].mux.a20[1] +6632,3489,main.pedersen.segments[1].windows[3].mux.a2[0] +6633,3490,main.pedersen.segments[1].windows[3].mux.a2[1] +6634,2864,main.pedersen.segments[1].windows[3].mux.a10[0] +6635,2865,main.pedersen.segments[1].windows[3].mux.a10[1] +6636,2866,main.pedersen.segments[1].windows[3].mux.a1[0] +6637,2867,main.pedersen.segments[1].windows[3].mux.a1[1] +6638,2868,main.pedersen.segments[1].windows[3].mux.a0[0] +6639,2869,main.pedersen.segments[1].windows[3].mux.a0[1] +6640,2839,main.pedersen.segments[1].windows[3].mux.a[0] +6641,2840,main.pedersen.segments[1].windows[3].mux.a[1] +6642,2870,main.pedersen.segments[1].windows[3].mux.s10 +6643,2839,main.pedersen.segments[1].windows[3].dbl2.in[0] +6644,2840,main.pedersen.segments[1].windows[3].dbl2.in[1] +6645,2845,main.pedersen.segments[1].windows[3].dbl2.out[0] +6646,2851,main.pedersen.segments[1].windows[3].dbl2.out[1] +6647,2871,main.pedersen.segments[1].windows[3].dbl2.lamda +6648,2872,main.pedersen.segments[1].windows[3].dbl2.x1_2 +6649,2839,main.pedersen.segments[1].windows[3].adr3.in1[0] +6650,2840,main.pedersen.segments[1].windows[3].adr3.in1[1] +6651,2845,main.pedersen.segments[1].windows[3].adr3.in2[0] +6652,2851,main.pedersen.segments[1].windows[3].adr3.in2[1] +6653,2846,main.pedersen.segments[1].windows[3].adr3.out[0] +6654,2852,main.pedersen.segments[1].windows[3].adr3.out[1] +6655,2873,main.pedersen.segments[1].windows[3].adr3.lamda +6656,2839,main.pedersen.segments[1].windows[3].adr4.in1[0] +6657,2840,main.pedersen.segments[1].windows[3].adr4.in1[1] +6658,2846,main.pedersen.segments[1].windows[3].adr4.in2[0] +6659,2852,main.pedersen.segments[1].windows[3].adr4.in2[1] +6660,2847,main.pedersen.segments[1].windows[3].adr4.out[0] +6661,2853,main.pedersen.segments[1].windows[3].adr4.out[1] +6662,2874,main.pedersen.segments[1].windows[3].adr4.lamda +6663,2839,main.pedersen.segments[1].windows[3].adr5.in1[0] +6664,2840,main.pedersen.segments[1].windows[3].adr5.in1[1] +6665,2847,main.pedersen.segments[1].windows[3].adr5.in2[0] +6666,2853,main.pedersen.segments[1].windows[3].adr5.in2[1] +6667,2848,main.pedersen.segments[1].windows[3].adr5.out[0] +6668,2854,main.pedersen.segments[1].windows[3].adr5.out[1] +6669,2875,main.pedersen.segments[1].windows[3].adr5.lamda +6670,2839,main.pedersen.segments[1].windows[3].adr6.in1[0] +6671,2840,main.pedersen.segments[1].windows[3].adr6.in1[1] +6672,2848,main.pedersen.segments[1].windows[3].adr6.in2[0] +6673,2854,main.pedersen.segments[1].windows[3].adr6.in2[1] +6674,2849,main.pedersen.segments[1].windows[3].adr6.out[0] +6675,2855,main.pedersen.segments[1].windows[3].adr6.out[1] +6676,2876,main.pedersen.segments[1].windows[3].adr6.lamda +6677,2839,main.pedersen.segments[1].windows[3].adr7.in1[0] +6678,2840,main.pedersen.segments[1].windows[3].adr7.in1[1] +6679,2849,main.pedersen.segments[1].windows[3].adr7.in2[0] +6680,2855,main.pedersen.segments[1].windows[3].adr7.in2[1] +6681,2850,main.pedersen.segments[1].windows[3].adr7.out[0] +6682,2856,main.pedersen.segments[1].windows[3].adr7.out[1] +6683,2877,main.pedersen.segments[1].windows[3].adr7.lamda +6684,2839,main.pedersen.segments[1].windows[3].adr8.in1[0] +6685,2840,main.pedersen.segments[1].windows[3].adr8.in1[1] +6686,2850,main.pedersen.segments[1].windows[3].adr8.in2[0] +6687,2856,main.pedersen.segments[1].windows[3].adr8.in2[1] +6688,2843,main.pedersen.segments[1].windows[3].adr8.out[0] +6689,2844,main.pedersen.segments[1].windows[3].adr8.out[1] +6690,2878,main.pedersen.segments[1].windows[3].adr8.lamda +6710,219,main.pedersen.segments[1].windows[4].in[0] +6711,220,main.pedersen.segments[1].windows[4].in[1] +6712,221,main.pedersen.segments[1].windows[4].in[2] +6713,222,main.pedersen.segments[1].windows[4].in[3] +6714,2888,main.pedersen.segments[1].windows[4].base[0] +6715,2889,main.pedersen.segments[1].windows[4].base[1] +6716,2890,main.pedersen.segments[1].windows[4].out[0] +6717,2891,main.pedersen.segments[1].windows[4].out[1] +6718,2892,main.pedersen.segments[1].windows[4].out8[0] +6719,2893,main.pedersen.segments[1].windows[4].out8[1] +6720,2888,main.pedersen.segments[1].windows[4].mux.c[0][0] +6721,2894,main.pedersen.segments[1].windows[4].mux.c[0][1] +6722,2895,main.pedersen.segments[1].windows[4].mux.c[0][2] +6723,2896,main.pedersen.segments[1].windows[4].mux.c[0][3] +6724,2897,main.pedersen.segments[1].windows[4].mux.c[0][4] +6725,2898,main.pedersen.segments[1].windows[4].mux.c[0][5] +6726,2899,main.pedersen.segments[1].windows[4].mux.c[0][6] +6727,2892,main.pedersen.segments[1].windows[4].mux.c[0][7] +6728,2889,main.pedersen.segments[1].windows[4].mux.c[1][0] +6729,2900,main.pedersen.segments[1].windows[4].mux.c[1][1] +6730,2901,main.pedersen.segments[1].windows[4].mux.c[1][2] +6731,2902,main.pedersen.segments[1].windows[4].mux.c[1][3] +6732,2903,main.pedersen.segments[1].windows[4].mux.c[1][4] +6733,2904,main.pedersen.segments[1].windows[4].mux.c[1][5] +6734,2905,main.pedersen.segments[1].windows[4].mux.c[1][6] +6735,2893,main.pedersen.segments[1].windows[4].mux.c[1][7] +6736,219,main.pedersen.segments[1].windows[4].mux.s[0] +6737,220,main.pedersen.segments[1].windows[4].mux.s[1] +6738,221,main.pedersen.segments[1].windows[4].mux.s[2] +6739,2890,main.pedersen.segments[1].windows[4].mux.out[0] +6740,2906,main.pedersen.segments[1].windows[4].mux.out[1] +6741,2907,main.pedersen.segments[1].windows[4].mux.a210[0] +6742,2908,main.pedersen.segments[1].windows[4].mux.a210[1] +6743,2909,main.pedersen.segments[1].windows[4].mux.a21[0] +6744,2910,main.pedersen.segments[1].windows[4].mux.a21[1] +6745,2911,main.pedersen.segments[1].windows[4].mux.a20[0] +6746,2912,main.pedersen.segments[1].windows[4].mux.a20[1] +6747,3491,main.pedersen.segments[1].windows[4].mux.a2[0] +6748,3492,main.pedersen.segments[1].windows[4].mux.a2[1] +6749,2913,main.pedersen.segments[1].windows[4].mux.a10[0] +6750,2914,main.pedersen.segments[1].windows[4].mux.a10[1] +6751,2915,main.pedersen.segments[1].windows[4].mux.a1[0] +6752,2916,main.pedersen.segments[1].windows[4].mux.a1[1] +6753,2917,main.pedersen.segments[1].windows[4].mux.a0[0] +6754,2918,main.pedersen.segments[1].windows[4].mux.a0[1] +6755,2888,main.pedersen.segments[1].windows[4].mux.a[0] +6756,2889,main.pedersen.segments[1].windows[4].mux.a[1] +6757,2919,main.pedersen.segments[1].windows[4].mux.s10 +6758,2888,main.pedersen.segments[1].windows[4].dbl2.in[0] +6759,2889,main.pedersen.segments[1].windows[4].dbl2.in[1] +6760,2894,main.pedersen.segments[1].windows[4].dbl2.out[0] +6761,2900,main.pedersen.segments[1].windows[4].dbl2.out[1] +6762,2920,main.pedersen.segments[1].windows[4].dbl2.lamda +6763,2921,main.pedersen.segments[1].windows[4].dbl2.x1_2 +6764,2888,main.pedersen.segments[1].windows[4].adr3.in1[0] +6765,2889,main.pedersen.segments[1].windows[4].adr3.in1[1] +6766,2894,main.pedersen.segments[1].windows[4].adr3.in2[0] +6767,2900,main.pedersen.segments[1].windows[4].adr3.in2[1] +6768,2895,main.pedersen.segments[1].windows[4].adr3.out[0] +6769,2901,main.pedersen.segments[1].windows[4].adr3.out[1] +6770,2922,main.pedersen.segments[1].windows[4].adr3.lamda +6771,2888,main.pedersen.segments[1].windows[4].adr4.in1[0] +6772,2889,main.pedersen.segments[1].windows[4].adr4.in1[1] +6773,2895,main.pedersen.segments[1].windows[4].adr4.in2[0] +6774,2901,main.pedersen.segments[1].windows[4].adr4.in2[1] +6775,2896,main.pedersen.segments[1].windows[4].adr4.out[0] +6776,2902,main.pedersen.segments[1].windows[4].adr4.out[1] +6777,2923,main.pedersen.segments[1].windows[4].adr4.lamda +6778,2888,main.pedersen.segments[1].windows[4].adr5.in1[0] +6779,2889,main.pedersen.segments[1].windows[4].adr5.in1[1] +6780,2896,main.pedersen.segments[1].windows[4].adr5.in2[0] +6781,2902,main.pedersen.segments[1].windows[4].adr5.in2[1] +6782,2897,main.pedersen.segments[1].windows[4].adr5.out[0] +6783,2903,main.pedersen.segments[1].windows[4].adr5.out[1] +6784,2924,main.pedersen.segments[1].windows[4].adr5.lamda +6785,2888,main.pedersen.segments[1].windows[4].adr6.in1[0] +6786,2889,main.pedersen.segments[1].windows[4].adr6.in1[1] +6787,2897,main.pedersen.segments[1].windows[4].adr6.in2[0] +6788,2903,main.pedersen.segments[1].windows[4].adr6.in2[1] +6789,2898,main.pedersen.segments[1].windows[4].adr6.out[0] +6790,2904,main.pedersen.segments[1].windows[4].adr6.out[1] +6791,2925,main.pedersen.segments[1].windows[4].adr6.lamda +6792,2888,main.pedersen.segments[1].windows[4].adr7.in1[0] +6793,2889,main.pedersen.segments[1].windows[4].adr7.in1[1] +6794,2898,main.pedersen.segments[1].windows[4].adr7.in2[0] +6795,2904,main.pedersen.segments[1].windows[4].adr7.in2[1] +6796,2899,main.pedersen.segments[1].windows[4].adr7.out[0] +6797,2905,main.pedersen.segments[1].windows[4].adr7.out[1] +6798,2926,main.pedersen.segments[1].windows[4].adr7.lamda +6799,2888,main.pedersen.segments[1].windows[4].adr8.in1[0] +6800,2889,main.pedersen.segments[1].windows[4].adr8.in1[1] +6801,2899,main.pedersen.segments[1].windows[4].adr8.in2[0] +6802,2905,main.pedersen.segments[1].windows[4].adr8.in2[1] +6803,2892,main.pedersen.segments[1].windows[4].adr8.out[0] +6804,2893,main.pedersen.segments[1].windows[4].adr8.out[1] +6805,2927,main.pedersen.segments[1].windows[4].adr8.lamda +6825,223,main.pedersen.segments[1].windows[5].in[0] +6826,224,main.pedersen.segments[1].windows[5].in[1] +6827,225,main.pedersen.segments[1].windows[5].in[2] +6828,226,main.pedersen.segments[1].windows[5].in[3] +6829,2937,main.pedersen.segments[1].windows[5].base[0] +6830,2938,main.pedersen.segments[1].windows[5].base[1] +6831,2939,main.pedersen.segments[1].windows[5].out[0] +6832,2940,main.pedersen.segments[1].windows[5].out[1] +6833,2941,main.pedersen.segments[1].windows[5].out8[0] +6834,2942,main.pedersen.segments[1].windows[5].out8[1] +6835,2937,main.pedersen.segments[1].windows[5].mux.c[0][0] +6836,2943,main.pedersen.segments[1].windows[5].mux.c[0][1] +6837,2944,main.pedersen.segments[1].windows[5].mux.c[0][2] +6838,2945,main.pedersen.segments[1].windows[5].mux.c[0][3] +6839,2946,main.pedersen.segments[1].windows[5].mux.c[0][4] +6840,2947,main.pedersen.segments[1].windows[5].mux.c[0][5] +6841,2948,main.pedersen.segments[1].windows[5].mux.c[0][6] +6842,2941,main.pedersen.segments[1].windows[5].mux.c[0][7] +6843,2938,main.pedersen.segments[1].windows[5].mux.c[1][0] +6844,2949,main.pedersen.segments[1].windows[5].mux.c[1][1] +6845,2950,main.pedersen.segments[1].windows[5].mux.c[1][2] +6846,2951,main.pedersen.segments[1].windows[5].mux.c[1][3] +6847,2952,main.pedersen.segments[1].windows[5].mux.c[1][4] +6848,2953,main.pedersen.segments[1].windows[5].mux.c[1][5] +6849,2954,main.pedersen.segments[1].windows[5].mux.c[1][6] +6850,2942,main.pedersen.segments[1].windows[5].mux.c[1][7] +6851,223,main.pedersen.segments[1].windows[5].mux.s[0] +6852,224,main.pedersen.segments[1].windows[5].mux.s[1] +6853,225,main.pedersen.segments[1].windows[5].mux.s[2] +6854,2939,main.pedersen.segments[1].windows[5].mux.out[0] +6855,2955,main.pedersen.segments[1].windows[5].mux.out[1] +6856,2956,main.pedersen.segments[1].windows[5].mux.a210[0] +6857,2957,main.pedersen.segments[1].windows[5].mux.a210[1] +6858,2958,main.pedersen.segments[1].windows[5].mux.a21[0] +6859,2959,main.pedersen.segments[1].windows[5].mux.a21[1] +6860,2960,main.pedersen.segments[1].windows[5].mux.a20[0] +6861,2961,main.pedersen.segments[1].windows[5].mux.a20[1] +6862,3493,main.pedersen.segments[1].windows[5].mux.a2[0] +6863,3494,main.pedersen.segments[1].windows[5].mux.a2[1] +6864,2962,main.pedersen.segments[1].windows[5].mux.a10[0] +6865,2963,main.pedersen.segments[1].windows[5].mux.a10[1] +6866,2964,main.pedersen.segments[1].windows[5].mux.a1[0] +6867,2965,main.pedersen.segments[1].windows[5].mux.a1[1] +6868,2966,main.pedersen.segments[1].windows[5].mux.a0[0] +6869,2967,main.pedersen.segments[1].windows[5].mux.a0[1] +6870,2937,main.pedersen.segments[1].windows[5].mux.a[0] +6871,2938,main.pedersen.segments[1].windows[5].mux.a[1] +6872,2968,main.pedersen.segments[1].windows[5].mux.s10 +6873,2937,main.pedersen.segments[1].windows[5].dbl2.in[0] +6874,2938,main.pedersen.segments[1].windows[5].dbl2.in[1] +6875,2943,main.pedersen.segments[1].windows[5].dbl2.out[0] +6876,2949,main.pedersen.segments[1].windows[5].dbl2.out[1] +6877,2969,main.pedersen.segments[1].windows[5].dbl2.lamda +6878,2970,main.pedersen.segments[1].windows[5].dbl2.x1_2 +6879,2937,main.pedersen.segments[1].windows[5].adr3.in1[0] +6880,2938,main.pedersen.segments[1].windows[5].adr3.in1[1] +6881,2943,main.pedersen.segments[1].windows[5].adr3.in2[0] +6882,2949,main.pedersen.segments[1].windows[5].adr3.in2[1] +6883,2944,main.pedersen.segments[1].windows[5].adr3.out[0] +6884,2950,main.pedersen.segments[1].windows[5].adr3.out[1] +6885,2971,main.pedersen.segments[1].windows[5].adr3.lamda +6886,2937,main.pedersen.segments[1].windows[5].adr4.in1[0] +6887,2938,main.pedersen.segments[1].windows[5].adr4.in1[1] +6888,2944,main.pedersen.segments[1].windows[5].adr4.in2[0] +6889,2950,main.pedersen.segments[1].windows[5].adr4.in2[1] +6890,2945,main.pedersen.segments[1].windows[5].adr4.out[0] +6891,2951,main.pedersen.segments[1].windows[5].adr4.out[1] +6892,2972,main.pedersen.segments[1].windows[5].adr4.lamda +6893,2937,main.pedersen.segments[1].windows[5].adr5.in1[0] +6894,2938,main.pedersen.segments[1].windows[5].adr5.in1[1] +6895,2945,main.pedersen.segments[1].windows[5].adr5.in2[0] +6896,2951,main.pedersen.segments[1].windows[5].adr5.in2[1] +6897,2946,main.pedersen.segments[1].windows[5].adr5.out[0] +6898,2952,main.pedersen.segments[1].windows[5].adr5.out[1] +6899,2973,main.pedersen.segments[1].windows[5].adr5.lamda +6900,2937,main.pedersen.segments[1].windows[5].adr6.in1[0] +6901,2938,main.pedersen.segments[1].windows[5].adr6.in1[1] +6902,2946,main.pedersen.segments[1].windows[5].adr6.in2[0] +6903,2952,main.pedersen.segments[1].windows[5].adr6.in2[1] +6904,2947,main.pedersen.segments[1].windows[5].adr6.out[0] +6905,2953,main.pedersen.segments[1].windows[5].adr6.out[1] +6906,2974,main.pedersen.segments[1].windows[5].adr6.lamda +6907,2937,main.pedersen.segments[1].windows[5].adr7.in1[0] +6908,2938,main.pedersen.segments[1].windows[5].adr7.in1[1] +6909,2947,main.pedersen.segments[1].windows[5].adr7.in2[0] +6910,2953,main.pedersen.segments[1].windows[5].adr7.in2[1] +6911,2948,main.pedersen.segments[1].windows[5].adr7.out[0] +6912,2954,main.pedersen.segments[1].windows[5].adr7.out[1] +6913,2975,main.pedersen.segments[1].windows[5].adr7.lamda +6914,2937,main.pedersen.segments[1].windows[5].adr8.in1[0] +6915,2938,main.pedersen.segments[1].windows[5].adr8.in1[1] +6916,2948,main.pedersen.segments[1].windows[5].adr8.in2[0] +6917,2954,main.pedersen.segments[1].windows[5].adr8.in2[1] +6918,2941,main.pedersen.segments[1].windows[5].adr8.out[0] +6919,2942,main.pedersen.segments[1].windows[5].adr8.out[1] +6920,2976,main.pedersen.segments[1].windows[5].adr8.lamda +6940,227,main.pedersen.segments[1].windows[6].in[0] +6941,228,main.pedersen.segments[1].windows[6].in[1] +6942,229,main.pedersen.segments[1].windows[6].in[2] +6943,230,main.pedersen.segments[1].windows[6].in[3] +6944,2986,main.pedersen.segments[1].windows[6].base[0] +6945,2987,main.pedersen.segments[1].windows[6].base[1] +6946,2988,main.pedersen.segments[1].windows[6].out[0] +6947,2989,main.pedersen.segments[1].windows[6].out[1] +6948,2990,main.pedersen.segments[1].windows[6].out8[0] +6949,2991,main.pedersen.segments[1].windows[6].out8[1] +6950,2986,main.pedersen.segments[1].windows[6].mux.c[0][0] +6951,2992,main.pedersen.segments[1].windows[6].mux.c[0][1] +6952,2993,main.pedersen.segments[1].windows[6].mux.c[0][2] +6953,2994,main.pedersen.segments[1].windows[6].mux.c[0][3] +6954,2995,main.pedersen.segments[1].windows[6].mux.c[0][4] +6955,2996,main.pedersen.segments[1].windows[6].mux.c[0][5] +6956,2997,main.pedersen.segments[1].windows[6].mux.c[0][6] +6957,2990,main.pedersen.segments[1].windows[6].mux.c[0][7] +6958,2987,main.pedersen.segments[1].windows[6].mux.c[1][0] +6959,2998,main.pedersen.segments[1].windows[6].mux.c[1][1] +6960,2999,main.pedersen.segments[1].windows[6].mux.c[1][2] +6961,3000,main.pedersen.segments[1].windows[6].mux.c[1][3] +6962,3001,main.pedersen.segments[1].windows[6].mux.c[1][4] +6963,3002,main.pedersen.segments[1].windows[6].mux.c[1][5] +6964,3003,main.pedersen.segments[1].windows[6].mux.c[1][6] +6965,2991,main.pedersen.segments[1].windows[6].mux.c[1][7] +6966,227,main.pedersen.segments[1].windows[6].mux.s[0] +6967,228,main.pedersen.segments[1].windows[6].mux.s[1] +6968,229,main.pedersen.segments[1].windows[6].mux.s[2] +6969,2988,main.pedersen.segments[1].windows[6].mux.out[0] +6970,3004,main.pedersen.segments[1].windows[6].mux.out[1] +6971,3005,main.pedersen.segments[1].windows[6].mux.a210[0] +6972,3006,main.pedersen.segments[1].windows[6].mux.a210[1] +6973,3007,main.pedersen.segments[1].windows[6].mux.a21[0] +6974,3008,main.pedersen.segments[1].windows[6].mux.a21[1] +6975,3009,main.pedersen.segments[1].windows[6].mux.a20[0] +6976,3010,main.pedersen.segments[1].windows[6].mux.a20[1] +6977,3495,main.pedersen.segments[1].windows[6].mux.a2[0] +6978,3496,main.pedersen.segments[1].windows[6].mux.a2[1] +6979,3011,main.pedersen.segments[1].windows[6].mux.a10[0] +6980,3012,main.pedersen.segments[1].windows[6].mux.a10[1] +6981,3013,main.pedersen.segments[1].windows[6].mux.a1[0] +6982,3014,main.pedersen.segments[1].windows[6].mux.a1[1] +6983,3015,main.pedersen.segments[1].windows[6].mux.a0[0] +6984,3016,main.pedersen.segments[1].windows[6].mux.a0[1] +6985,2986,main.pedersen.segments[1].windows[6].mux.a[0] +6986,2987,main.pedersen.segments[1].windows[6].mux.a[1] +6987,3017,main.pedersen.segments[1].windows[6].mux.s10 +6988,2986,main.pedersen.segments[1].windows[6].dbl2.in[0] +6989,2987,main.pedersen.segments[1].windows[6].dbl2.in[1] +6990,2992,main.pedersen.segments[1].windows[6].dbl2.out[0] +6991,2998,main.pedersen.segments[1].windows[6].dbl2.out[1] +6992,3018,main.pedersen.segments[1].windows[6].dbl2.lamda +6993,3019,main.pedersen.segments[1].windows[6].dbl2.x1_2 +6994,2986,main.pedersen.segments[1].windows[6].adr3.in1[0] +6995,2987,main.pedersen.segments[1].windows[6].adr3.in1[1] +6996,2992,main.pedersen.segments[1].windows[6].adr3.in2[0] +6997,2998,main.pedersen.segments[1].windows[6].adr3.in2[1] +6998,2993,main.pedersen.segments[1].windows[6].adr3.out[0] +6999,2999,main.pedersen.segments[1].windows[6].adr3.out[1] +7000,3020,main.pedersen.segments[1].windows[6].adr3.lamda +7001,2986,main.pedersen.segments[1].windows[6].adr4.in1[0] +7002,2987,main.pedersen.segments[1].windows[6].adr4.in1[1] +7003,2993,main.pedersen.segments[1].windows[6].adr4.in2[0] +7004,2999,main.pedersen.segments[1].windows[6].adr4.in2[1] +7005,2994,main.pedersen.segments[1].windows[6].adr4.out[0] +7006,3000,main.pedersen.segments[1].windows[6].adr4.out[1] +7007,3021,main.pedersen.segments[1].windows[6].adr4.lamda +7008,2986,main.pedersen.segments[1].windows[6].adr5.in1[0] +7009,2987,main.pedersen.segments[1].windows[6].adr5.in1[1] +7010,2994,main.pedersen.segments[1].windows[6].adr5.in2[0] +7011,3000,main.pedersen.segments[1].windows[6].adr5.in2[1] +7012,2995,main.pedersen.segments[1].windows[6].adr5.out[0] +7013,3001,main.pedersen.segments[1].windows[6].adr5.out[1] +7014,3022,main.pedersen.segments[1].windows[6].adr5.lamda +7015,2986,main.pedersen.segments[1].windows[6].adr6.in1[0] +7016,2987,main.pedersen.segments[1].windows[6].adr6.in1[1] +7017,2995,main.pedersen.segments[1].windows[6].adr6.in2[0] +7018,3001,main.pedersen.segments[1].windows[6].adr6.in2[1] +7019,2996,main.pedersen.segments[1].windows[6].adr6.out[0] +7020,3002,main.pedersen.segments[1].windows[6].adr6.out[1] +7021,3023,main.pedersen.segments[1].windows[6].adr6.lamda +7022,2986,main.pedersen.segments[1].windows[6].adr7.in1[0] +7023,2987,main.pedersen.segments[1].windows[6].adr7.in1[1] +7024,2996,main.pedersen.segments[1].windows[6].adr7.in2[0] +7025,3002,main.pedersen.segments[1].windows[6].adr7.in2[1] +7026,2997,main.pedersen.segments[1].windows[6].adr7.out[0] +7027,3003,main.pedersen.segments[1].windows[6].adr7.out[1] +7028,3024,main.pedersen.segments[1].windows[6].adr7.lamda +7029,2986,main.pedersen.segments[1].windows[6].adr8.in1[0] +7030,2987,main.pedersen.segments[1].windows[6].adr8.in1[1] +7031,2997,main.pedersen.segments[1].windows[6].adr8.in2[0] +7032,3003,main.pedersen.segments[1].windows[6].adr8.in2[1] +7033,2990,main.pedersen.segments[1].windows[6].adr8.out[0] +7034,2991,main.pedersen.segments[1].windows[6].adr8.out[1] +7035,3025,main.pedersen.segments[1].windows[6].adr8.lamda +7055,231,main.pedersen.segments[1].windows[7].in[0] +7056,232,main.pedersen.segments[1].windows[7].in[1] +7057,233,main.pedersen.segments[1].windows[7].in[2] +7058,234,main.pedersen.segments[1].windows[7].in[3] +7059,3035,main.pedersen.segments[1].windows[7].base[0] +7060,3036,main.pedersen.segments[1].windows[7].base[1] +7061,3037,main.pedersen.segments[1].windows[7].out[0] +7062,3038,main.pedersen.segments[1].windows[7].out[1] +7063,3039,main.pedersen.segments[1].windows[7].out8[0] +7064,3040,main.pedersen.segments[1].windows[7].out8[1] +7065,3035,main.pedersen.segments[1].windows[7].mux.c[0][0] +7066,3041,main.pedersen.segments[1].windows[7].mux.c[0][1] +7067,3042,main.pedersen.segments[1].windows[7].mux.c[0][2] +7068,3043,main.pedersen.segments[1].windows[7].mux.c[0][3] +7069,3044,main.pedersen.segments[1].windows[7].mux.c[0][4] +7070,3045,main.pedersen.segments[1].windows[7].mux.c[0][5] +7071,3046,main.pedersen.segments[1].windows[7].mux.c[0][6] +7072,3039,main.pedersen.segments[1].windows[7].mux.c[0][7] +7073,3036,main.pedersen.segments[1].windows[7].mux.c[1][0] +7074,3047,main.pedersen.segments[1].windows[7].mux.c[1][1] +7075,3048,main.pedersen.segments[1].windows[7].mux.c[1][2] +7076,3049,main.pedersen.segments[1].windows[7].mux.c[1][3] +7077,3050,main.pedersen.segments[1].windows[7].mux.c[1][4] +7078,3051,main.pedersen.segments[1].windows[7].mux.c[1][5] +7079,3052,main.pedersen.segments[1].windows[7].mux.c[1][6] +7080,3040,main.pedersen.segments[1].windows[7].mux.c[1][7] +7081,231,main.pedersen.segments[1].windows[7].mux.s[0] +7082,232,main.pedersen.segments[1].windows[7].mux.s[1] +7083,233,main.pedersen.segments[1].windows[7].mux.s[2] +7084,3037,main.pedersen.segments[1].windows[7].mux.out[0] +7085,3053,main.pedersen.segments[1].windows[7].mux.out[1] +7086,3054,main.pedersen.segments[1].windows[7].mux.a210[0] +7087,3055,main.pedersen.segments[1].windows[7].mux.a210[1] +7088,3056,main.pedersen.segments[1].windows[7].mux.a21[0] +7089,3057,main.pedersen.segments[1].windows[7].mux.a21[1] +7090,3058,main.pedersen.segments[1].windows[7].mux.a20[0] +7091,3059,main.pedersen.segments[1].windows[7].mux.a20[1] +7092,3497,main.pedersen.segments[1].windows[7].mux.a2[0] +7093,3498,main.pedersen.segments[1].windows[7].mux.a2[1] +7094,3060,main.pedersen.segments[1].windows[7].mux.a10[0] +7095,3061,main.pedersen.segments[1].windows[7].mux.a10[1] +7096,3062,main.pedersen.segments[1].windows[7].mux.a1[0] +7097,3063,main.pedersen.segments[1].windows[7].mux.a1[1] +7098,3064,main.pedersen.segments[1].windows[7].mux.a0[0] +7099,3065,main.pedersen.segments[1].windows[7].mux.a0[1] +7100,3035,main.pedersen.segments[1].windows[7].mux.a[0] +7101,3036,main.pedersen.segments[1].windows[7].mux.a[1] +7102,3066,main.pedersen.segments[1].windows[7].mux.s10 +7103,3035,main.pedersen.segments[1].windows[7].dbl2.in[0] +7104,3036,main.pedersen.segments[1].windows[7].dbl2.in[1] +7105,3041,main.pedersen.segments[1].windows[7].dbl2.out[0] +7106,3047,main.pedersen.segments[1].windows[7].dbl2.out[1] +7107,3067,main.pedersen.segments[1].windows[7].dbl2.lamda +7108,3068,main.pedersen.segments[1].windows[7].dbl2.x1_2 +7109,3035,main.pedersen.segments[1].windows[7].adr3.in1[0] +7110,3036,main.pedersen.segments[1].windows[7].adr3.in1[1] +7111,3041,main.pedersen.segments[1].windows[7].adr3.in2[0] +7112,3047,main.pedersen.segments[1].windows[7].adr3.in2[1] +7113,3042,main.pedersen.segments[1].windows[7].adr3.out[0] +7114,3048,main.pedersen.segments[1].windows[7].adr3.out[1] +7115,3069,main.pedersen.segments[1].windows[7].adr3.lamda +7116,3035,main.pedersen.segments[1].windows[7].adr4.in1[0] +7117,3036,main.pedersen.segments[1].windows[7].adr4.in1[1] +7118,3042,main.pedersen.segments[1].windows[7].adr4.in2[0] +7119,3048,main.pedersen.segments[1].windows[7].adr4.in2[1] +7120,3043,main.pedersen.segments[1].windows[7].adr4.out[0] +7121,3049,main.pedersen.segments[1].windows[7].adr4.out[1] +7122,3070,main.pedersen.segments[1].windows[7].adr4.lamda +7123,3035,main.pedersen.segments[1].windows[7].adr5.in1[0] +7124,3036,main.pedersen.segments[1].windows[7].adr5.in1[1] +7125,3043,main.pedersen.segments[1].windows[7].adr5.in2[0] +7126,3049,main.pedersen.segments[1].windows[7].adr5.in2[1] +7127,3044,main.pedersen.segments[1].windows[7].adr5.out[0] +7128,3050,main.pedersen.segments[1].windows[7].adr5.out[1] +7129,3071,main.pedersen.segments[1].windows[7].adr5.lamda +7130,3035,main.pedersen.segments[1].windows[7].adr6.in1[0] +7131,3036,main.pedersen.segments[1].windows[7].adr6.in1[1] +7132,3044,main.pedersen.segments[1].windows[7].adr6.in2[0] +7133,3050,main.pedersen.segments[1].windows[7].adr6.in2[1] +7134,3045,main.pedersen.segments[1].windows[7].adr6.out[0] +7135,3051,main.pedersen.segments[1].windows[7].adr6.out[1] +7136,3072,main.pedersen.segments[1].windows[7].adr6.lamda +7137,3035,main.pedersen.segments[1].windows[7].adr7.in1[0] +7138,3036,main.pedersen.segments[1].windows[7].adr7.in1[1] +7139,3045,main.pedersen.segments[1].windows[7].adr7.in2[0] +7140,3051,main.pedersen.segments[1].windows[7].adr7.in2[1] +7141,3046,main.pedersen.segments[1].windows[7].adr7.out[0] +7142,3052,main.pedersen.segments[1].windows[7].adr7.out[1] +7143,3073,main.pedersen.segments[1].windows[7].adr7.lamda +7144,3035,main.pedersen.segments[1].windows[7].adr8.in1[0] +7145,3036,main.pedersen.segments[1].windows[7].adr8.in1[1] +7146,3046,main.pedersen.segments[1].windows[7].adr8.in2[0] +7147,3052,main.pedersen.segments[1].windows[7].adr8.in2[1] +7148,3039,main.pedersen.segments[1].windows[7].adr8.out[0] +7149,3040,main.pedersen.segments[1].windows[7].adr8.out[1] +7150,3074,main.pedersen.segments[1].windows[7].adr8.lamda +7170,235,main.pedersen.segments[1].windows[8].in[0] +7171,236,main.pedersen.segments[1].windows[8].in[1] +7172,237,main.pedersen.segments[1].windows[8].in[2] +7173,238,main.pedersen.segments[1].windows[8].in[3] +7174,3084,main.pedersen.segments[1].windows[8].base[0] +7175,3085,main.pedersen.segments[1].windows[8].base[1] +7176,3086,main.pedersen.segments[1].windows[8].out[0] +7177,3087,main.pedersen.segments[1].windows[8].out[1] +7178,3088,main.pedersen.segments[1].windows[8].out8[0] +7179,3089,main.pedersen.segments[1].windows[8].out8[1] +7180,3084,main.pedersen.segments[1].windows[8].mux.c[0][0] +7181,3090,main.pedersen.segments[1].windows[8].mux.c[0][1] +7182,3091,main.pedersen.segments[1].windows[8].mux.c[0][2] +7183,3092,main.pedersen.segments[1].windows[8].mux.c[0][3] +7184,3093,main.pedersen.segments[1].windows[8].mux.c[0][4] +7185,3094,main.pedersen.segments[1].windows[8].mux.c[0][5] +7186,3095,main.pedersen.segments[1].windows[8].mux.c[0][6] +7187,3088,main.pedersen.segments[1].windows[8].mux.c[0][7] +7188,3085,main.pedersen.segments[1].windows[8].mux.c[1][0] +7189,3096,main.pedersen.segments[1].windows[8].mux.c[1][1] +7190,3097,main.pedersen.segments[1].windows[8].mux.c[1][2] +7191,3098,main.pedersen.segments[1].windows[8].mux.c[1][3] +7192,3099,main.pedersen.segments[1].windows[8].mux.c[1][4] +7193,3100,main.pedersen.segments[1].windows[8].mux.c[1][5] +7194,3101,main.pedersen.segments[1].windows[8].mux.c[1][6] +7195,3089,main.pedersen.segments[1].windows[8].mux.c[1][7] +7196,235,main.pedersen.segments[1].windows[8].mux.s[0] +7197,236,main.pedersen.segments[1].windows[8].mux.s[1] +7198,237,main.pedersen.segments[1].windows[8].mux.s[2] +7199,3086,main.pedersen.segments[1].windows[8].mux.out[0] +7200,3102,main.pedersen.segments[1].windows[8].mux.out[1] +7201,3103,main.pedersen.segments[1].windows[8].mux.a210[0] +7202,3104,main.pedersen.segments[1].windows[8].mux.a210[1] +7203,3105,main.pedersen.segments[1].windows[8].mux.a21[0] +7204,3106,main.pedersen.segments[1].windows[8].mux.a21[1] +7205,3107,main.pedersen.segments[1].windows[8].mux.a20[0] +7206,3108,main.pedersen.segments[1].windows[8].mux.a20[1] +7207,3499,main.pedersen.segments[1].windows[8].mux.a2[0] +7208,3500,main.pedersen.segments[1].windows[8].mux.a2[1] +7209,3109,main.pedersen.segments[1].windows[8].mux.a10[0] +7210,3110,main.pedersen.segments[1].windows[8].mux.a10[1] +7211,3111,main.pedersen.segments[1].windows[8].mux.a1[0] +7212,3112,main.pedersen.segments[1].windows[8].mux.a1[1] +7213,3113,main.pedersen.segments[1].windows[8].mux.a0[0] +7214,3114,main.pedersen.segments[1].windows[8].mux.a0[1] +7215,3084,main.pedersen.segments[1].windows[8].mux.a[0] +7216,3085,main.pedersen.segments[1].windows[8].mux.a[1] +7217,3115,main.pedersen.segments[1].windows[8].mux.s10 +7218,3084,main.pedersen.segments[1].windows[8].dbl2.in[0] +7219,3085,main.pedersen.segments[1].windows[8].dbl2.in[1] +7220,3090,main.pedersen.segments[1].windows[8].dbl2.out[0] +7221,3096,main.pedersen.segments[1].windows[8].dbl2.out[1] +7222,3116,main.pedersen.segments[1].windows[8].dbl2.lamda +7223,3117,main.pedersen.segments[1].windows[8].dbl2.x1_2 +7224,3084,main.pedersen.segments[1].windows[8].adr3.in1[0] +7225,3085,main.pedersen.segments[1].windows[8].adr3.in1[1] +7226,3090,main.pedersen.segments[1].windows[8].adr3.in2[0] +7227,3096,main.pedersen.segments[1].windows[8].adr3.in2[1] +7228,3091,main.pedersen.segments[1].windows[8].adr3.out[0] +7229,3097,main.pedersen.segments[1].windows[8].adr3.out[1] +7230,3118,main.pedersen.segments[1].windows[8].adr3.lamda +7231,3084,main.pedersen.segments[1].windows[8].adr4.in1[0] +7232,3085,main.pedersen.segments[1].windows[8].adr4.in1[1] +7233,3091,main.pedersen.segments[1].windows[8].adr4.in2[0] +7234,3097,main.pedersen.segments[1].windows[8].adr4.in2[1] +7235,3092,main.pedersen.segments[1].windows[8].adr4.out[0] +7236,3098,main.pedersen.segments[1].windows[8].adr4.out[1] +7237,3119,main.pedersen.segments[1].windows[8].adr4.lamda +7238,3084,main.pedersen.segments[1].windows[8].adr5.in1[0] +7239,3085,main.pedersen.segments[1].windows[8].adr5.in1[1] +7240,3092,main.pedersen.segments[1].windows[8].adr5.in2[0] +7241,3098,main.pedersen.segments[1].windows[8].adr5.in2[1] +7242,3093,main.pedersen.segments[1].windows[8].adr5.out[0] +7243,3099,main.pedersen.segments[1].windows[8].adr5.out[1] +7244,3120,main.pedersen.segments[1].windows[8].adr5.lamda +7245,3084,main.pedersen.segments[1].windows[8].adr6.in1[0] +7246,3085,main.pedersen.segments[1].windows[8].adr6.in1[1] +7247,3093,main.pedersen.segments[1].windows[8].adr6.in2[0] +7248,3099,main.pedersen.segments[1].windows[8].adr6.in2[1] +7249,3094,main.pedersen.segments[1].windows[8].adr6.out[0] +7250,3100,main.pedersen.segments[1].windows[8].adr6.out[1] +7251,3121,main.pedersen.segments[1].windows[8].adr6.lamda +7252,3084,main.pedersen.segments[1].windows[8].adr7.in1[0] +7253,3085,main.pedersen.segments[1].windows[8].adr7.in1[1] +7254,3094,main.pedersen.segments[1].windows[8].adr7.in2[0] +7255,3100,main.pedersen.segments[1].windows[8].adr7.in2[1] +7256,3095,main.pedersen.segments[1].windows[8].adr7.out[0] +7257,3101,main.pedersen.segments[1].windows[8].adr7.out[1] +7258,3122,main.pedersen.segments[1].windows[8].adr7.lamda +7259,3084,main.pedersen.segments[1].windows[8].adr8.in1[0] +7260,3085,main.pedersen.segments[1].windows[8].adr8.in1[1] +7261,3095,main.pedersen.segments[1].windows[8].adr8.in2[0] +7262,3101,main.pedersen.segments[1].windows[8].adr8.in2[1] +7263,3088,main.pedersen.segments[1].windows[8].adr8.out[0] +7264,3089,main.pedersen.segments[1].windows[8].adr8.out[1] +7265,3123,main.pedersen.segments[1].windows[8].adr8.lamda +7285,239,main.pedersen.segments[1].windows[9].in[0] +7286,240,main.pedersen.segments[1].windows[9].in[1] +7287,241,main.pedersen.segments[1].windows[9].in[2] +7288,242,main.pedersen.segments[1].windows[9].in[3] +7289,3133,main.pedersen.segments[1].windows[9].base[0] +7290,3134,main.pedersen.segments[1].windows[9].base[1] +7291,3135,main.pedersen.segments[1].windows[9].out[0] +7292,3136,main.pedersen.segments[1].windows[9].out[1] +7293,3137,main.pedersen.segments[1].windows[9].out8[0] +7294,3138,main.pedersen.segments[1].windows[9].out8[1] +7295,3133,main.pedersen.segments[1].windows[9].mux.c[0][0] +7296,3139,main.pedersen.segments[1].windows[9].mux.c[0][1] +7297,3140,main.pedersen.segments[1].windows[9].mux.c[0][2] +7298,3141,main.pedersen.segments[1].windows[9].mux.c[0][3] +7299,3142,main.pedersen.segments[1].windows[9].mux.c[0][4] +7300,3143,main.pedersen.segments[1].windows[9].mux.c[0][5] +7301,3144,main.pedersen.segments[1].windows[9].mux.c[0][6] +7302,3137,main.pedersen.segments[1].windows[9].mux.c[0][7] +7303,3134,main.pedersen.segments[1].windows[9].mux.c[1][0] +7304,3145,main.pedersen.segments[1].windows[9].mux.c[1][1] +7305,3146,main.pedersen.segments[1].windows[9].mux.c[1][2] +7306,3147,main.pedersen.segments[1].windows[9].mux.c[1][3] +7307,3148,main.pedersen.segments[1].windows[9].mux.c[1][4] +7308,3149,main.pedersen.segments[1].windows[9].mux.c[1][5] +7309,3150,main.pedersen.segments[1].windows[9].mux.c[1][6] +7310,3138,main.pedersen.segments[1].windows[9].mux.c[1][7] +7311,239,main.pedersen.segments[1].windows[9].mux.s[0] +7312,240,main.pedersen.segments[1].windows[9].mux.s[1] +7313,241,main.pedersen.segments[1].windows[9].mux.s[2] +7314,3135,main.pedersen.segments[1].windows[9].mux.out[0] +7315,3151,main.pedersen.segments[1].windows[9].mux.out[1] +7316,3152,main.pedersen.segments[1].windows[9].mux.a210[0] +7317,3153,main.pedersen.segments[1].windows[9].mux.a210[1] +7318,3154,main.pedersen.segments[1].windows[9].mux.a21[0] +7319,3155,main.pedersen.segments[1].windows[9].mux.a21[1] +7320,3156,main.pedersen.segments[1].windows[9].mux.a20[0] +7321,3157,main.pedersen.segments[1].windows[9].mux.a20[1] +7322,3501,main.pedersen.segments[1].windows[9].mux.a2[0] +7323,3502,main.pedersen.segments[1].windows[9].mux.a2[1] +7324,3158,main.pedersen.segments[1].windows[9].mux.a10[0] +7325,3159,main.pedersen.segments[1].windows[9].mux.a10[1] +7326,3160,main.pedersen.segments[1].windows[9].mux.a1[0] +7327,3161,main.pedersen.segments[1].windows[9].mux.a1[1] +7328,3162,main.pedersen.segments[1].windows[9].mux.a0[0] +7329,3163,main.pedersen.segments[1].windows[9].mux.a0[1] +7330,3133,main.pedersen.segments[1].windows[9].mux.a[0] +7331,3134,main.pedersen.segments[1].windows[9].mux.a[1] +7332,3164,main.pedersen.segments[1].windows[9].mux.s10 +7333,3133,main.pedersen.segments[1].windows[9].dbl2.in[0] +7334,3134,main.pedersen.segments[1].windows[9].dbl2.in[1] +7335,3139,main.pedersen.segments[1].windows[9].dbl2.out[0] +7336,3145,main.pedersen.segments[1].windows[9].dbl2.out[1] +7337,3165,main.pedersen.segments[1].windows[9].dbl2.lamda +7338,3166,main.pedersen.segments[1].windows[9].dbl2.x1_2 +7339,3133,main.pedersen.segments[1].windows[9].adr3.in1[0] +7340,3134,main.pedersen.segments[1].windows[9].adr3.in1[1] +7341,3139,main.pedersen.segments[1].windows[9].adr3.in2[0] +7342,3145,main.pedersen.segments[1].windows[9].adr3.in2[1] +7343,3140,main.pedersen.segments[1].windows[9].adr3.out[0] +7344,3146,main.pedersen.segments[1].windows[9].adr3.out[1] +7345,3167,main.pedersen.segments[1].windows[9].adr3.lamda +7346,3133,main.pedersen.segments[1].windows[9].adr4.in1[0] +7347,3134,main.pedersen.segments[1].windows[9].adr4.in1[1] +7348,3140,main.pedersen.segments[1].windows[9].adr4.in2[0] +7349,3146,main.pedersen.segments[1].windows[9].adr4.in2[1] +7350,3141,main.pedersen.segments[1].windows[9].adr4.out[0] +7351,3147,main.pedersen.segments[1].windows[9].adr4.out[1] +7352,3168,main.pedersen.segments[1].windows[9].adr4.lamda +7353,3133,main.pedersen.segments[1].windows[9].adr5.in1[0] +7354,3134,main.pedersen.segments[1].windows[9].adr5.in1[1] +7355,3141,main.pedersen.segments[1].windows[9].adr5.in2[0] +7356,3147,main.pedersen.segments[1].windows[9].adr5.in2[1] +7357,3142,main.pedersen.segments[1].windows[9].adr5.out[0] +7358,3148,main.pedersen.segments[1].windows[9].adr5.out[1] +7359,3169,main.pedersen.segments[1].windows[9].adr5.lamda +7360,3133,main.pedersen.segments[1].windows[9].adr6.in1[0] +7361,3134,main.pedersen.segments[1].windows[9].adr6.in1[1] +7362,3142,main.pedersen.segments[1].windows[9].adr6.in2[0] +7363,3148,main.pedersen.segments[1].windows[9].adr6.in2[1] +7364,3143,main.pedersen.segments[1].windows[9].adr6.out[0] +7365,3149,main.pedersen.segments[1].windows[9].adr6.out[1] +7366,3170,main.pedersen.segments[1].windows[9].adr6.lamda +7367,3133,main.pedersen.segments[1].windows[9].adr7.in1[0] +7368,3134,main.pedersen.segments[1].windows[9].adr7.in1[1] +7369,3143,main.pedersen.segments[1].windows[9].adr7.in2[0] +7370,3149,main.pedersen.segments[1].windows[9].adr7.in2[1] +7371,3144,main.pedersen.segments[1].windows[9].adr7.out[0] +7372,3150,main.pedersen.segments[1].windows[9].adr7.out[1] +7373,3171,main.pedersen.segments[1].windows[9].adr7.lamda +7374,3133,main.pedersen.segments[1].windows[9].adr8.in1[0] +7375,3134,main.pedersen.segments[1].windows[9].adr8.in1[1] +7376,3144,main.pedersen.segments[1].windows[9].adr8.in2[0] +7377,3150,main.pedersen.segments[1].windows[9].adr8.in2[1] +7378,3137,main.pedersen.segments[1].windows[9].adr8.out[0] +7379,3138,main.pedersen.segments[1].windows[9].adr8.out[1] +7380,3172,main.pedersen.segments[1].windows[9].adr8.lamda +7400,243,main.pedersen.segments[1].windows[10].in[0] +7401,244,main.pedersen.segments[1].windows[10].in[1] +7402,245,main.pedersen.segments[1].windows[10].in[2] +7403,246,main.pedersen.segments[1].windows[10].in[3] +7404,3182,main.pedersen.segments[1].windows[10].base[0] +7405,3183,main.pedersen.segments[1].windows[10].base[1] +7406,3184,main.pedersen.segments[1].windows[10].out[0] +7407,3185,main.pedersen.segments[1].windows[10].out[1] +7408,3186,main.pedersen.segments[1].windows[10].out8[0] +7409,3187,main.pedersen.segments[1].windows[10].out8[1] +7410,3182,main.pedersen.segments[1].windows[10].mux.c[0][0] +7411,3188,main.pedersen.segments[1].windows[10].mux.c[0][1] +7412,3189,main.pedersen.segments[1].windows[10].mux.c[0][2] +7413,3190,main.pedersen.segments[1].windows[10].mux.c[0][3] +7414,3191,main.pedersen.segments[1].windows[10].mux.c[0][4] +7415,3192,main.pedersen.segments[1].windows[10].mux.c[0][5] +7416,3193,main.pedersen.segments[1].windows[10].mux.c[0][6] +7417,3186,main.pedersen.segments[1].windows[10].mux.c[0][7] +7418,3183,main.pedersen.segments[1].windows[10].mux.c[1][0] +7419,3194,main.pedersen.segments[1].windows[10].mux.c[1][1] +7420,3195,main.pedersen.segments[1].windows[10].mux.c[1][2] +7421,3196,main.pedersen.segments[1].windows[10].mux.c[1][3] +7422,3197,main.pedersen.segments[1].windows[10].mux.c[1][4] +7423,3198,main.pedersen.segments[1].windows[10].mux.c[1][5] +7424,3199,main.pedersen.segments[1].windows[10].mux.c[1][6] +7425,3187,main.pedersen.segments[1].windows[10].mux.c[1][7] +7426,243,main.pedersen.segments[1].windows[10].mux.s[0] +7427,244,main.pedersen.segments[1].windows[10].mux.s[1] +7428,245,main.pedersen.segments[1].windows[10].mux.s[2] +7429,3184,main.pedersen.segments[1].windows[10].mux.out[0] +7430,3200,main.pedersen.segments[1].windows[10].mux.out[1] +7431,3201,main.pedersen.segments[1].windows[10].mux.a210[0] +7432,3202,main.pedersen.segments[1].windows[10].mux.a210[1] +7433,3203,main.pedersen.segments[1].windows[10].mux.a21[0] +7434,3204,main.pedersen.segments[1].windows[10].mux.a21[1] +7435,3205,main.pedersen.segments[1].windows[10].mux.a20[0] +7436,3206,main.pedersen.segments[1].windows[10].mux.a20[1] +7437,3503,main.pedersen.segments[1].windows[10].mux.a2[0] +7438,3504,main.pedersen.segments[1].windows[10].mux.a2[1] +7439,3207,main.pedersen.segments[1].windows[10].mux.a10[0] +7440,3208,main.pedersen.segments[1].windows[10].mux.a10[1] +7441,3209,main.pedersen.segments[1].windows[10].mux.a1[0] +7442,3210,main.pedersen.segments[1].windows[10].mux.a1[1] +7443,3211,main.pedersen.segments[1].windows[10].mux.a0[0] +7444,3212,main.pedersen.segments[1].windows[10].mux.a0[1] +7445,3182,main.pedersen.segments[1].windows[10].mux.a[0] +7446,3183,main.pedersen.segments[1].windows[10].mux.a[1] +7447,3213,main.pedersen.segments[1].windows[10].mux.s10 +7448,3182,main.pedersen.segments[1].windows[10].dbl2.in[0] +7449,3183,main.pedersen.segments[1].windows[10].dbl2.in[1] +7450,3188,main.pedersen.segments[1].windows[10].dbl2.out[0] +7451,3194,main.pedersen.segments[1].windows[10].dbl2.out[1] +7452,3214,main.pedersen.segments[1].windows[10].dbl2.lamda +7453,3215,main.pedersen.segments[1].windows[10].dbl2.x1_2 +7454,3182,main.pedersen.segments[1].windows[10].adr3.in1[0] +7455,3183,main.pedersen.segments[1].windows[10].adr3.in1[1] +7456,3188,main.pedersen.segments[1].windows[10].adr3.in2[0] +7457,3194,main.pedersen.segments[1].windows[10].adr3.in2[1] +7458,3189,main.pedersen.segments[1].windows[10].adr3.out[0] +7459,3195,main.pedersen.segments[1].windows[10].adr3.out[1] +7460,3216,main.pedersen.segments[1].windows[10].adr3.lamda +7461,3182,main.pedersen.segments[1].windows[10].adr4.in1[0] +7462,3183,main.pedersen.segments[1].windows[10].adr4.in1[1] +7463,3189,main.pedersen.segments[1].windows[10].adr4.in2[0] +7464,3195,main.pedersen.segments[1].windows[10].adr4.in2[1] +7465,3190,main.pedersen.segments[1].windows[10].adr4.out[0] +7466,3196,main.pedersen.segments[1].windows[10].adr4.out[1] +7467,3217,main.pedersen.segments[1].windows[10].adr4.lamda +7468,3182,main.pedersen.segments[1].windows[10].adr5.in1[0] +7469,3183,main.pedersen.segments[1].windows[10].adr5.in1[1] +7470,3190,main.pedersen.segments[1].windows[10].adr5.in2[0] +7471,3196,main.pedersen.segments[1].windows[10].adr5.in2[1] +7472,3191,main.pedersen.segments[1].windows[10].adr5.out[0] +7473,3197,main.pedersen.segments[1].windows[10].adr5.out[1] +7474,3218,main.pedersen.segments[1].windows[10].adr5.lamda +7475,3182,main.pedersen.segments[1].windows[10].adr6.in1[0] +7476,3183,main.pedersen.segments[1].windows[10].adr6.in1[1] +7477,3191,main.pedersen.segments[1].windows[10].adr6.in2[0] +7478,3197,main.pedersen.segments[1].windows[10].adr6.in2[1] +7479,3192,main.pedersen.segments[1].windows[10].adr6.out[0] +7480,3198,main.pedersen.segments[1].windows[10].adr6.out[1] +7481,3219,main.pedersen.segments[1].windows[10].adr6.lamda +7482,3182,main.pedersen.segments[1].windows[10].adr7.in1[0] +7483,3183,main.pedersen.segments[1].windows[10].adr7.in1[1] +7484,3192,main.pedersen.segments[1].windows[10].adr7.in2[0] +7485,3198,main.pedersen.segments[1].windows[10].adr7.in2[1] +7486,3193,main.pedersen.segments[1].windows[10].adr7.out[0] +7487,3199,main.pedersen.segments[1].windows[10].adr7.out[1] +7488,3220,main.pedersen.segments[1].windows[10].adr7.lamda +7489,3182,main.pedersen.segments[1].windows[10].adr8.in1[0] +7490,3183,main.pedersen.segments[1].windows[10].adr8.in1[1] +7491,3193,main.pedersen.segments[1].windows[10].adr8.in2[0] +7492,3199,main.pedersen.segments[1].windows[10].adr8.in2[1] +7493,3186,main.pedersen.segments[1].windows[10].adr8.out[0] +7494,3187,main.pedersen.segments[1].windows[10].adr8.out[1] +7495,3221,main.pedersen.segments[1].windows[10].adr8.lamda +7515,247,main.pedersen.segments[1].windows[11].in[0] +7516,248,main.pedersen.segments[1].windows[11].in[1] +7517,249,main.pedersen.segments[1].windows[11].in[2] +7518,250,main.pedersen.segments[1].windows[11].in[3] +7519,3231,main.pedersen.segments[1].windows[11].base[0] +7520,3232,main.pedersen.segments[1].windows[11].base[1] +7521,3233,main.pedersen.segments[1].windows[11].out[0] +7522,3234,main.pedersen.segments[1].windows[11].out[1] +7523,3235,main.pedersen.segments[1].windows[11].out8[0] +7524,3236,main.pedersen.segments[1].windows[11].out8[1] +7525,3231,main.pedersen.segments[1].windows[11].mux.c[0][0] +7526,3237,main.pedersen.segments[1].windows[11].mux.c[0][1] +7527,3238,main.pedersen.segments[1].windows[11].mux.c[0][2] +7528,3239,main.pedersen.segments[1].windows[11].mux.c[0][3] +7529,3240,main.pedersen.segments[1].windows[11].mux.c[0][4] +7530,3241,main.pedersen.segments[1].windows[11].mux.c[0][5] +7531,3242,main.pedersen.segments[1].windows[11].mux.c[0][6] +7532,3235,main.pedersen.segments[1].windows[11].mux.c[0][7] +7533,3232,main.pedersen.segments[1].windows[11].mux.c[1][0] +7534,3243,main.pedersen.segments[1].windows[11].mux.c[1][1] +7535,3244,main.pedersen.segments[1].windows[11].mux.c[1][2] +7536,3245,main.pedersen.segments[1].windows[11].mux.c[1][3] +7537,3246,main.pedersen.segments[1].windows[11].mux.c[1][4] +7538,3247,main.pedersen.segments[1].windows[11].mux.c[1][5] +7539,3248,main.pedersen.segments[1].windows[11].mux.c[1][6] +7540,3236,main.pedersen.segments[1].windows[11].mux.c[1][7] +7541,247,main.pedersen.segments[1].windows[11].mux.s[0] +7542,248,main.pedersen.segments[1].windows[11].mux.s[1] +7543,249,main.pedersen.segments[1].windows[11].mux.s[2] +7544,3233,main.pedersen.segments[1].windows[11].mux.out[0] +7545,3249,main.pedersen.segments[1].windows[11].mux.out[1] +7546,3250,main.pedersen.segments[1].windows[11].mux.a210[0] +7547,3251,main.pedersen.segments[1].windows[11].mux.a210[1] +7548,3252,main.pedersen.segments[1].windows[11].mux.a21[0] +7549,3253,main.pedersen.segments[1].windows[11].mux.a21[1] +7550,3254,main.pedersen.segments[1].windows[11].mux.a20[0] +7551,3255,main.pedersen.segments[1].windows[11].mux.a20[1] +7552,3505,main.pedersen.segments[1].windows[11].mux.a2[0] +7553,3506,main.pedersen.segments[1].windows[11].mux.a2[1] +7554,3256,main.pedersen.segments[1].windows[11].mux.a10[0] +7555,3257,main.pedersen.segments[1].windows[11].mux.a10[1] +7556,3258,main.pedersen.segments[1].windows[11].mux.a1[0] +7557,3259,main.pedersen.segments[1].windows[11].mux.a1[1] +7558,3260,main.pedersen.segments[1].windows[11].mux.a0[0] +7559,3261,main.pedersen.segments[1].windows[11].mux.a0[1] +7560,3231,main.pedersen.segments[1].windows[11].mux.a[0] +7561,3232,main.pedersen.segments[1].windows[11].mux.a[1] +7562,3262,main.pedersen.segments[1].windows[11].mux.s10 +7563,3231,main.pedersen.segments[1].windows[11].dbl2.in[0] +7564,3232,main.pedersen.segments[1].windows[11].dbl2.in[1] +7565,3237,main.pedersen.segments[1].windows[11].dbl2.out[0] +7566,3243,main.pedersen.segments[1].windows[11].dbl2.out[1] +7567,3263,main.pedersen.segments[1].windows[11].dbl2.lamda +7568,3264,main.pedersen.segments[1].windows[11].dbl2.x1_2 +7569,3231,main.pedersen.segments[1].windows[11].adr3.in1[0] +7570,3232,main.pedersen.segments[1].windows[11].adr3.in1[1] +7571,3237,main.pedersen.segments[1].windows[11].adr3.in2[0] +7572,3243,main.pedersen.segments[1].windows[11].adr3.in2[1] +7573,3238,main.pedersen.segments[1].windows[11].adr3.out[0] +7574,3244,main.pedersen.segments[1].windows[11].adr3.out[1] +7575,3265,main.pedersen.segments[1].windows[11].adr3.lamda +7576,3231,main.pedersen.segments[1].windows[11].adr4.in1[0] +7577,3232,main.pedersen.segments[1].windows[11].adr4.in1[1] +7578,3238,main.pedersen.segments[1].windows[11].adr4.in2[0] +7579,3244,main.pedersen.segments[1].windows[11].adr4.in2[1] +7580,3239,main.pedersen.segments[1].windows[11].adr4.out[0] +7581,3245,main.pedersen.segments[1].windows[11].adr4.out[1] +7582,3266,main.pedersen.segments[1].windows[11].adr4.lamda +7583,3231,main.pedersen.segments[1].windows[11].adr5.in1[0] +7584,3232,main.pedersen.segments[1].windows[11].adr5.in1[1] +7585,3239,main.pedersen.segments[1].windows[11].adr5.in2[0] +7586,3245,main.pedersen.segments[1].windows[11].adr5.in2[1] +7587,3240,main.pedersen.segments[1].windows[11].adr5.out[0] +7588,3246,main.pedersen.segments[1].windows[11].adr5.out[1] +7589,3267,main.pedersen.segments[1].windows[11].adr5.lamda +7590,3231,main.pedersen.segments[1].windows[11].adr6.in1[0] +7591,3232,main.pedersen.segments[1].windows[11].adr6.in1[1] +7592,3240,main.pedersen.segments[1].windows[11].adr6.in2[0] +7593,3246,main.pedersen.segments[1].windows[11].adr6.in2[1] +7594,3241,main.pedersen.segments[1].windows[11].adr6.out[0] +7595,3247,main.pedersen.segments[1].windows[11].adr6.out[1] +7596,3268,main.pedersen.segments[1].windows[11].adr6.lamda +7597,3231,main.pedersen.segments[1].windows[11].adr7.in1[0] +7598,3232,main.pedersen.segments[1].windows[11].adr7.in1[1] +7599,3241,main.pedersen.segments[1].windows[11].adr7.in2[0] +7600,3247,main.pedersen.segments[1].windows[11].adr7.in2[1] +7601,3242,main.pedersen.segments[1].windows[11].adr7.out[0] +7602,3248,main.pedersen.segments[1].windows[11].adr7.out[1] +7603,3269,main.pedersen.segments[1].windows[11].adr7.lamda +7604,3231,main.pedersen.segments[1].windows[11].adr8.in1[0] +7605,3232,main.pedersen.segments[1].windows[11].adr8.in1[1] +7606,3242,main.pedersen.segments[1].windows[11].adr8.in2[0] +7607,3248,main.pedersen.segments[1].windows[11].adr8.in2[1] +7608,3235,main.pedersen.segments[1].windows[11].adr8.out[0] +7609,3236,main.pedersen.segments[1].windows[11].adr8.out[1] +7610,3270,main.pedersen.segments[1].windows[11].adr8.lamda +7630,251,main.pedersen.segments[1].windows[12].in[0] +7631,252,main.pedersen.segments[1].windows[12].in[1] +7632,253,main.pedersen.segments[1].windows[12].in[2] +7633,254,main.pedersen.segments[1].windows[12].in[3] +7634,3280,main.pedersen.segments[1].windows[12].base[0] +7635,3281,main.pedersen.segments[1].windows[12].base[1] +7636,3282,main.pedersen.segments[1].windows[12].out[0] +7637,3283,main.pedersen.segments[1].windows[12].out[1] +7638,3284,main.pedersen.segments[1].windows[12].out8[0] +7639,3285,main.pedersen.segments[1].windows[12].out8[1] +7640,3280,main.pedersen.segments[1].windows[12].mux.c[0][0] +7641,3286,main.pedersen.segments[1].windows[12].mux.c[0][1] +7642,3287,main.pedersen.segments[1].windows[12].mux.c[0][2] +7643,3288,main.pedersen.segments[1].windows[12].mux.c[0][3] +7644,3289,main.pedersen.segments[1].windows[12].mux.c[0][4] +7645,3290,main.pedersen.segments[1].windows[12].mux.c[0][5] +7646,3291,main.pedersen.segments[1].windows[12].mux.c[0][6] +7647,3284,main.pedersen.segments[1].windows[12].mux.c[0][7] +7648,3281,main.pedersen.segments[1].windows[12].mux.c[1][0] +7649,3292,main.pedersen.segments[1].windows[12].mux.c[1][1] +7650,3293,main.pedersen.segments[1].windows[12].mux.c[1][2] +7651,3294,main.pedersen.segments[1].windows[12].mux.c[1][3] +7652,3295,main.pedersen.segments[1].windows[12].mux.c[1][4] +7653,3296,main.pedersen.segments[1].windows[12].mux.c[1][5] +7654,3297,main.pedersen.segments[1].windows[12].mux.c[1][6] +7655,3285,main.pedersen.segments[1].windows[12].mux.c[1][7] +7656,251,main.pedersen.segments[1].windows[12].mux.s[0] +7657,252,main.pedersen.segments[1].windows[12].mux.s[1] +7658,253,main.pedersen.segments[1].windows[12].mux.s[2] +7659,3282,main.pedersen.segments[1].windows[12].mux.out[0] +7660,3298,main.pedersen.segments[1].windows[12].mux.out[1] +7661,3299,main.pedersen.segments[1].windows[12].mux.a210[0] +7662,3300,main.pedersen.segments[1].windows[12].mux.a210[1] +7663,3301,main.pedersen.segments[1].windows[12].mux.a21[0] +7664,3302,main.pedersen.segments[1].windows[12].mux.a21[1] +7665,3303,main.pedersen.segments[1].windows[12].mux.a20[0] +7666,3304,main.pedersen.segments[1].windows[12].mux.a20[1] +7667,3507,main.pedersen.segments[1].windows[12].mux.a2[0] +7668,3508,main.pedersen.segments[1].windows[12].mux.a2[1] +7669,3305,main.pedersen.segments[1].windows[12].mux.a10[0] +7670,3306,main.pedersen.segments[1].windows[12].mux.a10[1] +7671,3307,main.pedersen.segments[1].windows[12].mux.a1[0] +7672,3308,main.pedersen.segments[1].windows[12].mux.a1[1] +7673,3309,main.pedersen.segments[1].windows[12].mux.a0[0] +7674,3310,main.pedersen.segments[1].windows[12].mux.a0[1] +7675,3280,main.pedersen.segments[1].windows[12].mux.a[0] +7676,3281,main.pedersen.segments[1].windows[12].mux.a[1] +7677,3311,main.pedersen.segments[1].windows[12].mux.s10 +7678,3280,main.pedersen.segments[1].windows[12].dbl2.in[0] +7679,3281,main.pedersen.segments[1].windows[12].dbl2.in[1] +7680,3286,main.pedersen.segments[1].windows[12].dbl2.out[0] +7681,3292,main.pedersen.segments[1].windows[12].dbl2.out[1] +7682,3312,main.pedersen.segments[1].windows[12].dbl2.lamda +7683,3313,main.pedersen.segments[1].windows[12].dbl2.x1_2 +7684,3280,main.pedersen.segments[1].windows[12].adr3.in1[0] +7685,3281,main.pedersen.segments[1].windows[12].adr3.in1[1] +7686,3286,main.pedersen.segments[1].windows[12].adr3.in2[0] +7687,3292,main.pedersen.segments[1].windows[12].adr3.in2[1] +7688,3287,main.pedersen.segments[1].windows[12].adr3.out[0] +7689,3293,main.pedersen.segments[1].windows[12].adr3.out[1] +7690,3314,main.pedersen.segments[1].windows[12].adr3.lamda +7691,3280,main.pedersen.segments[1].windows[12].adr4.in1[0] +7692,3281,main.pedersen.segments[1].windows[12].adr4.in1[1] +7693,3287,main.pedersen.segments[1].windows[12].adr4.in2[0] +7694,3293,main.pedersen.segments[1].windows[12].adr4.in2[1] +7695,3288,main.pedersen.segments[1].windows[12].adr4.out[0] +7696,3294,main.pedersen.segments[1].windows[12].adr4.out[1] +7697,3315,main.pedersen.segments[1].windows[12].adr4.lamda +7698,3280,main.pedersen.segments[1].windows[12].adr5.in1[0] +7699,3281,main.pedersen.segments[1].windows[12].adr5.in1[1] +7700,3288,main.pedersen.segments[1].windows[12].adr5.in2[0] +7701,3294,main.pedersen.segments[1].windows[12].adr5.in2[1] +7702,3289,main.pedersen.segments[1].windows[12].adr5.out[0] +7703,3295,main.pedersen.segments[1].windows[12].adr5.out[1] +7704,3316,main.pedersen.segments[1].windows[12].adr5.lamda +7705,3280,main.pedersen.segments[1].windows[12].adr6.in1[0] +7706,3281,main.pedersen.segments[1].windows[12].adr6.in1[1] +7707,3289,main.pedersen.segments[1].windows[12].adr6.in2[0] +7708,3295,main.pedersen.segments[1].windows[12].adr6.in2[1] +7709,3290,main.pedersen.segments[1].windows[12].adr6.out[0] +7710,3296,main.pedersen.segments[1].windows[12].adr6.out[1] +7711,3317,main.pedersen.segments[1].windows[12].adr6.lamda +7712,3280,main.pedersen.segments[1].windows[12].adr7.in1[0] +7713,3281,main.pedersen.segments[1].windows[12].adr7.in1[1] +7714,3290,main.pedersen.segments[1].windows[12].adr7.in2[0] +7715,3296,main.pedersen.segments[1].windows[12].adr7.in2[1] +7716,3291,main.pedersen.segments[1].windows[12].adr7.out[0] +7717,3297,main.pedersen.segments[1].windows[12].adr7.out[1] +7718,3318,main.pedersen.segments[1].windows[12].adr7.lamda +7719,3280,main.pedersen.segments[1].windows[12].adr8.in1[0] +7720,3281,main.pedersen.segments[1].windows[12].adr8.in1[1] +7721,3291,main.pedersen.segments[1].windows[12].adr8.in2[0] +7722,3297,main.pedersen.segments[1].windows[12].adr8.in2[1] +7723,3284,main.pedersen.segments[1].windows[12].adr8.out[0] +7724,3285,main.pedersen.segments[1].windows[12].adr8.out[1] +7725,3319,main.pedersen.segments[1].windows[12].adr8.lamda +7745,255,main.pedersen.segments[1].windows[13].in[0] +7746,3511,main.pedersen.segments[1].windows[13].in[1] +7747,3512,main.pedersen.segments[1].windows[13].in[2] +7748,3513,main.pedersen.segments[1].windows[13].in[3] +7749,3329,main.pedersen.segments[1].windows[13].base[0] +7750,3330,main.pedersen.segments[1].windows[13].base[1] +7751,3331,main.pedersen.segments[1].windows[13].out[0] +7752,3332,main.pedersen.segments[1].windows[13].out[1] +7753,3333,main.pedersen.segments[1].windows[13].out8[0] +7754,3334,main.pedersen.segments[1].windows[13].out8[1] +7755,3329,main.pedersen.segments[1].windows[13].mux.c[0][0] +7756,3335,main.pedersen.segments[1].windows[13].mux.c[0][1] +7757,3336,main.pedersen.segments[1].windows[13].mux.c[0][2] +7758,3337,main.pedersen.segments[1].windows[13].mux.c[0][3] +7759,3338,main.pedersen.segments[1].windows[13].mux.c[0][4] +7760,3339,main.pedersen.segments[1].windows[13].mux.c[0][5] +7761,3340,main.pedersen.segments[1].windows[13].mux.c[0][6] +7762,3333,main.pedersen.segments[1].windows[13].mux.c[0][7] +7763,3330,main.pedersen.segments[1].windows[13].mux.c[1][0] +7764,3341,main.pedersen.segments[1].windows[13].mux.c[1][1] +7765,3342,main.pedersen.segments[1].windows[13].mux.c[1][2] +7766,3343,main.pedersen.segments[1].windows[13].mux.c[1][3] +7767,3344,main.pedersen.segments[1].windows[13].mux.c[1][4] +7768,3345,main.pedersen.segments[1].windows[13].mux.c[1][5] +7769,3346,main.pedersen.segments[1].windows[13].mux.c[1][6] +7770,3334,main.pedersen.segments[1].windows[13].mux.c[1][7] +7771,255,main.pedersen.segments[1].windows[13].mux.s[0] +7772,3511,main.pedersen.segments[1].windows[13].mux.s[1] +7773,3512,main.pedersen.segments[1].windows[13].mux.s[2] +7774,3331,main.pedersen.segments[1].windows[13].mux.out[0] +7775,3347,main.pedersen.segments[1].windows[13].mux.out[1] +7776,3348,main.pedersen.segments[1].windows[13].mux.a210[0] +7777,3349,main.pedersen.segments[1].windows[13].mux.a210[1] +7778,3350,main.pedersen.segments[1].windows[13].mux.a21[0] +7779,3351,main.pedersen.segments[1].windows[13].mux.a21[1] +7780,3352,main.pedersen.segments[1].windows[13].mux.a20[0] +7781,3353,main.pedersen.segments[1].windows[13].mux.a20[1] +7782,3509,main.pedersen.segments[1].windows[13].mux.a2[0] +7783,3510,main.pedersen.segments[1].windows[13].mux.a2[1] +7784,3354,main.pedersen.segments[1].windows[13].mux.a10[0] +7785,3355,main.pedersen.segments[1].windows[13].mux.a10[1] +7786,3356,main.pedersen.segments[1].windows[13].mux.a1[0] +7787,3357,main.pedersen.segments[1].windows[13].mux.a1[1] +7788,3358,main.pedersen.segments[1].windows[13].mux.a0[0] +7789,3359,main.pedersen.segments[1].windows[13].mux.a0[1] +7790,3329,main.pedersen.segments[1].windows[13].mux.a[0] +7791,3330,main.pedersen.segments[1].windows[13].mux.a[1] +7792,3360,main.pedersen.segments[1].windows[13].mux.s10 +7793,3329,main.pedersen.segments[1].windows[13].dbl2.in[0] +7794,3330,main.pedersen.segments[1].windows[13].dbl2.in[1] +7795,3335,main.pedersen.segments[1].windows[13].dbl2.out[0] +7796,3341,main.pedersen.segments[1].windows[13].dbl2.out[1] +7797,3361,main.pedersen.segments[1].windows[13].dbl2.lamda +7798,3362,main.pedersen.segments[1].windows[13].dbl2.x1_2 +7799,3329,main.pedersen.segments[1].windows[13].adr3.in1[0] +7800,3330,main.pedersen.segments[1].windows[13].adr3.in1[1] +7801,3335,main.pedersen.segments[1].windows[13].adr3.in2[0] +7802,3341,main.pedersen.segments[1].windows[13].adr3.in2[1] +7803,3336,main.pedersen.segments[1].windows[13].adr3.out[0] +7804,3342,main.pedersen.segments[1].windows[13].adr3.out[1] +7805,3363,main.pedersen.segments[1].windows[13].adr3.lamda +7806,3329,main.pedersen.segments[1].windows[13].adr4.in1[0] +7807,3330,main.pedersen.segments[1].windows[13].adr4.in1[1] +7808,3336,main.pedersen.segments[1].windows[13].adr4.in2[0] +7809,3342,main.pedersen.segments[1].windows[13].adr4.in2[1] +7810,3337,main.pedersen.segments[1].windows[13].adr4.out[0] +7811,3343,main.pedersen.segments[1].windows[13].adr4.out[1] +7812,3364,main.pedersen.segments[1].windows[13].adr4.lamda +7813,3329,main.pedersen.segments[1].windows[13].adr5.in1[0] +7814,3330,main.pedersen.segments[1].windows[13].adr5.in1[1] +7815,3337,main.pedersen.segments[1].windows[13].adr5.in2[0] +7816,3343,main.pedersen.segments[1].windows[13].adr5.in2[1] +7817,3338,main.pedersen.segments[1].windows[13].adr5.out[0] +7818,3344,main.pedersen.segments[1].windows[13].adr5.out[1] +7819,3365,main.pedersen.segments[1].windows[13].adr5.lamda +7820,3329,main.pedersen.segments[1].windows[13].adr6.in1[0] +7821,3330,main.pedersen.segments[1].windows[13].adr6.in1[1] +7822,3338,main.pedersen.segments[1].windows[13].adr6.in2[0] +7823,3344,main.pedersen.segments[1].windows[13].adr6.in2[1] +7824,3339,main.pedersen.segments[1].windows[13].adr6.out[0] +7825,3345,main.pedersen.segments[1].windows[13].adr6.out[1] +7826,3366,main.pedersen.segments[1].windows[13].adr6.lamda +7827,3329,main.pedersen.segments[1].windows[13].adr7.in1[0] +7828,3330,main.pedersen.segments[1].windows[13].adr7.in1[1] +7829,3339,main.pedersen.segments[1].windows[13].adr7.in2[0] +7830,3345,main.pedersen.segments[1].windows[13].adr7.in2[1] +7831,3340,main.pedersen.segments[1].windows[13].adr7.out[0] +7832,3346,main.pedersen.segments[1].windows[13].adr7.out[1] +7833,3367,main.pedersen.segments[1].windows[13].adr7.lamda +7834,3329,main.pedersen.segments[1].windows[13].adr8.in1[0] +7835,3330,main.pedersen.segments[1].windows[13].adr8.in1[1] +7836,3340,main.pedersen.segments[1].windows[13].adr8.in2[0] +7837,3346,main.pedersen.segments[1].windows[13].adr8.in2[1] +7838,3333,main.pedersen.segments[1].windows[13].adr8.out[0] +7839,3334,main.pedersen.segments[1].windows[13].adr8.out[1] +7840,3368,main.pedersen.segments[1].windows[13].adr8.lamda +6461,2703,main.pedersen.segments[1].doublers1[0].in[0] +6462,2704,main.pedersen.segments[1].doublers1[0].in[1] +6463,2781,main.pedersen.segments[1].doublers1[0].out[0] +6464,2782,main.pedersen.segments[1].doublers1[0].out[1] +6465,2783,main.pedersen.segments[1].doublers1[0].lamda +6466,2784,main.pedersen.segments[1].doublers1[0].x1_2 +6576,2745,main.pedersen.segments[1].doublers1[1].in[0] +6577,2746,main.pedersen.segments[1].doublers1[1].in[1] +6578,2830,main.pedersen.segments[1].doublers1[1].out[0] +6579,2831,main.pedersen.segments[1].doublers1[1].out[1] +6580,2832,main.pedersen.segments[1].doublers1[1].lamda +6581,2833,main.pedersen.segments[1].doublers1[1].x1_2 +6691,2794,main.pedersen.segments[1].doublers1[2].in[0] +6692,2795,main.pedersen.segments[1].doublers1[2].in[1] +6693,2879,main.pedersen.segments[1].doublers1[2].out[0] +6694,2880,main.pedersen.segments[1].doublers1[2].out[1] +6695,2881,main.pedersen.segments[1].doublers1[2].lamda +6696,2882,main.pedersen.segments[1].doublers1[2].x1_2 +6806,2843,main.pedersen.segments[1].doublers1[3].in[0] +6807,2844,main.pedersen.segments[1].doublers1[3].in[1] +6808,2928,main.pedersen.segments[1].doublers1[3].out[0] +6809,2929,main.pedersen.segments[1].doublers1[3].out[1] +6810,2930,main.pedersen.segments[1].doublers1[3].lamda +6811,2931,main.pedersen.segments[1].doublers1[3].x1_2 +6921,2892,main.pedersen.segments[1].doublers1[4].in[0] +6922,2893,main.pedersen.segments[1].doublers1[4].in[1] +6923,2977,main.pedersen.segments[1].doublers1[4].out[0] +6924,2978,main.pedersen.segments[1].doublers1[4].out[1] +6925,2979,main.pedersen.segments[1].doublers1[4].lamda +6926,2980,main.pedersen.segments[1].doublers1[4].x1_2 +7036,2941,main.pedersen.segments[1].doublers1[5].in[0] +7037,2942,main.pedersen.segments[1].doublers1[5].in[1] +7038,3026,main.pedersen.segments[1].doublers1[5].out[0] +7039,3027,main.pedersen.segments[1].doublers1[5].out[1] +7040,3028,main.pedersen.segments[1].doublers1[5].lamda +7041,3029,main.pedersen.segments[1].doublers1[5].x1_2 +7151,2990,main.pedersen.segments[1].doublers1[6].in[0] +7152,2991,main.pedersen.segments[1].doublers1[6].in[1] +7153,3075,main.pedersen.segments[1].doublers1[6].out[0] +7154,3076,main.pedersen.segments[1].doublers1[6].out[1] +7155,3077,main.pedersen.segments[1].doublers1[6].lamda +7156,3078,main.pedersen.segments[1].doublers1[6].x1_2 +7266,3039,main.pedersen.segments[1].doublers1[7].in[0] +7267,3040,main.pedersen.segments[1].doublers1[7].in[1] +7268,3124,main.pedersen.segments[1].doublers1[7].out[0] +7269,3125,main.pedersen.segments[1].doublers1[7].out[1] +7270,3126,main.pedersen.segments[1].doublers1[7].lamda +7271,3127,main.pedersen.segments[1].doublers1[7].x1_2 +7381,3088,main.pedersen.segments[1].doublers1[8].in[0] +7382,3089,main.pedersen.segments[1].doublers1[8].in[1] +7383,3173,main.pedersen.segments[1].doublers1[8].out[0] +7384,3174,main.pedersen.segments[1].doublers1[8].out[1] +7385,3175,main.pedersen.segments[1].doublers1[8].lamda +7386,3176,main.pedersen.segments[1].doublers1[8].x1_2 +7496,3137,main.pedersen.segments[1].doublers1[9].in[0] +7497,3138,main.pedersen.segments[1].doublers1[9].in[1] +7498,3222,main.pedersen.segments[1].doublers1[9].out[0] +7499,3223,main.pedersen.segments[1].doublers1[9].out[1] +7500,3224,main.pedersen.segments[1].doublers1[9].lamda +7501,3225,main.pedersen.segments[1].doublers1[9].x1_2 +7611,3186,main.pedersen.segments[1].doublers1[10].in[0] +7612,3187,main.pedersen.segments[1].doublers1[10].in[1] +7613,3271,main.pedersen.segments[1].doublers1[10].out[0] +7614,3272,main.pedersen.segments[1].doublers1[10].out[1] +7615,3273,main.pedersen.segments[1].doublers1[10].lamda +7616,3274,main.pedersen.segments[1].doublers1[10].x1_2 +7726,3235,main.pedersen.segments[1].doublers1[11].in[0] +7727,3236,main.pedersen.segments[1].doublers1[11].in[1] +7728,3320,main.pedersen.segments[1].doublers1[11].out[0] +7729,3321,main.pedersen.segments[1].doublers1[11].out[1] +7730,3322,main.pedersen.segments[1].doublers1[11].lamda +7731,3323,main.pedersen.segments[1].doublers1[11].x1_2 +7841,3284,main.pedersen.segments[1].doublers1[12].in[0] +7842,3285,main.pedersen.segments[1].doublers1[12].in[1] +7843,3369,main.pedersen.segments[1].doublers1[12].out[0] +7844,3370,main.pedersen.segments[1].doublers1[12].out[1] +7845,3371,main.pedersen.segments[1].doublers1[12].lamda +7846,3372,main.pedersen.segments[1].doublers1[12].x1_2 +6467,2781,main.pedersen.segments[1].doublers2[0].in[0] +6468,2782,main.pedersen.segments[1].doublers2[0].in[1] +6469,2741,main.pedersen.segments[1].doublers2[0].out[0] +6470,2742,main.pedersen.segments[1].doublers2[0].out[1] +6471,2785,main.pedersen.segments[1].doublers2[0].lamda +6472,2786,main.pedersen.segments[1].doublers2[0].x1_2 +6582,2830,main.pedersen.segments[1].doublers2[1].in[0] +6583,2831,main.pedersen.segments[1].doublers2[1].in[1] +6584,2790,main.pedersen.segments[1].doublers2[1].out[0] +6585,2791,main.pedersen.segments[1].doublers2[1].out[1] +6586,2834,main.pedersen.segments[1].doublers2[1].lamda +6587,2835,main.pedersen.segments[1].doublers2[1].x1_2 +6697,2879,main.pedersen.segments[1].doublers2[2].in[0] +6698,2880,main.pedersen.segments[1].doublers2[2].in[1] +6699,2839,main.pedersen.segments[1].doublers2[2].out[0] +6700,2840,main.pedersen.segments[1].doublers2[2].out[1] +6701,2883,main.pedersen.segments[1].doublers2[2].lamda +6702,2884,main.pedersen.segments[1].doublers2[2].x1_2 +6812,2928,main.pedersen.segments[1].doublers2[3].in[0] +6813,2929,main.pedersen.segments[1].doublers2[3].in[1] +6814,2888,main.pedersen.segments[1].doublers2[3].out[0] +6815,2889,main.pedersen.segments[1].doublers2[3].out[1] +6816,2932,main.pedersen.segments[1].doublers2[3].lamda +6817,2933,main.pedersen.segments[1].doublers2[3].x1_2 +6927,2977,main.pedersen.segments[1].doublers2[4].in[0] +6928,2978,main.pedersen.segments[1].doublers2[4].in[1] +6929,2937,main.pedersen.segments[1].doublers2[4].out[0] +6930,2938,main.pedersen.segments[1].doublers2[4].out[1] +6931,2981,main.pedersen.segments[1].doublers2[4].lamda +6932,2982,main.pedersen.segments[1].doublers2[4].x1_2 +7042,3026,main.pedersen.segments[1].doublers2[5].in[0] +7043,3027,main.pedersen.segments[1].doublers2[5].in[1] +7044,2986,main.pedersen.segments[1].doublers2[5].out[0] +7045,2987,main.pedersen.segments[1].doublers2[5].out[1] +7046,3030,main.pedersen.segments[1].doublers2[5].lamda +7047,3031,main.pedersen.segments[1].doublers2[5].x1_2 +7157,3075,main.pedersen.segments[1].doublers2[6].in[0] +7158,3076,main.pedersen.segments[1].doublers2[6].in[1] +7159,3035,main.pedersen.segments[1].doublers2[6].out[0] +7160,3036,main.pedersen.segments[1].doublers2[6].out[1] +7161,3079,main.pedersen.segments[1].doublers2[6].lamda +7162,3080,main.pedersen.segments[1].doublers2[6].x1_2 +7272,3124,main.pedersen.segments[1].doublers2[7].in[0] +7273,3125,main.pedersen.segments[1].doublers2[7].in[1] +7274,3084,main.pedersen.segments[1].doublers2[7].out[0] +7275,3085,main.pedersen.segments[1].doublers2[7].out[1] +7276,3128,main.pedersen.segments[1].doublers2[7].lamda +7277,3129,main.pedersen.segments[1].doublers2[7].x1_2 +7387,3173,main.pedersen.segments[1].doublers2[8].in[0] +7388,3174,main.pedersen.segments[1].doublers2[8].in[1] +7389,3133,main.pedersen.segments[1].doublers2[8].out[0] +7390,3134,main.pedersen.segments[1].doublers2[8].out[1] +7391,3177,main.pedersen.segments[1].doublers2[8].lamda +7392,3178,main.pedersen.segments[1].doublers2[8].x1_2 +7502,3222,main.pedersen.segments[1].doublers2[9].in[0] +7503,3223,main.pedersen.segments[1].doublers2[9].in[1] +7504,3182,main.pedersen.segments[1].doublers2[9].out[0] +7505,3183,main.pedersen.segments[1].doublers2[9].out[1] +7506,3226,main.pedersen.segments[1].doublers2[9].lamda +7507,3227,main.pedersen.segments[1].doublers2[9].x1_2 +7617,3271,main.pedersen.segments[1].doublers2[10].in[0] +7618,3272,main.pedersen.segments[1].doublers2[10].in[1] +7619,3231,main.pedersen.segments[1].doublers2[10].out[0] +7620,3232,main.pedersen.segments[1].doublers2[10].out[1] +7621,3275,main.pedersen.segments[1].doublers2[10].lamda +7622,3276,main.pedersen.segments[1].doublers2[10].x1_2 +7732,3320,main.pedersen.segments[1].doublers2[11].in[0] +7733,3321,main.pedersen.segments[1].doublers2[11].in[1] +7734,3280,main.pedersen.segments[1].doublers2[11].out[0] +7735,3281,main.pedersen.segments[1].doublers2[11].out[1] +7736,3324,main.pedersen.segments[1].doublers2[11].lamda +7737,3325,main.pedersen.segments[1].doublers2[11].x1_2 +7847,3369,main.pedersen.segments[1].doublers2[12].in[0] +7848,3370,main.pedersen.segments[1].doublers2[12].in[1] +7849,3329,main.pedersen.segments[1].doublers2[12].out[0] +7850,3330,main.pedersen.segments[1].doublers2[12].out[1] +7851,3373,main.pedersen.segments[1].doublers2[12].lamda +7852,3374,main.pedersen.segments[1].doublers2[12].x1_2 +6473,2701,main.pedersen.segments[1].adders[0].in1[0] +6474,2702,main.pedersen.segments[1].adders[0].in1[1] +6475,2743,main.pedersen.segments[1].adders[0].in2[0] +6476,2744,main.pedersen.segments[1].adders[0].in2[1] +6477,2787,main.pedersen.segments[1].adders[0].out[0] +6478,2788,main.pedersen.segments[1].adders[0].out[1] +6479,2789,main.pedersen.segments[1].adders[0].lamda +6588,2787,main.pedersen.segments[1].adders[1].in1[0] +6589,2788,main.pedersen.segments[1].adders[1].in1[1] +6590,2792,main.pedersen.segments[1].adders[1].in2[0] +6591,2793,main.pedersen.segments[1].adders[1].in2[1] +6592,2836,main.pedersen.segments[1].adders[1].out[0] +6593,2837,main.pedersen.segments[1].adders[1].out[1] +6594,2838,main.pedersen.segments[1].adders[1].lamda +6703,2836,main.pedersen.segments[1].adders[2].in1[0] +6704,2837,main.pedersen.segments[1].adders[2].in1[1] +6705,2841,main.pedersen.segments[1].adders[2].in2[0] +6706,2842,main.pedersen.segments[1].adders[2].in2[1] +6707,2885,main.pedersen.segments[1].adders[2].out[0] +6708,2886,main.pedersen.segments[1].adders[2].out[1] +6709,2887,main.pedersen.segments[1].adders[2].lamda +6818,2885,main.pedersen.segments[1].adders[3].in1[0] +6819,2886,main.pedersen.segments[1].adders[3].in1[1] +6820,2890,main.pedersen.segments[1].adders[3].in2[0] +6821,2891,main.pedersen.segments[1].adders[3].in2[1] +6822,2934,main.pedersen.segments[1].adders[3].out[0] +6823,2935,main.pedersen.segments[1].adders[3].out[1] +6824,2936,main.pedersen.segments[1].adders[3].lamda +6933,2934,main.pedersen.segments[1].adders[4].in1[0] +6934,2935,main.pedersen.segments[1].adders[4].in1[1] +6935,2939,main.pedersen.segments[1].adders[4].in2[0] +6936,2940,main.pedersen.segments[1].adders[4].in2[1] +6937,2983,main.pedersen.segments[1].adders[4].out[0] +6938,2984,main.pedersen.segments[1].adders[4].out[1] +6939,2985,main.pedersen.segments[1].adders[4].lamda +7048,2983,main.pedersen.segments[1].adders[5].in1[0] +7049,2984,main.pedersen.segments[1].adders[5].in1[1] +7050,2988,main.pedersen.segments[1].adders[5].in2[0] +7051,2989,main.pedersen.segments[1].adders[5].in2[1] +7052,3032,main.pedersen.segments[1].adders[5].out[0] +7053,3033,main.pedersen.segments[1].adders[5].out[1] +7054,3034,main.pedersen.segments[1].adders[5].lamda +7163,3032,main.pedersen.segments[1].adders[6].in1[0] +7164,3033,main.pedersen.segments[1].adders[6].in1[1] +7165,3037,main.pedersen.segments[1].adders[6].in2[0] +7166,3038,main.pedersen.segments[1].adders[6].in2[1] +7167,3081,main.pedersen.segments[1].adders[6].out[0] +7168,3082,main.pedersen.segments[1].adders[6].out[1] +7169,3083,main.pedersen.segments[1].adders[6].lamda +7278,3081,main.pedersen.segments[1].adders[7].in1[0] +7279,3082,main.pedersen.segments[1].adders[7].in1[1] +7280,3086,main.pedersen.segments[1].adders[7].in2[0] +7281,3087,main.pedersen.segments[1].adders[7].in2[1] +7282,3130,main.pedersen.segments[1].adders[7].out[0] +7283,3131,main.pedersen.segments[1].adders[7].out[1] +7284,3132,main.pedersen.segments[1].adders[7].lamda +7393,3130,main.pedersen.segments[1].adders[8].in1[0] +7394,3131,main.pedersen.segments[1].adders[8].in1[1] +7395,3135,main.pedersen.segments[1].adders[8].in2[0] +7396,3136,main.pedersen.segments[1].adders[8].in2[1] +7397,3179,main.pedersen.segments[1].adders[8].out[0] +7398,3180,main.pedersen.segments[1].adders[8].out[1] +7399,3181,main.pedersen.segments[1].adders[8].lamda +7508,3179,main.pedersen.segments[1].adders[9].in1[0] +7509,3180,main.pedersen.segments[1].adders[9].in1[1] +7510,3184,main.pedersen.segments[1].adders[9].in2[0] +7511,3185,main.pedersen.segments[1].adders[9].in2[1] +7512,3228,main.pedersen.segments[1].adders[9].out[0] +7513,3229,main.pedersen.segments[1].adders[9].out[1] +7514,3230,main.pedersen.segments[1].adders[9].lamda +7623,3228,main.pedersen.segments[1].adders[10].in1[0] +7624,3229,main.pedersen.segments[1].adders[10].in1[1] +7625,3233,main.pedersen.segments[1].adders[10].in2[0] +7626,3234,main.pedersen.segments[1].adders[10].in2[1] +7627,3277,main.pedersen.segments[1].adders[10].out[0] +7628,3278,main.pedersen.segments[1].adders[10].out[1] +7629,3279,main.pedersen.segments[1].adders[10].lamda +7738,3277,main.pedersen.segments[1].adders[11].in1[0] +7739,3278,main.pedersen.segments[1].adders[11].in1[1] +7740,3282,main.pedersen.segments[1].adders[11].in2[0] +7741,3283,main.pedersen.segments[1].adders[11].in2[1] +7742,3326,main.pedersen.segments[1].adders[11].out[0] +7743,3327,main.pedersen.segments[1].adders[11].out[1] +7744,3328,main.pedersen.segments[1].adders[11].lamda +7853,3326,main.pedersen.segments[1].adders[12].in1[0] +7854,3327,main.pedersen.segments[1].adders[12].in1[1] +7855,3331,main.pedersen.segments[1].adders[12].in2[0] +7856,3332,main.pedersen.segments[1].adders[12].in2[1] +7857,3375,main.pedersen.segments[1].adders[12].out[0] +7858,3376,main.pedersen.segments[1].adders[12].out[1] +7859,3377,main.pedersen.segments[1].adders[12].lamda +7860,3375,main.pedersen.segments[1].m2e.in[0] +7861,3376,main.pedersen.segments[1].m2e.in[1] +7862,2699,main.pedersen.segments[1].m2e.out[0] +7863,2700,main.pedersen.segments[1].m2e.out[1] +7864,256,main.pedersen.adders[0].x1 +7865,257,main.pedersen.adders[0].y1 +7866,2699,main.pedersen.adders[0].x2 +7867,2700,main.pedersen.adders[0].y2 +7868,1,main.pedersen.adders[0].xout +7869,2,main.pedersen.adders[0].yout +7870,3378,main.pedersen.adders[0].beta +7871,3379,main.pedersen.adders[0].gamma +7872,3380,main.pedersen.adders[0].delta +7873,3381,main.pedersen.adders[0].tau +7874,3,main.n2b.in +7875,3382,main.n2b.out[0] +7876,4,main.n2b.out[1] +7877,5,main.n2b.out[2] +7878,6,main.n2b.out[3] +7879,7,main.n2b.out[4] +7880,8,main.n2b.out[5] +7881,9,main.n2b.out[6] +7882,10,main.n2b.out[7] +7883,11,main.n2b.out[8] +7884,12,main.n2b.out[9] +7885,13,main.n2b.out[10] +7886,14,main.n2b.out[11] +7887,15,main.n2b.out[12] +7888,16,main.n2b.out[13] +7889,17,main.n2b.out[14] +7890,18,main.n2b.out[15] +7891,19,main.n2b.out[16] +7892,20,main.n2b.out[17] +7893,21,main.n2b.out[18] +7894,22,main.n2b.out[19] +7895,23,main.n2b.out[20] +7896,24,main.n2b.out[21] +7897,25,main.n2b.out[22] +7898,26,main.n2b.out[23] +7899,27,main.n2b.out[24] +7900,28,main.n2b.out[25] +7901,29,main.n2b.out[26] +7902,30,main.n2b.out[27] +7903,31,main.n2b.out[28] +7904,32,main.n2b.out[29] +7905,33,main.n2b.out[30] +7906,34,main.n2b.out[31] +7907,35,main.n2b.out[32] +7908,36,main.n2b.out[33] +7909,37,main.n2b.out[34] +7910,38,main.n2b.out[35] +7911,39,main.n2b.out[36] +7912,40,main.n2b.out[37] +7913,41,main.n2b.out[38] +7914,42,main.n2b.out[39] +7915,43,main.n2b.out[40] +7916,44,main.n2b.out[41] +7917,45,main.n2b.out[42] +7918,46,main.n2b.out[43] +7919,47,main.n2b.out[44] +7920,48,main.n2b.out[45] +7921,49,main.n2b.out[46] +7922,50,main.n2b.out[47] +7923,51,main.n2b.out[48] +7924,52,main.n2b.out[49] +7925,53,main.n2b.out[50] +7926,54,main.n2b.out[51] +7927,55,main.n2b.out[52] +7928,56,main.n2b.out[53] +7929,57,main.n2b.out[54] +7930,58,main.n2b.out[55] +7931,59,main.n2b.out[56] +7932,60,main.n2b.out[57] +7933,61,main.n2b.out[58] +7934,62,main.n2b.out[59] +7935,63,main.n2b.out[60] +7936,64,main.n2b.out[61] +7937,65,main.n2b.out[62] +7938,66,main.n2b.out[63] +7939,67,main.n2b.out[64] +7940,68,main.n2b.out[65] +7941,69,main.n2b.out[66] +7942,70,main.n2b.out[67] +7943,71,main.n2b.out[68] +7944,72,main.n2b.out[69] +7945,73,main.n2b.out[70] +7946,74,main.n2b.out[71] +7947,75,main.n2b.out[72] +7948,76,main.n2b.out[73] +7949,77,main.n2b.out[74] +7950,78,main.n2b.out[75] +7951,79,main.n2b.out[76] +7952,80,main.n2b.out[77] +7953,81,main.n2b.out[78] +7954,82,main.n2b.out[79] +7955,83,main.n2b.out[80] +7956,84,main.n2b.out[81] +7957,85,main.n2b.out[82] +7958,86,main.n2b.out[83] +7959,87,main.n2b.out[84] +7960,88,main.n2b.out[85] +7961,89,main.n2b.out[86] +7962,90,main.n2b.out[87] +7963,91,main.n2b.out[88] +7964,92,main.n2b.out[89] +7965,93,main.n2b.out[90] +7966,94,main.n2b.out[91] +7967,95,main.n2b.out[92] +7968,96,main.n2b.out[93] +7969,97,main.n2b.out[94] +7970,98,main.n2b.out[95] +7971,99,main.n2b.out[96] +7972,100,main.n2b.out[97] +7973,101,main.n2b.out[98] +7974,102,main.n2b.out[99] +7975,103,main.n2b.out[100] +7976,104,main.n2b.out[101] +7977,105,main.n2b.out[102] +7978,106,main.n2b.out[103] +7979,107,main.n2b.out[104] +7980,108,main.n2b.out[105] +7981,109,main.n2b.out[106] +7982,110,main.n2b.out[107] +7983,111,main.n2b.out[108] +7984,112,main.n2b.out[109] +7985,113,main.n2b.out[110] +7986,114,main.n2b.out[111] +7987,115,main.n2b.out[112] +7988,116,main.n2b.out[113] +7989,117,main.n2b.out[114] +7990,118,main.n2b.out[115] +7991,119,main.n2b.out[116] +7992,120,main.n2b.out[117] +7993,121,main.n2b.out[118] +7994,122,main.n2b.out[119] +7995,123,main.n2b.out[120] +7996,124,main.n2b.out[121] +7997,125,main.n2b.out[122] +7998,126,main.n2b.out[123] +7999,127,main.n2b.out[124] +8000,128,main.n2b.out[125] +8001,129,main.n2b.out[126] +8002,130,main.n2b.out[127] +8003,131,main.n2b.out[128] +8004,132,main.n2b.out[129] +8005,133,main.n2b.out[130] +8006,134,main.n2b.out[131] +8007,135,main.n2b.out[132] +8008,136,main.n2b.out[133] +8009,137,main.n2b.out[134] +8010,138,main.n2b.out[135] +8011,139,main.n2b.out[136] +8012,140,main.n2b.out[137] +8013,141,main.n2b.out[138] +8014,142,main.n2b.out[139] +8015,143,main.n2b.out[140] +8016,144,main.n2b.out[141] +8017,145,main.n2b.out[142] +8018,146,main.n2b.out[143] +8019,147,main.n2b.out[144] +8020,148,main.n2b.out[145] +8021,149,main.n2b.out[146] +8022,150,main.n2b.out[147] +8023,151,main.n2b.out[148] +8024,152,main.n2b.out[149] +8025,153,main.n2b.out[150] +8026,154,main.n2b.out[151] +8027,155,main.n2b.out[152] +8028,156,main.n2b.out[153] +8029,157,main.n2b.out[154] +8030,158,main.n2b.out[155] +8031,159,main.n2b.out[156] +8032,160,main.n2b.out[157] +8033,161,main.n2b.out[158] +8034,162,main.n2b.out[159] +8035,163,main.n2b.out[160] +8036,164,main.n2b.out[161] +8037,165,main.n2b.out[162] +8038,166,main.n2b.out[163] +8039,167,main.n2b.out[164] +8040,168,main.n2b.out[165] +8041,169,main.n2b.out[166] +8042,170,main.n2b.out[167] +8043,171,main.n2b.out[168] +8044,172,main.n2b.out[169] +8045,173,main.n2b.out[170] +8046,174,main.n2b.out[171] +8047,175,main.n2b.out[172] +8048,176,main.n2b.out[173] +8049,177,main.n2b.out[174] +8050,178,main.n2b.out[175] +8051,179,main.n2b.out[176] +8052,180,main.n2b.out[177] +8053,181,main.n2b.out[178] +8054,182,main.n2b.out[179] +8055,183,main.n2b.out[180] +8056,184,main.n2b.out[181] +8057,185,main.n2b.out[182] +8058,186,main.n2b.out[183] +8059,187,main.n2b.out[184] +8060,188,main.n2b.out[185] +8061,189,main.n2b.out[186] +8062,190,main.n2b.out[187] +8063,191,main.n2b.out[188] +8064,192,main.n2b.out[189] +8065,193,main.n2b.out[190] +8066,194,main.n2b.out[191] +8067,195,main.n2b.out[192] +8068,196,main.n2b.out[193] +8069,197,main.n2b.out[194] +8070,198,main.n2b.out[195] +8071,199,main.n2b.out[196] +8072,200,main.n2b.out[197] +8073,201,main.n2b.out[198] +8074,202,main.n2b.out[199] +8075,203,main.n2b.out[200] +8076,204,main.n2b.out[201] +8077,205,main.n2b.out[202] +8078,206,main.n2b.out[203] +8079,207,main.n2b.out[204] +8080,208,main.n2b.out[205] +8081,209,main.n2b.out[206] +8082,210,main.n2b.out[207] +8083,211,main.n2b.out[208] +8084,212,main.n2b.out[209] +8085,213,main.n2b.out[210] +8086,214,main.n2b.out[211] +8087,215,main.n2b.out[212] +8088,216,main.n2b.out[213] +8089,217,main.n2b.out[214] +8090,218,main.n2b.out[215] +8091,219,main.n2b.out[216] +8092,220,main.n2b.out[217] +8093,221,main.n2b.out[218] +8094,222,main.n2b.out[219] +8095,223,main.n2b.out[220] +8096,224,main.n2b.out[221] +8097,225,main.n2b.out[222] +8098,226,main.n2b.out[223] +8099,227,main.n2b.out[224] +8100,228,main.n2b.out[225] +8101,229,main.n2b.out[226] +8102,230,main.n2b.out[227] +8103,231,main.n2b.out[228] +8104,232,main.n2b.out[229] +8105,233,main.n2b.out[230] +8106,234,main.n2b.out[231] +8107,235,main.n2b.out[232] +8108,236,main.n2b.out[233] +8109,237,main.n2b.out[234] +8110,238,main.n2b.out[235] +8111,239,main.n2b.out[236] +8112,240,main.n2b.out[237] +8113,241,main.n2b.out[238] +8114,242,main.n2b.out[239] +8115,243,main.n2b.out[240] +8116,244,main.n2b.out[241] +8117,245,main.n2b.out[242] +8118,246,main.n2b.out[243] +8119,247,main.n2b.out[244] +8120,248,main.n2b.out[245] +8121,249,main.n2b.out[246] +8122,250,main.n2b.out[247] +8123,251,main.n2b.out[248] +8124,252,main.n2b.out[249] +8125,253,main.n2b.out[250] +8126,254,main.n2b.out[251] +8127,255,main.n2b.out[252] diff --git a/test/pedersen2.js b/test/pedersen2.js index 65252b6..9632374 100644 --- a/test/pedersen2.js +++ b/test/pedersen2.js @@ -1,11 +1,7 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); const pedersen = require("../src/pedersenHash.js"); @@ -15,60 +11,39 @@ describe("Pedersen test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pedersen2_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Pedersen2: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "pedersen2_test.circom")); }); it("Should pedersen at zero", async () => { - let w, xout, yout; + let w; - w = circuit.calculateWitness({ in: 0}); - - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + w = await circuit.calculateWitness({ in: 0}); const b = Buffer.alloc(32); const h = pedersen.hash(b); const hP = babyJub.unpackPoint(h); - /* - console.log(`[${xout.toString()}, ${yout.toString()}]`); - console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); - */ + await circuit.assertOut(w, {out: hP}); - assert(xout.equals(hP[0])); - assert(yout.equals(hP[1])); }); it("Should pedersen with 253 ones", async () => { - let w, xout, yout; + let w; - const n = bigInt.one.shl(253).sub(bigInt.one); - console.log(n.toString(16)); + const n = bigInt.one.shiftLeft(253).minus(bigInt.one); - w = circuit.calculateWitness({ in: n}); - - xout = w[circuit.getSignalIdx("main.out[0]")]; - yout = w[circuit.getSignalIdx("main.out[1]")]; + w = await circuit.calculateWitness({ in: n}); const b = Buffer.alloc(32); for (let i=0; i<31; i++) b[i] = 0xFF; b[31] = 0x1F; - const h = pedersen.hash(b); const hP = babyJub.unpackPoint(h); - /* - console.log(`[${xout.toString()}, ${yout.toString()}]`); - console.log(`[${hP[0].toString()}, ${hP[1].toString()}]`); - */ + await circuit.assertOut(w, {out: hP}); - assert(xout.equals(hP[0])); - assert(yout.equals(hP[1])); }); }); From e32460efe10294e167f5b499a8fbf33c1ccc53e0 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Sat, 14 Dec 2019 20:32:45 +0100 Subject: [PATCH 07/15] All tests working --- circuits/gates.circom | 5 +- circuits/mimcsponge.circom | 6 +- circuits/poseidon.circom | 17 +- circuits/smt/smtlevins.circom | 6 +- circuits/smt/smtprocessor.circom | 10 +- circuits/smt/smtverifier.circom | 8 +- src/mimcsponge.js | 42 +- src/smt.js | 4 +- src/smt_hashes_mimc.js | 2 +- src/smt_hashes_poseidon.js | 2 +- src/smt_memdb.js | 2 +- test/circuits/out.json | 5543 -- test/circuits/pedersen2_test.cpp | 14291 ----- test/circuits/pedersen2_test.sym | 8127 --- test/circuits/pedersen_test | Bin 2375156 -> 0 bytes test/circuits/pedersen_test.cpp | 51580 ---------------- .../pedersen_test.dSYM/Contents/Info.plist | 20 - .../Contents/Resources/DWARF/pedersen_test | Bin 2615866 -> 0 bytes test/circuits/pedersen_test.sym | 13108 ---- test/eddsamimc.js | 23 +- test/eddsaposeidon.js | 22 +- test/escalarmul.js | 161 +- test/escalarmulany.js | 37 +- test/escalarmulfix.js | 65 +- test/mimccircuit.js | 21 +- test/mimcspongecircuit.js | 41 +- test/montgomery.js | 70 +- test/multiplexer.js | 81 +- test/point2bits.js | 24 +- test/poseidoncircuit.js | 41 +- test/rawsmt3.circom | 23 - test/sign.js | 59 +- test/smtjs.js | 5 +- test/smtprocessor.js | 50 +- test/smtverifier.js | 28 +- test/smtverifier_adria.js | 98 - 36 files changed, 334 insertions(+), 93288 deletions(-) delete mode 100644 test/circuits/out.json delete mode 100644 test/circuits/pedersen2_test.cpp delete mode 100644 test/circuits/pedersen2_test.sym delete mode 100755 test/circuits/pedersen_test delete mode 100644 test/circuits/pedersen_test.cpp delete mode 100644 test/circuits/pedersen_test.dSYM/Contents/Info.plist delete mode 100644 test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test delete mode 100644 test/circuits/pedersen_test.sym delete mode 100644 test/rawsmt3.circom delete mode 100644 test/smtverifier_adria.js diff --git a/circuits/gates.circom b/circuits/gates.circom index 5ff7040..b01d334 100644 --- a/circuits/gates.circom +++ b/circuits/gates.circom @@ -67,6 +67,7 @@ template NOR() { template MultiAND(n) { signal input in[n]; signal output out; + var i; if (n==1) { out <== in[0]; } else if (n==2) { @@ -81,8 +82,8 @@ template MultiAND(n) { var n2 = n-n\2; ands[0] = MultiAND(n1); ands[1] = MultiAND(n2); - for (var i=0; i= (nRoundsP + nRoundsF/2))) { k= i0; i--) { + for (i=nLevels-2; i>0; i--) { levIns[i] <== (1-done[i])*(1-isZero[i-1].out) done[i-1] <== levIns[i] + done[i]; } diff --git a/circuits/smt/smtprocessor.circom b/circuits/smt/smtprocessor.circom index d4e6fb4..61f8bed 100644 --- a/circuits/smt/smtprocessor.circom +++ b/circuits/smt/smtprocessor.circom @@ -150,6 +150,8 @@ template SMTProcessor(nLevels) { signal enabled; + var i; + enabled <== fnc[0] + fnc[1] - fnc[0]*fnc[1] component hash1Old = SMTHash1(); @@ -167,18 +169,18 @@ template SMTProcessor(nLevels) { n2bNew.in <== newKey; component smtLevIns = SMTLevIns(nLevels); - for (var i=0; i { if (typeof seed === "undefined") seed = SEED; const c = Web3Utils.keccak256(seed+"_iv"); const cn = bigInt(Web3Utils.toBN(c).toString()); - const iv = cn.mod(F.q); + const iv = cn.mod(F.p); return iv; }; @@ -22,7 +22,7 @@ exports.getConstants = (seed, nRounds) => { for (let i=1; i{ const t = (i==0) ? F.add(xL, k) : F.add(F.add(xL, k), c); const xR_tmp = bigInt(xR); if (i < (NROUNDS - 1)) { - xR = xL; - xL = F.add(xR_tmp, F.exp(t, 5)); + xR = xL; + xL = F.add(xR_tmp, F.pow(t, 5)); } else { - xR = F.add(xR_tmp, F.exp(t, 5)); + xR = F.add(xR_tmp, F.pow(t, 5)); } } return { - xL: F.affine(xL), - xR: F.affine(xR), + xL: F.normalize(xL), + xR: F.normalize(xR), }; }; exports.multiHash = (arr, key, numOutputs) => { if (typeof(numOutputs) === "undefined") { - numOutputs = 1; + numOutputs = 1; } if (typeof(key) === "undefined") { key = F.zero; @@ -66,21 +66,21 @@ exports.multiHash = (arr, key, numOutputs) => { let C = F.zero; for (let i=0; i F.affine(x)); + return outputs.map(x => F.normalize(x)); } }; diff --git a/src/smt.js b/src/smt.js index 197516e..926adf3 100644 --- a/src/smt.js +++ b/src/smt.js @@ -1,4 +1,4 @@ -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const SMTMemDB = require("./smt_memdb"); const {hash0, hash1} = require("./smt_hashes_poseidon"); @@ -21,7 +21,7 @@ class SMT { } else { res.push(false); } - k = k.shr(1); + k = k.shiftRight(1); } while (res.length<256) res.push(false); diff --git a/src/smt_hashes_mimc.js b/src/smt_hashes_mimc.js index 99887db..0798338 100644 --- a/src/smt_hashes_mimc.js +++ b/src/smt_hashes_mimc.js @@ -1,5 +1,5 @@ const mimc7 = require("./mimc7"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); exports.hash0 = function (left, right) { return mimc7.multiHash(left, right); diff --git a/src/smt_hashes_poseidon.js b/src/smt_hashes_poseidon.js index 8ad8770..f4da325 100644 --- a/src/smt_hashes_poseidon.js +++ b/src/smt_hashes_poseidon.js @@ -1,5 +1,5 @@ const Poseidon = require("./poseidon"); -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); const hash = Poseidon.createHash(6, 8, 57); diff --git a/src/smt_memdb.js b/src/smt_memdb.js index c88f2c1..e4d9ce5 100644 --- a/src/smt_memdb.js +++ b/src/smt_memdb.js @@ -1,4 +1,4 @@ -const bigInt = require("snarkjs").bigInt; +const bigInt = require("big-integer"); class SMTMemDb { constructor() { diff --git a/test/circuits/out.json b/test/circuits/out.json deleted file mode 100644 index 3757e9a..0000000 --- a/test/circuits/out.json +++ /dev/null @@ -1,5543 +0,0 @@ -[ - "1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -,"0" -,"1" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"0" -,"1" -,"0" -] diff --git a/test/circuits/pedersen2_test.cpp b/test/circuits/pedersen2_test.cpp deleted file mode 100644 index 95b241d..0000000 --- a/test/circuits/pedersen2_test.cpp +++ /dev/null @@ -1,14291 +0,0 @@ -#include "circom.h" -#include "calcwit.h" -#define NSignals 8128 -#define NComponents 772 -#define NInputs 1 -#define NOutputs 2 -#define NVars 3382 -#define __P__ "21888242871839275222246405745257275088548364400416034343698204186575808495617" - - -// Sizes -Circom_Size sizes_0[2] = {1,0}; - -Circom_Size sizes_2[3] = {2,1,0}; - -Circom_Size sizes_1[3] = {1,1,0}; - -Circom_Size sizes_256[3] = {256,1,0}; - -Circom_Size sizes_49[3] = {49,1,0}; - -Circom_Size sizes_200[3] = {200,1,0}; - -Circom_Size sizes_50[3] = {50,1,0}; - -Circom_Size sizes_13[3] = {13,1,0}; - -Circom_Size sizes_56[3] = {56,1,0}; - -Circom_Size sizes_14[3] = {14,1,0}; - -Circom_Size sizes_4[3] = {4,1,0}; - -Circom_Size sizes_2_8[4] = {16,8,1,0}; - -Circom_Size sizes_3[3] = {3,1,0}; - -Circom_Size sizes_253[3] = {253,1,0}; - -// HashMaps -Circom_HashEntry _htMain[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe4799fa9af515d1dLL, 3} /* pedersen */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0x21d8e21925f9f8c1LL, 1} /* n2b */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */}; - -Circom_HashEntry _htPedersen[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x6ccbe39576114790LL, 0} /* adders */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 1} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x3ac964cacba9f1cfLL, 3} /* segments */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */}; - -Circom_HashEntry _htSegment[256] = {{0,0},{0x08b66c1917fb9801LL, 6} /* m2e */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x600e2845cc70f20aLL, 8} /* windows */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x9a7ce19baa54c278LL, 1} /* base */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x1f6460b565389782LL, 2} /* doublers1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x6ccbe39576114790LL, 0} /* adders */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc3d71c18f117a8a1LL, 4} /* e2m */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 5} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x1f645fb5653895cfLL, 3} /* doublers2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 7} /* out */}; - -Circom_HashEntry _htEdwards2Montgomery[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 1} /* out */}; - -Circom_HashEntry _htWindow4[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc9a57583d1e30c18LL, 3} /* adr6 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xdb8c52b452220f25LL, 11} /* out8 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc9a57883d1e31131LL, 2} /* adr5 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x9a7ce19baa54c278LL, 6} /* base */,{0,0},{0,0},{0,0},{0,0},{0x07e65919174a287dLL, 9} /* mux */,{0xc9a57783d1e30f7eLL, 1} /* adr4 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc9a57a83d1e31497LL, 0} /* adr3 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc9a57383d1e308b2LL, 5} /* adr8 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x7a918b6729ec5ebdLL, 7} /* dbl2 */,{0x08b73807b55c4bbeLL, 8} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xc9a57683d1e30dcbLL, 4} /* adr7 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 10} /* out */}; - -Circom_HashEntry _htMontgomeryDouble[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe29b1d535fbc8e4fLL, 3} /* x1_2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xea67a6ec62466682LL, 1} /* lamda */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08b73807b55c4bbeLL, 0} /* in */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 2} /* out */}; - -Circom_HashEntry _htMontgomeryAdd[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xea67a6ec62466682LL, 2} /* lamda */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x2b9fc1192bd45ee4LL, 1} /* in2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x2b9fc4192bd463fdLL, 0} /* in1 */,{0,0},{0x19f79b1921bbcfffLL, 3} /* out */}; - -Circom_HashEntry _htMultiMux3[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe6796d1904b46615LL, 3} /* a10 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63ee4c86020b22LL, 10} /* s */,{0,0},{0,0},{0,0},{0,0},{0x089c1307b5454527LL, 2} /* a1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xe67cf41904b78151LL, 6} /* a21 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x089c1207b5454374LL, 1} /* a0 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63dc4c8601ec8cLL, 0} /* a */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x818ad3195c4bf09bLL, 11} /* s10 */,{0,0},{0,0},{0xe67cf31904b77f9eLL, 5} /* a20 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x5dd4278303d0d7d3LL, 7} /* a210 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x089c1407b54546daLL, 4} /* a2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xaf63de4c8601eff2LL, 8} /* c */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x19f79b1921bbcfffLL, 9} /* out */}; - -Circom_HashEntry _htBabyAdd[256] = {{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08f10607b58d6f0fLL, 5} /* x2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08ed8407b58a5c52LL, 8} /* y2 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x229176bd1f6ba96aLL, 2} /* gamma */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x9479dd5455b31c79LL, 6} /* xout */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x56d7bd194448c389LL, 3} /* tau */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x08ed8307b58a5a9fLL, 7} /* y1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x7627619b954620a7LL, 0} /* beta */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0x52076675ec13a0c1LL, 1} /* delta */,{0x08f10707b58d70c2LL, 4} /* x1 */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0xd3470749a88bd6f8LL, 9} /* yout */,{0,0},{0,0},{0,0},{0,0},{0,0},{0,0},{0,0}}; - - -// Component Entries -Circom_ComponentEntry _entryTableMain[4] = { - {1,sizes_0, _typeSignal} - ,{771,sizes_0, _typeComponent} - ,{2,sizes_2, _typeSignal} - ,{1,sizes_0, _typeComponent} -}; - -Circom_ComponentEntry _entryTablePedersen[4] = { - {770,sizes_1, _typeComponent} - ,{4,sizes_256, _typeSignal} - ,{260,sizes_2, _typeSignal} - ,{2,sizes_2, _typeComponent} -}; - -Circom_ComponentEntry _entryTableSegment[9] = { - {153,sizes_49, _typeComponent} - ,{462,sizes_2, _typeSignal} - ,{55,sizes_49, _typeComponent} - ,{104,sizes_49, _typeComponent} - ,{4,sizes_0, _typeComponent} - ,{262,sizes_200, _typeSignal} - ,{602,sizes_0, _typeComponent} - ,{464,sizes_2, _typeSignal} - ,{5,sizes_50, _typeComponent} -}; - -Circom_ComponentEntry _entryTableSegment_1[9] = { - {644,sizes_13, _typeComponent} - ,{6261,sizes_2, _typeSignal} - ,{618,sizes_13, _typeComponent} - ,{631,sizes_13, _typeComponent} - ,{603,sizes_0, _typeComponent} - ,{6205,sizes_56, _typeSignal} - ,{769,sizes_0, _typeComponent} - ,{6263,sizes_2, _typeSignal} - ,{604,sizes_14, _typeComponent} -}; - -Circom_ComponentEntry _entryTableEdwards2Montgomery[2] = { - {466,sizes_2, _typeSignal} - ,{468,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4[12] = { - {204,sizes_0, _typeComponent} - ,{205,sizes_0, _typeComponent} - ,{206,sizes_0, _typeComponent} - ,{207,sizes_0, _typeComponent} - ,{208,sizes_0, _typeComponent} - ,{209,sizes_0, _typeComponent} - ,{474,sizes_2, _typeSignal} - ,{203,sizes_0, _typeComponent} - ,{470,sizes_4, _typeSignal} - ,{202,sizes_0, _typeComponent} - ,{476,sizes_2, _typeSignal} - ,{478,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_1[12] = { - {212,sizes_0, _typeComponent} - ,{213,sizes_0, _typeComponent} - ,{214,sizes_0, _typeComponent} - ,{215,sizes_0, _typeComponent} - ,{216,sizes_0, _typeComponent} - ,{217,sizes_0, _typeComponent} - ,{570,sizes_2, _typeSignal} - ,{211,sizes_0, _typeComponent} - ,{566,sizes_4, _typeSignal} - ,{210,sizes_0, _typeComponent} - ,{572,sizes_2, _typeSignal} - ,{574,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_2[12] = { - {220,sizes_0, _typeComponent} - ,{221,sizes_0, _typeComponent} - ,{222,sizes_0, _typeComponent} - ,{223,sizes_0, _typeComponent} - ,{224,sizes_0, _typeComponent} - ,{225,sizes_0, _typeComponent} - ,{685,sizes_2, _typeSignal} - ,{219,sizes_0, _typeComponent} - ,{681,sizes_4, _typeSignal} - ,{218,sizes_0, _typeComponent} - ,{687,sizes_2, _typeSignal} - ,{689,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_3[12] = { - {228,sizes_0, _typeComponent} - ,{229,sizes_0, _typeComponent} - ,{230,sizes_0, _typeComponent} - ,{231,sizes_0, _typeComponent} - ,{232,sizes_0, _typeComponent} - ,{233,sizes_0, _typeComponent} - ,{800,sizes_2, _typeSignal} - ,{227,sizes_0, _typeComponent} - ,{796,sizes_4, _typeSignal} - ,{226,sizes_0, _typeComponent} - ,{802,sizes_2, _typeSignal} - ,{804,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_4[12] = { - {236,sizes_0, _typeComponent} - ,{237,sizes_0, _typeComponent} - ,{238,sizes_0, _typeComponent} - ,{239,sizes_0, _typeComponent} - ,{240,sizes_0, _typeComponent} - ,{241,sizes_0, _typeComponent} - ,{915,sizes_2, _typeSignal} - ,{235,sizes_0, _typeComponent} - ,{911,sizes_4, _typeSignal} - ,{234,sizes_0, _typeComponent} - ,{917,sizes_2, _typeSignal} - ,{919,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_5[12] = { - {244,sizes_0, _typeComponent} - ,{245,sizes_0, _typeComponent} - ,{246,sizes_0, _typeComponent} - ,{247,sizes_0, _typeComponent} - ,{248,sizes_0, _typeComponent} - ,{249,sizes_0, _typeComponent} - ,{1030,sizes_2, _typeSignal} - ,{243,sizes_0, _typeComponent} - ,{1026,sizes_4, _typeSignal} - ,{242,sizes_0, _typeComponent} - ,{1032,sizes_2, _typeSignal} - ,{1034,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_6[12] = { - {252,sizes_0, _typeComponent} - ,{253,sizes_0, _typeComponent} - ,{254,sizes_0, _typeComponent} - ,{255,sizes_0, _typeComponent} - ,{256,sizes_0, _typeComponent} - ,{257,sizes_0, _typeComponent} - ,{1145,sizes_2, _typeSignal} - ,{251,sizes_0, _typeComponent} - ,{1141,sizes_4, _typeSignal} - ,{250,sizes_0, _typeComponent} - ,{1147,sizes_2, _typeSignal} - ,{1149,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_7[12] = { - {260,sizes_0, _typeComponent} - ,{261,sizes_0, _typeComponent} - ,{262,sizes_0, _typeComponent} - ,{263,sizes_0, _typeComponent} - ,{264,sizes_0, _typeComponent} - ,{265,sizes_0, _typeComponent} - ,{1260,sizes_2, _typeSignal} - ,{259,sizes_0, _typeComponent} - ,{1256,sizes_4, _typeSignal} - ,{258,sizes_0, _typeComponent} - ,{1262,sizes_2, _typeSignal} - ,{1264,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_8[12] = { - {268,sizes_0, _typeComponent} - ,{269,sizes_0, _typeComponent} - ,{270,sizes_0, _typeComponent} - ,{271,sizes_0, _typeComponent} - ,{272,sizes_0, _typeComponent} - ,{273,sizes_0, _typeComponent} - ,{1375,sizes_2, _typeSignal} - ,{267,sizes_0, _typeComponent} - ,{1371,sizes_4, _typeSignal} - ,{266,sizes_0, _typeComponent} - ,{1377,sizes_2, _typeSignal} - ,{1379,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_9[12] = { - {276,sizes_0, _typeComponent} - ,{277,sizes_0, _typeComponent} - ,{278,sizes_0, _typeComponent} - ,{279,sizes_0, _typeComponent} - ,{280,sizes_0, _typeComponent} - ,{281,sizes_0, _typeComponent} - ,{1490,sizes_2, _typeSignal} - ,{275,sizes_0, _typeComponent} - ,{1486,sizes_4, _typeSignal} - ,{274,sizes_0, _typeComponent} - ,{1492,sizes_2, _typeSignal} - ,{1494,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_10[12] = { - {284,sizes_0, _typeComponent} - ,{285,sizes_0, _typeComponent} - ,{286,sizes_0, _typeComponent} - ,{287,sizes_0, _typeComponent} - ,{288,sizes_0, _typeComponent} - ,{289,sizes_0, _typeComponent} - ,{1605,sizes_2, _typeSignal} - ,{283,sizes_0, _typeComponent} - ,{1601,sizes_4, _typeSignal} - ,{282,sizes_0, _typeComponent} - ,{1607,sizes_2, _typeSignal} - ,{1609,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_11[12] = { - {292,sizes_0, _typeComponent} - ,{293,sizes_0, _typeComponent} - ,{294,sizes_0, _typeComponent} - ,{295,sizes_0, _typeComponent} - ,{296,sizes_0, _typeComponent} - ,{297,sizes_0, _typeComponent} - ,{1720,sizes_2, _typeSignal} - ,{291,sizes_0, _typeComponent} - ,{1716,sizes_4, _typeSignal} - ,{290,sizes_0, _typeComponent} - ,{1722,sizes_2, _typeSignal} - ,{1724,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_12[12] = { - {300,sizes_0, _typeComponent} - ,{301,sizes_0, _typeComponent} - ,{302,sizes_0, _typeComponent} - ,{303,sizes_0, _typeComponent} - ,{304,sizes_0, _typeComponent} - ,{305,sizes_0, _typeComponent} - ,{1835,sizes_2, _typeSignal} - ,{299,sizes_0, _typeComponent} - ,{1831,sizes_4, _typeSignal} - ,{298,sizes_0, _typeComponent} - ,{1837,sizes_2, _typeSignal} - ,{1839,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_13[12] = { - {308,sizes_0, _typeComponent} - ,{309,sizes_0, _typeComponent} - ,{310,sizes_0, _typeComponent} - ,{311,sizes_0, _typeComponent} - ,{312,sizes_0, _typeComponent} - ,{313,sizes_0, _typeComponent} - ,{1950,sizes_2, _typeSignal} - ,{307,sizes_0, _typeComponent} - ,{1946,sizes_4, _typeSignal} - ,{306,sizes_0, _typeComponent} - ,{1952,sizes_2, _typeSignal} - ,{1954,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_14[12] = { - {316,sizes_0, _typeComponent} - ,{317,sizes_0, _typeComponent} - ,{318,sizes_0, _typeComponent} - ,{319,sizes_0, _typeComponent} - ,{320,sizes_0, _typeComponent} - ,{321,sizes_0, _typeComponent} - ,{2065,sizes_2, _typeSignal} - ,{315,sizes_0, _typeComponent} - ,{2061,sizes_4, _typeSignal} - ,{314,sizes_0, _typeComponent} - ,{2067,sizes_2, _typeSignal} - ,{2069,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_15[12] = { - {324,sizes_0, _typeComponent} - ,{325,sizes_0, _typeComponent} - ,{326,sizes_0, _typeComponent} - ,{327,sizes_0, _typeComponent} - ,{328,sizes_0, _typeComponent} - ,{329,sizes_0, _typeComponent} - ,{2180,sizes_2, _typeSignal} - ,{323,sizes_0, _typeComponent} - ,{2176,sizes_4, _typeSignal} - ,{322,sizes_0, _typeComponent} - ,{2182,sizes_2, _typeSignal} - ,{2184,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_16[12] = { - {332,sizes_0, _typeComponent} - ,{333,sizes_0, _typeComponent} - ,{334,sizes_0, _typeComponent} - ,{335,sizes_0, _typeComponent} - ,{336,sizes_0, _typeComponent} - ,{337,sizes_0, _typeComponent} - ,{2295,sizes_2, _typeSignal} - ,{331,sizes_0, _typeComponent} - ,{2291,sizes_4, _typeSignal} - ,{330,sizes_0, _typeComponent} - ,{2297,sizes_2, _typeSignal} - ,{2299,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_17[12] = { - {340,sizes_0, _typeComponent} - ,{341,sizes_0, _typeComponent} - ,{342,sizes_0, _typeComponent} - ,{343,sizes_0, _typeComponent} - ,{344,sizes_0, _typeComponent} - ,{345,sizes_0, _typeComponent} - ,{2410,sizes_2, _typeSignal} - ,{339,sizes_0, _typeComponent} - ,{2406,sizes_4, _typeSignal} - ,{338,sizes_0, _typeComponent} - ,{2412,sizes_2, _typeSignal} - ,{2414,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_18[12] = { - {348,sizes_0, _typeComponent} - ,{349,sizes_0, _typeComponent} - ,{350,sizes_0, _typeComponent} - ,{351,sizes_0, _typeComponent} - ,{352,sizes_0, _typeComponent} - ,{353,sizes_0, _typeComponent} - ,{2525,sizes_2, _typeSignal} - ,{347,sizes_0, _typeComponent} - ,{2521,sizes_4, _typeSignal} - ,{346,sizes_0, _typeComponent} - ,{2527,sizes_2, _typeSignal} - ,{2529,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_19[12] = { - {356,sizes_0, _typeComponent} - ,{357,sizes_0, _typeComponent} - ,{358,sizes_0, _typeComponent} - ,{359,sizes_0, _typeComponent} - ,{360,sizes_0, _typeComponent} - ,{361,sizes_0, _typeComponent} - ,{2640,sizes_2, _typeSignal} - ,{355,sizes_0, _typeComponent} - ,{2636,sizes_4, _typeSignal} - ,{354,sizes_0, _typeComponent} - ,{2642,sizes_2, _typeSignal} - ,{2644,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_20[12] = { - {364,sizes_0, _typeComponent} - ,{365,sizes_0, _typeComponent} - ,{366,sizes_0, _typeComponent} - ,{367,sizes_0, _typeComponent} - ,{368,sizes_0, _typeComponent} - ,{369,sizes_0, _typeComponent} - ,{2755,sizes_2, _typeSignal} - ,{363,sizes_0, _typeComponent} - ,{2751,sizes_4, _typeSignal} - ,{362,sizes_0, _typeComponent} - ,{2757,sizes_2, _typeSignal} - ,{2759,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_21[12] = { - {372,sizes_0, _typeComponent} - ,{373,sizes_0, _typeComponent} - ,{374,sizes_0, _typeComponent} - ,{375,sizes_0, _typeComponent} - ,{376,sizes_0, _typeComponent} - ,{377,sizes_0, _typeComponent} - ,{2870,sizes_2, _typeSignal} - ,{371,sizes_0, _typeComponent} - ,{2866,sizes_4, _typeSignal} - ,{370,sizes_0, _typeComponent} - ,{2872,sizes_2, _typeSignal} - ,{2874,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_22[12] = { - {380,sizes_0, _typeComponent} - ,{381,sizes_0, _typeComponent} - ,{382,sizes_0, _typeComponent} - ,{383,sizes_0, _typeComponent} - ,{384,sizes_0, _typeComponent} - ,{385,sizes_0, _typeComponent} - ,{2985,sizes_2, _typeSignal} - ,{379,sizes_0, _typeComponent} - ,{2981,sizes_4, _typeSignal} - ,{378,sizes_0, _typeComponent} - ,{2987,sizes_2, _typeSignal} - ,{2989,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_23[12] = { - {388,sizes_0, _typeComponent} - ,{389,sizes_0, _typeComponent} - ,{390,sizes_0, _typeComponent} - ,{391,sizes_0, _typeComponent} - ,{392,sizes_0, _typeComponent} - ,{393,sizes_0, _typeComponent} - ,{3100,sizes_2, _typeSignal} - ,{387,sizes_0, _typeComponent} - ,{3096,sizes_4, _typeSignal} - ,{386,sizes_0, _typeComponent} - ,{3102,sizes_2, _typeSignal} - ,{3104,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_24[12] = { - {396,sizes_0, _typeComponent} - ,{397,sizes_0, _typeComponent} - ,{398,sizes_0, _typeComponent} - ,{399,sizes_0, _typeComponent} - ,{400,sizes_0, _typeComponent} - ,{401,sizes_0, _typeComponent} - ,{3215,sizes_2, _typeSignal} - ,{395,sizes_0, _typeComponent} - ,{3211,sizes_4, _typeSignal} - ,{394,sizes_0, _typeComponent} - ,{3217,sizes_2, _typeSignal} - ,{3219,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_25[12] = { - {404,sizes_0, _typeComponent} - ,{405,sizes_0, _typeComponent} - ,{406,sizes_0, _typeComponent} - ,{407,sizes_0, _typeComponent} - ,{408,sizes_0, _typeComponent} - ,{409,sizes_0, _typeComponent} - ,{3330,sizes_2, _typeSignal} - ,{403,sizes_0, _typeComponent} - ,{3326,sizes_4, _typeSignal} - ,{402,sizes_0, _typeComponent} - ,{3332,sizes_2, _typeSignal} - ,{3334,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_26[12] = { - {412,sizes_0, _typeComponent} - ,{413,sizes_0, _typeComponent} - ,{414,sizes_0, _typeComponent} - ,{415,sizes_0, _typeComponent} - ,{416,sizes_0, _typeComponent} - ,{417,sizes_0, _typeComponent} - ,{3445,sizes_2, _typeSignal} - ,{411,sizes_0, _typeComponent} - ,{3441,sizes_4, _typeSignal} - ,{410,sizes_0, _typeComponent} - ,{3447,sizes_2, _typeSignal} - ,{3449,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_27[12] = { - {420,sizes_0, _typeComponent} - ,{421,sizes_0, _typeComponent} - ,{422,sizes_0, _typeComponent} - ,{423,sizes_0, _typeComponent} - ,{424,sizes_0, _typeComponent} - ,{425,sizes_0, _typeComponent} - ,{3560,sizes_2, _typeSignal} - ,{419,sizes_0, _typeComponent} - ,{3556,sizes_4, _typeSignal} - ,{418,sizes_0, _typeComponent} - ,{3562,sizes_2, _typeSignal} - ,{3564,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_28[12] = { - {428,sizes_0, _typeComponent} - ,{429,sizes_0, _typeComponent} - ,{430,sizes_0, _typeComponent} - ,{431,sizes_0, _typeComponent} - ,{432,sizes_0, _typeComponent} - ,{433,sizes_0, _typeComponent} - ,{3675,sizes_2, _typeSignal} - ,{427,sizes_0, _typeComponent} - ,{3671,sizes_4, _typeSignal} - ,{426,sizes_0, _typeComponent} - ,{3677,sizes_2, _typeSignal} - ,{3679,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_29[12] = { - {436,sizes_0, _typeComponent} - ,{437,sizes_0, _typeComponent} - ,{438,sizes_0, _typeComponent} - ,{439,sizes_0, _typeComponent} - ,{440,sizes_0, _typeComponent} - ,{441,sizes_0, _typeComponent} - ,{3790,sizes_2, _typeSignal} - ,{435,sizes_0, _typeComponent} - ,{3786,sizes_4, _typeSignal} - ,{434,sizes_0, _typeComponent} - ,{3792,sizes_2, _typeSignal} - ,{3794,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_30[12] = { - {444,sizes_0, _typeComponent} - ,{445,sizes_0, _typeComponent} - ,{446,sizes_0, _typeComponent} - ,{447,sizes_0, _typeComponent} - ,{448,sizes_0, _typeComponent} - ,{449,sizes_0, _typeComponent} - ,{3905,sizes_2, _typeSignal} - ,{443,sizes_0, _typeComponent} - ,{3901,sizes_4, _typeSignal} - ,{442,sizes_0, _typeComponent} - ,{3907,sizes_2, _typeSignal} - ,{3909,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_31[12] = { - {452,sizes_0, _typeComponent} - ,{453,sizes_0, _typeComponent} - ,{454,sizes_0, _typeComponent} - ,{455,sizes_0, _typeComponent} - ,{456,sizes_0, _typeComponent} - ,{457,sizes_0, _typeComponent} - ,{4020,sizes_2, _typeSignal} - ,{451,sizes_0, _typeComponent} - ,{4016,sizes_4, _typeSignal} - ,{450,sizes_0, _typeComponent} - ,{4022,sizes_2, _typeSignal} - ,{4024,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_32[12] = { - {460,sizes_0, _typeComponent} - ,{461,sizes_0, _typeComponent} - ,{462,sizes_0, _typeComponent} - ,{463,sizes_0, _typeComponent} - ,{464,sizes_0, _typeComponent} - ,{465,sizes_0, _typeComponent} - ,{4135,sizes_2, _typeSignal} - ,{459,sizes_0, _typeComponent} - ,{4131,sizes_4, _typeSignal} - ,{458,sizes_0, _typeComponent} - ,{4137,sizes_2, _typeSignal} - ,{4139,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_33[12] = { - {468,sizes_0, _typeComponent} - ,{469,sizes_0, _typeComponent} - ,{470,sizes_0, _typeComponent} - ,{471,sizes_0, _typeComponent} - ,{472,sizes_0, _typeComponent} - ,{473,sizes_0, _typeComponent} - ,{4250,sizes_2, _typeSignal} - ,{467,sizes_0, _typeComponent} - ,{4246,sizes_4, _typeSignal} - ,{466,sizes_0, _typeComponent} - ,{4252,sizes_2, _typeSignal} - ,{4254,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_34[12] = { - {476,sizes_0, _typeComponent} - ,{477,sizes_0, _typeComponent} - ,{478,sizes_0, _typeComponent} - ,{479,sizes_0, _typeComponent} - ,{480,sizes_0, _typeComponent} - ,{481,sizes_0, _typeComponent} - ,{4365,sizes_2, _typeSignal} - ,{475,sizes_0, _typeComponent} - ,{4361,sizes_4, _typeSignal} - ,{474,sizes_0, _typeComponent} - ,{4367,sizes_2, _typeSignal} - ,{4369,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_35[12] = { - {484,sizes_0, _typeComponent} - ,{485,sizes_0, _typeComponent} - ,{486,sizes_0, _typeComponent} - ,{487,sizes_0, _typeComponent} - ,{488,sizes_0, _typeComponent} - ,{489,sizes_0, _typeComponent} - ,{4480,sizes_2, _typeSignal} - ,{483,sizes_0, _typeComponent} - ,{4476,sizes_4, _typeSignal} - ,{482,sizes_0, _typeComponent} - ,{4482,sizes_2, _typeSignal} - ,{4484,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_36[12] = { - {492,sizes_0, _typeComponent} - ,{493,sizes_0, _typeComponent} - ,{494,sizes_0, _typeComponent} - ,{495,sizes_0, _typeComponent} - ,{496,sizes_0, _typeComponent} - ,{497,sizes_0, _typeComponent} - ,{4595,sizes_2, _typeSignal} - ,{491,sizes_0, _typeComponent} - ,{4591,sizes_4, _typeSignal} - ,{490,sizes_0, _typeComponent} - ,{4597,sizes_2, _typeSignal} - ,{4599,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_37[12] = { - {500,sizes_0, _typeComponent} - ,{501,sizes_0, _typeComponent} - ,{502,sizes_0, _typeComponent} - ,{503,sizes_0, _typeComponent} - ,{504,sizes_0, _typeComponent} - ,{505,sizes_0, _typeComponent} - ,{4710,sizes_2, _typeSignal} - ,{499,sizes_0, _typeComponent} - ,{4706,sizes_4, _typeSignal} - ,{498,sizes_0, _typeComponent} - ,{4712,sizes_2, _typeSignal} - ,{4714,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_38[12] = { - {508,sizes_0, _typeComponent} - ,{509,sizes_0, _typeComponent} - ,{510,sizes_0, _typeComponent} - ,{511,sizes_0, _typeComponent} - ,{512,sizes_0, _typeComponent} - ,{513,sizes_0, _typeComponent} - ,{4825,sizes_2, _typeSignal} - ,{507,sizes_0, _typeComponent} - ,{4821,sizes_4, _typeSignal} - ,{506,sizes_0, _typeComponent} - ,{4827,sizes_2, _typeSignal} - ,{4829,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_39[12] = { - {516,sizes_0, _typeComponent} - ,{517,sizes_0, _typeComponent} - ,{518,sizes_0, _typeComponent} - ,{519,sizes_0, _typeComponent} - ,{520,sizes_0, _typeComponent} - ,{521,sizes_0, _typeComponent} - ,{4940,sizes_2, _typeSignal} - ,{515,sizes_0, _typeComponent} - ,{4936,sizes_4, _typeSignal} - ,{514,sizes_0, _typeComponent} - ,{4942,sizes_2, _typeSignal} - ,{4944,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_40[12] = { - {524,sizes_0, _typeComponent} - ,{525,sizes_0, _typeComponent} - ,{526,sizes_0, _typeComponent} - ,{527,sizes_0, _typeComponent} - ,{528,sizes_0, _typeComponent} - ,{529,sizes_0, _typeComponent} - ,{5055,sizes_2, _typeSignal} - ,{523,sizes_0, _typeComponent} - ,{5051,sizes_4, _typeSignal} - ,{522,sizes_0, _typeComponent} - ,{5057,sizes_2, _typeSignal} - ,{5059,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_41[12] = { - {532,sizes_0, _typeComponent} - ,{533,sizes_0, _typeComponent} - ,{534,sizes_0, _typeComponent} - ,{535,sizes_0, _typeComponent} - ,{536,sizes_0, _typeComponent} - ,{537,sizes_0, _typeComponent} - ,{5170,sizes_2, _typeSignal} - ,{531,sizes_0, _typeComponent} - ,{5166,sizes_4, _typeSignal} - ,{530,sizes_0, _typeComponent} - ,{5172,sizes_2, _typeSignal} - ,{5174,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_42[12] = { - {540,sizes_0, _typeComponent} - ,{541,sizes_0, _typeComponent} - ,{542,sizes_0, _typeComponent} - ,{543,sizes_0, _typeComponent} - ,{544,sizes_0, _typeComponent} - ,{545,sizes_0, _typeComponent} - ,{5285,sizes_2, _typeSignal} - ,{539,sizes_0, _typeComponent} - ,{5281,sizes_4, _typeSignal} - ,{538,sizes_0, _typeComponent} - ,{5287,sizes_2, _typeSignal} - ,{5289,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_43[12] = { - {548,sizes_0, _typeComponent} - ,{549,sizes_0, _typeComponent} - ,{550,sizes_0, _typeComponent} - ,{551,sizes_0, _typeComponent} - ,{552,sizes_0, _typeComponent} - ,{553,sizes_0, _typeComponent} - ,{5400,sizes_2, _typeSignal} - ,{547,sizes_0, _typeComponent} - ,{5396,sizes_4, _typeSignal} - ,{546,sizes_0, _typeComponent} - ,{5402,sizes_2, _typeSignal} - ,{5404,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_44[12] = { - {556,sizes_0, _typeComponent} - ,{557,sizes_0, _typeComponent} - ,{558,sizes_0, _typeComponent} - ,{559,sizes_0, _typeComponent} - ,{560,sizes_0, _typeComponent} - ,{561,sizes_0, _typeComponent} - ,{5515,sizes_2, _typeSignal} - ,{555,sizes_0, _typeComponent} - ,{5511,sizes_4, _typeSignal} - ,{554,sizes_0, _typeComponent} - ,{5517,sizes_2, _typeSignal} - ,{5519,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_45[12] = { - {564,sizes_0, _typeComponent} - ,{565,sizes_0, _typeComponent} - ,{566,sizes_0, _typeComponent} - ,{567,sizes_0, _typeComponent} - ,{568,sizes_0, _typeComponent} - ,{569,sizes_0, _typeComponent} - ,{5630,sizes_2, _typeSignal} - ,{563,sizes_0, _typeComponent} - ,{5626,sizes_4, _typeSignal} - ,{562,sizes_0, _typeComponent} - ,{5632,sizes_2, _typeSignal} - ,{5634,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_46[12] = { - {572,sizes_0, _typeComponent} - ,{573,sizes_0, _typeComponent} - ,{574,sizes_0, _typeComponent} - ,{575,sizes_0, _typeComponent} - ,{576,sizes_0, _typeComponent} - ,{577,sizes_0, _typeComponent} - ,{5745,sizes_2, _typeSignal} - ,{571,sizes_0, _typeComponent} - ,{5741,sizes_4, _typeSignal} - ,{570,sizes_0, _typeComponent} - ,{5747,sizes_2, _typeSignal} - ,{5749,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_47[12] = { - {580,sizes_0, _typeComponent} - ,{581,sizes_0, _typeComponent} - ,{582,sizes_0, _typeComponent} - ,{583,sizes_0, _typeComponent} - ,{584,sizes_0, _typeComponent} - ,{585,sizes_0, _typeComponent} - ,{5860,sizes_2, _typeSignal} - ,{579,sizes_0, _typeComponent} - ,{5856,sizes_4, _typeSignal} - ,{578,sizes_0, _typeComponent} - ,{5862,sizes_2, _typeSignal} - ,{5864,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_48[12] = { - {588,sizes_0, _typeComponent} - ,{589,sizes_0, _typeComponent} - ,{590,sizes_0, _typeComponent} - ,{591,sizes_0, _typeComponent} - ,{592,sizes_0, _typeComponent} - ,{593,sizes_0, _typeComponent} - ,{5975,sizes_2, _typeSignal} - ,{587,sizes_0, _typeComponent} - ,{5971,sizes_4, _typeSignal} - ,{586,sizes_0, _typeComponent} - ,{5977,sizes_2, _typeSignal} - ,{5979,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_49[12] = { - {596,sizes_0, _typeComponent} - ,{597,sizes_0, _typeComponent} - ,{598,sizes_0, _typeComponent} - ,{599,sizes_0, _typeComponent} - ,{600,sizes_0, _typeComponent} - ,{601,sizes_0, _typeComponent} - ,{6090,sizes_2, _typeSignal} - ,{595,sizes_0, _typeComponent} - ,{6086,sizes_4, _typeSignal} - ,{594,sizes_0, _typeComponent} - ,{6092,sizes_2, _typeSignal} - ,{6094,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble[4] = { - {662,sizes_2, _typeSignal} - ,{666,sizes_0, _typeSignal} - ,{664,sizes_2, _typeSignal} - ,{667,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_1[4] = { - {777,sizes_2, _typeSignal} - ,{781,sizes_0, _typeSignal} - ,{779,sizes_2, _typeSignal} - ,{782,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_2[4] = { - {892,sizes_2, _typeSignal} - ,{896,sizes_0, _typeSignal} - ,{894,sizes_2, _typeSignal} - ,{897,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_3[4] = { - {1007,sizes_2, _typeSignal} - ,{1011,sizes_0, _typeSignal} - ,{1009,sizes_2, _typeSignal} - ,{1012,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_4[4] = { - {1122,sizes_2, _typeSignal} - ,{1126,sizes_0, _typeSignal} - ,{1124,sizes_2, _typeSignal} - ,{1127,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_5[4] = { - {1237,sizes_2, _typeSignal} - ,{1241,sizes_0, _typeSignal} - ,{1239,sizes_2, _typeSignal} - ,{1242,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_6[4] = { - {1352,sizes_2, _typeSignal} - ,{1356,sizes_0, _typeSignal} - ,{1354,sizes_2, _typeSignal} - ,{1357,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_7[4] = { - {1467,sizes_2, _typeSignal} - ,{1471,sizes_0, _typeSignal} - ,{1469,sizes_2, _typeSignal} - ,{1472,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_8[4] = { - {1582,sizes_2, _typeSignal} - ,{1586,sizes_0, _typeSignal} - ,{1584,sizes_2, _typeSignal} - ,{1587,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_9[4] = { - {1697,sizes_2, _typeSignal} - ,{1701,sizes_0, _typeSignal} - ,{1699,sizes_2, _typeSignal} - ,{1702,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_10[4] = { - {1812,sizes_2, _typeSignal} - ,{1816,sizes_0, _typeSignal} - ,{1814,sizes_2, _typeSignal} - ,{1817,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_11[4] = { - {1927,sizes_2, _typeSignal} - ,{1931,sizes_0, _typeSignal} - ,{1929,sizes_2, _typeSignal} - ,{1932,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_12[4] = { - {2042,sizes_2, _typeSignal} - ,{2046,sizes_0, _typeSignal} - ,{2044,sizes_2, _typeSignal} - ,{2047,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_13[4] = { - {2157,sizes_2, _typeSignal} - ,{2161,sizes_0, _typeSignal} - ,{2159,sizes_2, _typeSignal} - ,{2162,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_14[4] = { - {2272,sizes_2, _typeSignal} - ,{2276,sizes_0, _typeSignal} - ,{2274,sizes_2, _typeSignal} - ,{2277,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_15[4] = { - {2387,sizes_2, _typeSignal} - ,{2391,sizes_0, _typeSignal} - ,{2389,sizes_2, _typeSignal} - ,{2392,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_16[4] = { - {2502,sizes_2, _typeSignal} - ,{2506,sizes_0, _typeSignal} - ,{2504,sizes_2, _typeSignal} - ,{2507,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_17[4] = { - {2617,sizes_2, _typeSignal} - ,{2621,sizes_0, _typeSignal} - ,{2619,sizes_2, _typeSignal} - ,{2622,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_18[4] = { - {2732,sizes_2, _typeSignal} - ,{2736,sizes_0, _typeSignal} - ,{2734,sizes_2, _typeSignal} - ,{2737,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_19[4] = { - {2847,sizes_2, _typeSignal} - ,{2851,sizes_0, _typeSignal} - ,{2849,sizes_2, _typeSignal} - ,{2852,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_20[4] = { - {2962,sizes_2, _typeSignal} - ,{2966,sizes_0, _typeSignal} - ,{2964,sizes_2, _typeSignal} - ,{2967,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_21[4] = { - {3077,sizes_2, _typeSignal} - ,{3081,sizes_0, _typeSignal} - ,{3079,sizes_2, _typeSignal} - ,{3082,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_22[4] = { - {3192,sizes_2, _typeSignal} - ,{3196,sizes_0, _typeSignal} - ,{3194,sizes_2, _typeSignal} - ,{3197,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_23[4] = { - {3307,sizes_2, _typeSignal} - ,{3311,sizes_0, _typeSignal} - ,{3309,sizes_2, _typeSignal} - ,{3312,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_24[4] = { - {3422,sizes_2, _typeSignal} - ,{3426,sizes_0, _typeSignal} - ,{3424,sizes_2, _typeSignal} - ,{3427,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_25[4] = { - {3537,sizes_2, _typeSignal} - ,{3541,sizes_0, _typeSignal} - ,{3539,sizes_2, _typeSignal} - ,{3542,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_26[4] = { - {3652,sizes_2, _typeSignal} - ,{3656,sizes_0, _typeSignal} - ,{3654,sizes_2, _typeSignal} - ,{3657,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_27[4] = { - {3767,sizes_2, _typeSignal} - ,{3771,sizes_0, _typeSignal} - ,{3769,sizes_2, _typeSignal} - ,{3772,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_28[4] = { - {3882,sizes_2, _typeSignal} - ,{3886,sizes_0, _typeSignal} - ,{3884,sizes_2, _typeSignal} - ,{3887,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_29[4] = { - {3997,sizes_2, _typeSignal} - ,{4001,sizes_0, _typeSignal} - ,{3999,sizes_2, _typeSignal} - ,{4002,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_30[4] = { - {4112,sizes_2, _typeSignal} - ,{4116,sizes_0, _typeSignal} - ,{4114,sizes_2, _typeSignal} - ,{4117,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_31[4] = { - {4227,sizes_2, _typeSignal} - ,{4231,sizes_0, _typeSignal} - ,{4229,sizes_2, _typeSignal} - ,{4232,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_32[4] = { - {4342,sizes_2, _typeSignal} - ,{4346,sizes_0, _typeSignal} - ,{4344,sizes_2, _typeSignal} - ,{4347,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_33[4] = { - {4457,sizes_2, _typeSignal} - ,{4461,sizes_0, _typeSignal} - ,{4459,sizes_2, _typeSignal} - ,{4462,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_34[4] = { - {4572,sizes_2, _typeSignal} - ,{4576,sizes_0, _typeSignal} - ,{4574,sizes_2, _typeSignal} - ,{4577,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_35[4] = { - {4687,sizes_2, _typeSignal} - ,{4691,sizes_0, _typeSignal} - ,{4689,sizes_2, _typeSignal} - ,{4692,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_36[4] = { - {4802,sizes_2, _typeSignal} - ,{4806,sizes_0, _typeSignal} - ,{4804,sizes_2, _typeSignal} - ,{4807,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_37[4] = { - {4917,sizes_2, _typeSignal} - ,{4921,sizes_0, _typeSignal} - ,{4919,sizes_2, _typeSignal} - ,{4922,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_38[4] = { - {5032,sizes_2, _typeSignal} - ,{5036,sizes_0, _typeSignal} - ,{5034,sizes_2, _typeSignal} - ,{5037,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_39[4] = { - {5147,sizes_2, _typeSignal} - ,{5151,sizes_0, _typeSignal} - ,{5149,sizes_2, _typeSignal} - ,{5152,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_40[4] = { - {5262,sizes_2, _typeSignal} - ,{5266,sizes_0, _typeSignal} - ,{5264,sizes_2, _typeSignal} - ,{5267,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_41[4] = { - {5377,sizes_2, _typeSignal} - ,{5381,sizes_0, _typeSignal} - ,{5379,sizes_2, _typeSignal} - ,{5382,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_42[4] = { - {5492,sizes_2, _typeSignal} - ,{5496,sizes_0, _typeSignal} - ,{5494,sizes_2, _typeSignal} - ,{5497,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_43[4] = { - {5607,sizes_2, _typeSignal} - ,{5611,sizes_0, _typeSignal} - ,{5609,sizes_2, _typeSignal} - ,{5612,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_44[4] = { - {5722,sizes_2, _typeSignal} - ,{5726,sizes_0, _typeSignal} - ,{5724,sizes_2, _typeSignal} - ,{5727,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_45[4] = { - {5837,sizes_2, _typeSignal} - ,{5841,sizes_0, _typeSignal} - ,{5839,sizes_2, _typeSignal} - ,{5842,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_46[4] = { - {5952,sizes_2, _typeSignal} - ,{5956,sizes_0, _typeSignal} - ,{5954,sizes_2, _typeSignal} - ,{5957,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_47[4] = { - {6067,sizes_2, _typeSignal} - ,{6071,sizes_0, _typeSignal} - ,{6069,sizes_2, _typeSignal} - ,{6072,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_48[4] = { - {6182,sizes_2, _typeSignal} - ,{6186,sizes_0, _typeSignal} - ,{6184,sizes_2, _typeSignal} - ,{6187,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_49[4] = { - {668,sizes_2, _typeSignal} - ,{672,sizes_0, _typeSignal} - ,{670,sizes_2, _typeSignal} - ,{673,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_50[4] = { - {783,sizes_2, _typeSignal} - ,{787,sizes_0, _typeSignal} - ,{785,sizes_2, _typeSignal} - ,{788,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_51[4] = { - {898,sizes_2, _typeSignal} - ,{902,sizes_0, _typeSignal} - ,{900,sizes_2, _typeSignal} - ,{903,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_52[4] = { - {1013,sizes_2, _typeSignal} - ,{1017,sizes_0, _typeSignal} - ,{1015,sizes_2, _typeSignal} - ,{1018,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_53[4] = { - {1128,sizes_2, _typeSignal} - ,{1132,sizes_0, _typeSignal} - ,{1130,sizes_2, _typeSignal} - ,{1133,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_54[4] = { - {1243,sizes_2, _typeSignal} - ,{1247,sizes_0, _typeSignal} - ,{1245,sizes_2, _typeSignal} - ,{1248,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_55[4] = { - {1358,sizes_2, _typeSignal} - ,{1362,sizes_0, _typeSignal} - ,{1360,sizes_2, _typeSignal} - ,{1363,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_56[4] = { - {1473,sizes_2, _typeSignal} - ,{1477,sizes_0, _typeSignal} - ,{1475,sizes_2, _typeSignal} - ,{1478,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_57[4] = { - {1588,sizes_2, _typeSignal} - ,{1592,sizes_0, _typeSignal} - ,{1590,sizes_2, _typeSignal} - ,{1593,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_58[4] = { - {1703,sizes_2, _typeSignal} - ,{1707,sizes_0, _typeSignal} - ,{1705,sizes_2, _typeSignal} - ,{1708,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_59[4] = { - {1818,sizes_2, _typeSignal} - ,{1822,sizes_0, _typeSignal} - ,{1820,sizes_2, _typeSignal} - ,{1823,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_60[4] = { - {1933,sizes_2, _typeSignal} - ,{1937,sizes_0, _typeSignal} - ,{1935,sizes_2, _typeSignal} - ,{1938,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_61[4] = { - {2048,sizes_2, _typeSignal} - ,{2052,sizes_0, _typeSignal} - ,{2050,sizes_2, _typeSignal} - ,{2053,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_62[4] = { - {2163,sizes_2, _typeSignal} - ,{2167,sizes_0, _typeSignal} - ,{2165,sizes_2, _typeSignal} - ,{2168,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_63[4] = { - {2278,sizes_2, _typeSignal} - ,{2282,sizes_0, _typeSignal} - ,{2280,sizes_2, _typeSignal} - ,{2283,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_64[4] = { - {2393,sizes_2, _typeSignal} - ,{2397,sizes_0, _typeSignal} - ,{2395,sizes_2, _typeSignal} - ,{2398,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_65[4] = { - {2508,sizes_2, _typeSignal} - ,{2512,sizes_0, _typeSignal} - ,{2510,sizes_2, _typeSignal} - ,{2513,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_66[4] = { - {2623,sizes_2, _typeSignal} - ,{2627,sizes_0, _typeSignal} - ,{2625,sizes_2, _typeSignal} - ,{2628,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_67[4] = { - {2738,sizes_2, _typeSignal} - ,{2742,sizes_0, _typeSignal} - ,{2740,sizes_2, _typeSignal} - ,{2743,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_68[4] = { - {2853,sizes_2, _typeSignal} - ,{2857,sizes_0, _typeSignal} - ,{2855,sizes_2, _typeSignal} - ,{2858,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_69[4] = { - {2968,sizes_2, _typeSignal} - ,{2972,sizes_0, _typeSignal} - ,{2970,sizes_2, _typeSignal} - ,{2973,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_70[4] = { - {3083,sizes_2, _typeSignal} - ,{3087,sizes_0, _typeSignal} - ,{3085,sizes_2, _typeSignal} - ,{3088,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_71[4] = { - {3198,sizes_2, _typeSignal} - ,{3202,sizes_0, _typeSignal} - ,{3200,sizes_2, _typeSignal} - ,{3203,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_72[4] = { - {3313,sizes_2, _typeSignal} - ,{3317,sizes_0, _typeSignal} - ,{3315,sizes_2, _typeSignal} - ,{3318,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_73[4] = { - {3428,sizes_2, _typeSignal} - ,{3432,sizes_0, _typeSignal} - ,{3430,sizes_2, _typeSignal} - ,{3433,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_74[4] = { - {3543,sizes_2, _typeSignal} - ,{3547,sizes_0, _typeSignal} - ,{3545,sizes_2, _typeSignal} - ,{3548,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_75[4] = { - {3658,sizes_2, _typeSignal} - ,{3662,sizes_0, _typeSignal} - ,{3660,sizes_2, _typeSignal} - ,{3663,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_76[4] = { - {3773,sizes_2, _typeSignal} - ,{3777,sizes_0, _typeSignal} - ,{3775,sizes_2, _typeSignal} - ,{3778,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_77[4] = { - {3888,sizes_2, _typeSignal} - ,{3892,sizes_0, _typeSignal} - ,{3890,sizes_2, _typeSignal} - ,{3893,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_78[4] = { - {4003,sizes_2, _typeSignal} - ,{4007,sizes_0, _typeSignal} - ,{4005,sizes_2, _typeSignal} - ,{4008,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_79[4] = { - {4118,sizes_2, _typeSignal} - ,{4122,sizes_0, _typeSignal} - ,{4120,sizes_2, _typeSignal} - ,{4123,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_80[4] = { - {4233,sizes_2, _typeSignal} - ,{4237,sizes_0, _typeSignal} - ,{4235,sizes_2, _typeSignal} - ,{4238,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_81[4] = { - {4348,sizes_2, _typeSignal} - ,{4352,sizes_0, _typeSignal} - ,{4350,sizes_2, _typeSignal} - ,{4353,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_82[4] = { - {4463,sizes_2, _typeSignal} - ,{4467,sizes_0, _typeSignal} - ,{4465,sizes_2, _typeSignal} - ,{4468,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_83[4] = { - {4578,sizes_2, _typeSignal} - ,{4582,sizes_0, _typeSignal} - ,{4580,sizes_2, _typeSignal} - ,{4583,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_84[4] = { - {4693,sizes_2, _typeSignal} - ,{4697,sizes_0, _typeSignal} - ,{4695,sizes_2, _typeSignal} - ,{4698,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_85[4] = { - {4808,sizes_2, _typeSignal} - ,{4812,sizes_0, _typeSignal} - ,{4810,sizes_2, _typeSignal} - ,{4813,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_86[4] = { - {4923,sizes_2, _typeSignal} - ,{4927,sizes_0, _typeSignal} - ,{4925,sizes_2, _typeSignal} - ,{4928,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_87[4] = { - {5038,sizes_2, _typeSignal} - ,{5042,sizes_0, _typeSignal} - ,{5040,sizes_2, _typeSignal} - ,{5043,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_88[4] = { - {5153,sizes_2, _typeSignal} - ,{5157,sizes_0, _typeSignal} - ,{5155,sizes_2, _typeSignal} - ,{5158,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_89[4] = { - {5268,sizes_2, _typeSignal} - ,{5272,sizes_0, _typeSignal} - ,{5270,sizes_2, _typeSignal} - ,{5273,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_90[4] = { - {5383,sizes_2, _typeSignal} - ,{5387,sizes_0, _typeSignal} - ,{5385,sizes_2, _typeSignal} - ,{5388,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_91[4] = { - {5498,sizes_2, _typeSignal} - ,{5502,sizes_0, _typeSignal} - ,{5500,sizes_2, _typeSignal} - ,{5503,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_92[4] = { - {5613,sizes_2, _typeSignal} - ,{5617,sizes_0, _typeSignal} - ,{5615,sizes_2, _typeSignal} - ,{5618,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_93[4] = { - {5728,sizes_2, _typeSignal} - ,{5732,sizes_0, _typeSignal} - ,{5730,sizes_2, _typeSignal} - ,{5733,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_94[4] = { - {5843,sizes_2, _typeSignal} - ,{5847,sizes_0, _typeSignal} - ,{5845,sizes_2, _typeSignal} - ,{5848,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_95[4] = { - {5958,sizes_2, _typeSignal} - ,{5962,sizes_0, _typeSignal} - ,{5960,sizes_2, _typeSignal} - ,{5963,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_96[4] = { - {6073,sizes_2, _typeSignal} - ,{6077,sizes_0, _typeSignal} - ,{6075,sizes_2, _typeSignal} - ,{6078,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_97[4] = { - {6188,sizes_2, _typeSignal} - ,{6192,sizes_0, _typeSignal} - ,{6190,sizes_2, _typeSignal} - ,{6193,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd[4] = { - {674,sizes_2, _typeSignal} - ,{676,sizes_2, _typeSignal} - ,{680,sizes_0, _typeSignal} - ,{678,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_1[4] = { - {789,sizes_2, _typeSignal} - ,{791,sizes_2, _typeSignal} - ,{795,sizes_0, _typeSignal} - ,{793,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_2[4] = { - {904,sizes_2, _typeSignal} - ,{906,sizes_2, _typeSignal} - ,{910,sizes_0, _typeSignal} - ,{908,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_3[4] = { - {1019,sizes_2, _typeSignal} - ,{1021,sizes_2, _typeSignal} - ,{1025,sizes_0, _typeSignal} - ,{1023,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_4[4] = { - {1134,sizes_2, _typeSignal} - ,{1136,sizes_2, _typeSignal} - ,{1140,sizes_0, _typeSignal} - ,{1138,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_5[4] = { - {1249,sizes_2, _typeSignal} - ,{1251,sizes_2, _typeSignal} - ,{1255,sizes_0, _typeSignal} - ,{1253,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_6[4] = { - {1364,sizes_2, _typeSignal} - ,{1366,sizes_2, _typeSignal} - ,{1370,sizes_0, _typeSignal} - ,{1368,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_7[4] = { - {1479,sizes_2, _typeSignal} - ,{1481,sizes_2, _typeSignal} - ,{1485,sizes_0, _typeSignal} - ,{1483,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_8[4] = { - {1594,sizes_2, _typeSignal} - ,{1596,sizes_2, _typeSignal} - ,{1600,sizes_0, _typeSignal} - ,{1598,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_9[4] = { - {1709,sizes_2, _typeSignal} - ,{1711,sizes_2, _typeSignal} - ,{1715,sizes_0, _typeSignal} - ,{1713,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_10[4] = { - {1824,sizes_2, _typeSignal} - ,{1826,sizes_2, _typeSignal} - ,{1830,sizes_0, _typeSignal} - ,{1828,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_11[4] = { - {1939,sizes_2, _typeSignal} - ,{1941,sizes_2, _typeSignal} - ,{1945,sizes_0, _typeSignal} - ,{1943,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_12[4] = { - {2054,sizes_2, _typeSignal} - ,{2056,sizes_2, _typeSignal} - ,{2060,sizes_0, _typeSignal} - ,{2058,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_13[4] = { - {2169,sizes_2, _typeSignal} - ,{2171,sizes_2, _typeSignal} - ,{2175,sizes_0, _typeSignal} - ,{2173,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_14[4] = { - {2284,sizes_2, _typeSignal} - ,{2286,sizes_2, _typeSignal} - ,{2290,sizes_0, _typeSignal} - ,{2288,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_15[4] = { - {2399,sizes_2, _typeSignal} - ,{2401,sizes_2, _typeSignal} - ,{2405,sizes_0, _typeSignal} - ,{2403,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_16[4] = { - {2514,sizes_2, _typeSignal} - ,{2516,sizes_2, _typeSignal} - ,{2520,sizes_0, _typeSignal} - ,{2518,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_17[4] = { - {2629,sizes_2, _typeSignal} - ,{2631,sizes_2, _typeSignal} - ,{2635,sizes_0, _typeSignal} - ,{2633,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_18[4] = { - {2744,sizes_2, _typeSignal} - ,{2746,sizes_2, _typeSignal} - ,{2750,sizes_0, _typeSignal} - ,{2748,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_19[4] = { - {2859,sizes_2, _typeSignal} - ,{2861,sizes_2, _typeSignal} - ,{2865,sizes_0, _typeSignal} - ,{2863,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_20[4] = { - {2974,sizes_2, _typeSignal} - ,{2976,sizes_2, _typeSignal} - ,{2980,sizes_0, _typeSignal} - ,{2978,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_21[4] = { - {3089,sizes_2, _typeSignal} - ,{3091,sizes_2, _typeSignal} - ,{3095,sizes_0, _typeSignal} - ,{3093,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_22[4] = { - {3204,sizes_2, _typeSignal} - ,{3206,sizes_2, _typeSignal} - ,{3210,sizes_0, _typeSignal} - ,{3208,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_23[4] = { - {3319,sizes_2, _typeSignal} - ,{3321,sizes_2, _typeSignal} - ,{3325,sizes_0, _typeSignal} - ,{3323,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_24[4] = { - {3434,sizes_2, _typeSignal} - ,{3436,sizes_2, _typeSignal} - ,{3440,sizes_0, _typeSignal} - ,{3438,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_25[4] = { - {3549,sizes_2, _typeSignal} - ,{3551,sizes_2, _typeSignal} - ,{3555,sizes_0, _typeSignal} - ,{3553,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_26[4] = { - {3664,sizes_2, _typeSignal} - ,{3666,sizes_2, _typeSignal} - ,{3670,sizes_0, _typeSignal} - ,{3668,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_27[4] = { - {3779,sizes_2, _typeSignal} - ,{3781,sizes_2, _typeSignal} - ,{3785,sizes_0, _typeSignal} - ,{3783,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_28[4] = { - {3894,sizes_2, _typeSignal} - ,{3896,sizes_2, _typeSignal} - ,{3900,sizes_0, _typeSignal} - ,{3898,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_29[4] = { - {4009,sizes_2, _typeSignal} - ,{4011,sizes_2, _typeSignal} - ,{4015,sizes_0, _typeSignal} - ,{4013,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_30[4] = { - {4124,sizes_2, _typeSignal} - ,{4126,sizes_2, _typeSignal} - ,{4130,sizes_0, _typeSignal} - ,{4128,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_31[4] = { - {4239,sizes_2, _typeSignal} - ,{4241,sizes_2, _typeSignal} - ,{4245,sizes_0, _typeSignal} - ,{4243,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_32[4] = { - {4354,sizes_2, _typeSignal} - ,{4356,sizes_2, _typeSignal} - ,{4360,sizes_0, _typeSignal} - ,{4358,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_33[4] = { - {4469,sizes_2, _typeSignal} - ,{4471,sizes_2, _typeSignal} - ,{4475,sizes_0, _typeSignal} - ,{4473,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_34[4] = { - {4584,sizes_2, _typeSignal} - ,{4586,sizes_2, _typeSignal} - ,{4590,sizes_0, _typeSignal} - ,{4588,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_35[4] = { - {4699,sizes_2, _typeSignal} - ,{4701,sizes_2, _typeSignal} - ,{4705,sizes_0, _typeSignal} - ,{4703,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_36[4] = { - {4814,sizes_2, _typeSignal} - ,{4816,sizes_2, _typeSignal} - ,{4820,sizes_0, _typeSignal} - ,{4818,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_37[4] = { - {4929,sizes_2, _typeSignal} - ,{4931,sizes_2, _typeSignal} - ,{4935,sizes_0, _typeSignal} - ,{4933,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_38[4] = { - {5044,sizes_2, _typeSignal} - ,{5046,sizes_2, _typeSignal} - ,{5050,sizes_0, _typeSignal} - ,{5048,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_39[4] = { - {5159,sizes_2, _typeSignal} - ,{5161,sizes_2, _typeSignal} - ,{5165,sizes_0, _typeSignal} - ,{5163,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_40[4] = { - {5274,sizes_2, _typeSignal} - ,{5276,sizes_2, _typeSignal} - ,{5280,sizes_0, _typeSignal} - ,{5278,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_41[4] = { - {5389,sizes_2, _typeSignal} - ,{5391,sizes_2, _typeSignal} - ,{5395,sizes_0, _typeSignal} - ,{5393,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_42[4] = { - {5504,sizes_2, _typeSignal} - ,{5506,sizes_2, _typeSignal} - ,{5510,sizes_0, _typeSignal} - ,{5508,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_43[4] = { - {5619,sizes_2, _typeSignal} - ,{5621,sizes_2, _typeSignal} - ,{5625,sizes_0, _typeSignal} - ,{5623,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_44[4] = { - {5734,sizes_2, _typeSignal} - ,{5736,sizes_2, _typeSignal} - ,{5740,sizes_0, _typeSignal} - ,{5738,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_45[4] = { - {5849,sizes_2, _typeSignal} - ,{5851,sizes_2, _typeSignal} - ,{5855,sizes_0, _typeSignal} - ,{5853,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_46[4] = { - {5964,sizes_2, _typeSignal} - ,{5966,sizes_2, _typeSignal} - ,{5970,sizes_0, _typeSignal} - ,{5968,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_47[4] = { - {6079,sizes_2, _typeSignal} - ,{6081,sizes_2, _typeSignal} - ,{6085,sizes_0, _typeSignal} - ,{6083,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_48[4] = { - {6194,sizes_2, _typeSignal} - ,{6196,sizes_2, _typeSignal} - ,{6200,sizes_0, _typeSignal} - ,{6198,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3[12] = { - {515,sizes_2, _typeSignal} - ,{513,sizes_2, _typeSignal} - ,{511,sizes_2, _typeSignal} - ,{509,sizes_2, _typeSignal} - ,{507,sizes_2, _typeSignal} - ,{505,sizes_2, _typeSignal} - ,{503,sizes_2, _typeSignal} - ,{501,sizes_2, _typeSignal} - ,{480,sizes_2_8, _typeSignal} - ,{499,sizes_2, _typeSignal} - ,{496,sizes_3, _typeSignal} - ,{517,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_98[4] = { - {518,sizes_2, _typeSignal} - ,{522,sizes_0, _typeSignal} - ,{520,sizes_2, _typeSignal} - ,{523,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_49[4] = { - {524,sizes_2, _typeSignal} - ,{526,sizes_2, _typeSignal} - ,{530,sizes_0, _typeSignal} - ,{528,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_50[4] = { - {531,sizes_2, _typeSignal} - ,{533,sizes_2, _typeSignal} - ,{537,sizes_0, _typeSignal} - ,{535,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_51[4] = { - {538,sizes_2, _typeSignal} - ,{540,sizes_2, _typeSignal} - ,{544,sizes_0, _typeSignal} - ,{542,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_52[4] = { - {545,sizes_2, _typeSignal} - ,{547,sizes_2, _typeSignal} - ,{551,sizes_0, _typeSignal} - ,{549,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_53[4] = { - {552,sizes_2, _typeSignal} - ,{554,sizes_2, _typeSignal} - ,{558,sizes_0, _typeSignal} - ,{556,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_54[4] = { - {559,sizes_2, _typeSignal} - ,{561,sizes_2, _typeSignal} - ,{565,sizes_0, _typeSignal} - ,{563,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_1[12] = { - {611,sizes_2, _typeSignal} - ,{609,sizes_2, _typeSignal} - ,{607,sizes_2, _typeSignal} - ,{605,sizes_2, _typeSignal} - ,{603,sizes_2, _typeSignal} - ,{601,sizes_2, _typeSignal} - ,{599,sizes_2, _typeSignal} - ,{597,sizes_2, _typeSignal} - ,{576,sizes_2_8, _typeSignal} - ,{595,sizes_2, _typeSignal} - ,{592,sizes_3, _typeSignal} - ,{613,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_99[4] = { - {614,sizes_2, _typeSignal} - ,{618,sizes_0, _typeSignal} - ,{616,sizes_2, _typeSignal} - ,{619,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_55[4] = { - {620,sizes_2, _typeSignal} - ,{622,sizes_2, _typeSignal} - ,{626,sizes_0, _typeSignal} - ,{624,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_56[4] = { - {627,sizes_2, _typeSignal} - ,{629,sizes_2, _typeSignal} - ,{633,sizes_0, _typeSignal} - ,{631,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_57[4] = { - {634,sizes_2, _typeSignal} - ,{636,sizes_2, _typeSignal} - ,{640,sizes_0, _typeSignal} - ,{638,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_58[4] = { - {641,sizes_2, _typeSignal} - ,{643,sizes_2, _typeSignal} - ,{647,sizes_0, _typeSignal} - ,{645,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_59[4] = { - {648,sizes_2, _typeSignal} - ,{650,sizes_2, _typeSignal} - ,{654,sizes_0, _typeSignal} - ,{652,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_60[4] = { - {655,sizes_2, _typeSignal} - ,{657,sizes_2, _typeSignal} - ,{661,sizes_0, _typeSignal} - ,{659,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_2[12] = { - {726,sizes_2, _typeSignal} - ,{724,sizes_2, _typeSignal} - ,{722,sizes_2, _typeSignal} - ,{720,sizes_2, _typeSignal} - ,{718,sizes_2, _typeSignal} - ,{716,sizes_2, _typeSignal} - ,{714,sizes_2, _typeSignal} - ,{712,sizes_2, _typeSignal} - ,{691,sizes_2_8, _typeSignal} - ,{710,sizes_2, _typeSignal} - ,{707,sizes_3, _typeSignal} - ,{728,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_100[4] = { - {729,sizes_2, _typeSignal} - ,{733,sizes_0, _typeSignal} - ,{731,sizes_2, _typeSignal} - ,{734,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_61[4] = { - {735,sizes_2, _typeSignal} - ,{737,sizes_2, _typeSignal} - ,{741,sizes_0, _typeSignal} - ,{739,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_62[4] = { - {742,sizes_2, _typeSignal} - ,{744,sizes_2, _typeSignal} - ,{748,sizes_0, _typeSignal} - ,{746,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_63[4] = { - {749,sizes_2, _typeSignal} - ,{751,sizes_2, _typeSignal} - ,{755,sizes_0, _typeSignal} - ,{753,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_64[4] = { - {756,sizes_2, _typeSignal} - ,{758,sizes_2, _typeSignal} - ,{762,sizes_0, _typeSignal} - ,{760,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_65[4] = { - {763,sizes_2, _typeSignal} - ,{765,sizes_2, _typeSignal} - ,{769,sizes_0, _typeSignal} - ,{767,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_66[4] = { - {770,sizes_2, _typeSignal} - ,{772,sizes_2, _typeSignal} - ,{776,sizes_0, _typeSignal} - ,{774,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_3[12] = { - {841,sizes_2, _typeSignal} - ,{839,sizes_2, _typeSignal} - ,{837,sizes_2, _typeSignal} - ,{835,sizes_2, _typeSignal} - ,{833,sizes_2, _typeSignal} - ,{831,sizes_2, _typeSignal} - ,{829,sizes_2, _typeSignal} - ,{827,sizes_2, _typeSignal} - ,{806,sizes_2_8, _typeSignal} - ,{825,sizes_2, _typeSignal} - ,{822,sizes_3, _typeSignal} - ,{843,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_101[4] = { - {844,sizes_2, _typeSignal} - ,{848,sizes_0, _typeSignal} - ,{846,sizes_2, _typeSignal} - ,{849,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_67[4] = { - {850,sizes_2, _typeSignal} - ,{852,sizes_2, _typeSignal} - ,{856,sizes_0, _typeSignal} - ,{854,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_68[4] = { - {857,sizes_2, _typeSignal} - ,{859,sizes_2, _typeSignal} - ,{863,sizes_0, _typeSignal} - ,{861,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_69[4] = { - {864,sizes_2, _typeSignal} - ,{866,sizes_2, _typeSignal} - ,{870,sizes_0, _typeSignal} - ,{868,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_70[4] = { - {871,sizes_2, _typeSignal} - ,{873,sizes_2, _typeSignal} - ,{877,sizes_0, _typeSignal} - ,{875,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_71[4] = { - {878,sizes_2, _typeSignal} - ,{880,sizes_2, _typeSignal} - ,{884,sizes_0, _typeSignal} - ,{882,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_72[4] = { - {885,sizes_2, _typeSignal} - ,{887,sizes_2, _typeSignal} - ,{891,sizes_0, _typeSignal} - ,{889,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_4[12] = { - {956,sizes_2, _typeSignal} - ,{954,sizes_2, _typeSignal} - ,{952,sizes_2, _typeSignal} - ,{950,sizes_2, _typeSignal} - ,{948,sizes_2, _typeSignal} - ,{946,sizes_2, _typeSignal} - ,{944,sizes_2, _typeSignal} - ,{942,sizes_2, _typeSignal} - ,{921,sizes_2_8, _typeSignal} - ,{940,sizes_2, _typeSignal} - ,{937,sizes_3, _typeSignal} - ,{958,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_102[4] = { - {959,sizes_2, _typeSignal} - ,{963,sizes_0, _typeSignal} - ,{961,sizes_2, _typeSignal} - ,{964,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_73[4] = { - {965,sizes_2, _typeSignal} - ,{967,sizes_2, _typeSignal} - ,{971,sizes_0, _typeSignal} - ,{969,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_74[4] = { - {972,sizes_2, _typeSignal} - ,{974,sizes_2, _typeSignal} - ,{978,sizes_0, _typeSignal} - ,{976,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_75[4] = { - {979,sizes_2, _typeSignal} - ,{981,sizes_2, _typeSignal} - ,{985,sizes_0, _typeSignal} - ,{983,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_76[4] = { - {986,sizes_2, _typeSignal} - ,{988,sizes_2, _typeSignal} - ,{992,sizes_0, _typeSignal} - ,{990,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_77[4] = { - {993,sizes_2, _typeSignal} - ,{995,sizes_2, _typeSignal} - ,{999,sizes_0, _typeSignal} - ,{997,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_78[4] = { - {1000,sizes_2, _typeSignal} - ,{1002,sizes_2, _typeSignal} - ,{1006,sizes_0, _typeSignal} - ,{1004,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_5[12] = { - {1071,sizes_2, _typeSignal} - ,{1069,sizes_2, _typeSignal} - ,{1067,sizes_2, _typeSignal} - ,{1065,sizes_2, _typeSignal} - ,{1063,sizes_2, _typeSignal} - ,{1061,sizes_2, _typeSignal} - ,{1059,sizes_2, _typeSignal} - ,{1057,sizes_2, _typeSignal} - ,{1036,sizes_2_8, _typeSignal} - ,{1055,sizes_2, _typeSignal} - ,{1052,sizes_3, _typeSignal} - ,{1073,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_103[4] = { - {1074,sizes_2, _typeSignal} - ,{1078,sizes_0, _typeSignal} - ,{1076,sizes_2, _typeSignal} - ,{1079,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_79[4] = { - {1080,sizes_2, _typeSignal} - ,{1082,sizes_2, _typeSignal} - ,{1086,sizes_0, _typeSignal} - ,{1084,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_80[4] = { - {1087,sizes_2, _typeSignal} - ,{1089,sizes_2, _typeSignal} - ,{1093,sizes_0, _typeSignal} - ,{1091,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_81[4] = { - {1094,sizes_2, _typeSignal} - ,{1096,sizes_2, _typeSignal} - ,{1100,sizes_0, _typeSignal} - ,{1098,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_82[4] = { - {1101,sizes_2, _typeSignal} - ,{1103,sizes_2, _typeSignal} - ,{1107,sizes_0, _typeSignal} - ,{1105,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_83[4] = { - {1108,sizes_2, _typeSignal} - ,{1110,sizes_2, _typeSignal} - ,{1114,sizes_0, _typeSignal} - ,{1112,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_84[4] = { - {1115,sizes_2, _typeSignal} - ,{1117,sizes_2, _typeSignal} - ,{1121,sizes_0, _typeSignal} - ,{1119,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_6[12] = { - {1186,sizes_2, _typeSignal} - ,{1184,sizes_2, _typeSignal} - ,{1182,sizes_2, _typeSignal} - ,{1180,sizes_2, _typeSignal} - ,{1178,sizes_2, _typeSignal} - ,{1176,sizes_2, _typeSignal} - ,{1174,sizes_2, _typeSignal} - ,{1172,sizes_2, _typeSignal} - ,{1151,sizes_2_8, _typeSignal} - ,{1170,sizes_2, _typeSignal} - ,{1167,sizes_3, _typeSignal} - ,{1188,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_104[4] = { - {1189,sizes_2, _typeSignal} - ,{1193,sizes_0, _typeSignal} - ,{1191,sizes_2, _typeSignal} - ,{1194,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_85[4] = { - {1195,sizes_2, _typeSignal} - ,{1197,sizes_2, _typeSignal} - ,{1201,sizes_0, _typeSignal} - ,{1199,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_86[4] = { - {1202,sizes_2, _typeSignal} - ,{1204,sizes_2, _typeSignal} - ,{1208,sizes_0, _typeSignal} - ,{1206,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_87[4] = { - {1209,sizes_2, _typeSignal} - ,{1211,sizes_2, _typeSignal} - ,{1215,sizes_0, _typeSignal} - ,{1213,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_88[4] = { - {1216,sizes_2, _typeSignal} - ,{1218,sizes_2, _typeSignal} - ,{1222,sizes_0, _typeSignal} - ,{1220,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_89[4] = { - {1223,sizes_2, _typeSignal} - ,{1225,sizes_2, _typeSignal} - ,{1229,sizes_0, _typeSignal} - ,{1227,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_90[4] = { - {1230,sizes_2, _typeSignal} - ,{1232,sizes_2, _typeSignal} - ,{1236,sizes_0, _typeSignal} - ,{1234,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_7[12] = { - {1301,sizes_2, _typeSignal} - ,{1299,sizes_2, _typeSignal} - ,{1297,sizes_2, _typeSignal} - ,{1295,sizes_2, _typeSignal} - ,{1293,sizes_2, _typeSignal} - ,{1291,sizes_2, _typeSignal} - ,{1289,sizes_2, _typeSignal} - ,{1287,sizes_2, _typeSignal} - ,{1266,sizes_2_8, _typeSignal} - ,{1285,sizes_2, _typeSignal} - ,{1282,sizes_3, _typeSignal} - ,{1303,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_105[4] = { - {1304,sizes_2, _typeSignal} - ,{1308,sizes_0, _typeSignal} - ,{1306,sizes_2, _typeSignal} - ,{1309,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_91[4] = { - {1310,sizes_2, _typeSignal} - ,{1312,sizes_2, _typeSignal} - ,{1316,sizes_0, _typeSignal} - ,{1314,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_92[4] = { - {1317,sizes_2, _typeSignal} - ,{1319,sizes_2, _typeSignal} - ,{1323,sizes_0, _typeSignal} - ,{1321,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_93[4] = { - {1324,sizes_2, _typeSignal} - ,{1326,sizes_2, _typeSignal} - ,{1330,sizes_0, _typeSignal} - ,{1328,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_94[4] = { - {1331,sizes_2, _typeSignal} - ,{1333,sizes_2, _typeSignal} - ,{1337,sizes_0, _typeSignal} - ,{1335,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_95[4] = { - {1338,sizes_2, _typeSignal} - ,{1340,sizes_2, _typeSignal} - ,{1344,sizes_0, _typeSignal} - ,{1342,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_96[4] = { - {1345,sizes_2, _typeSignal} - ,{1347,sizes_2, _typeSignal} - ,{1351,sizes_0, _typeSignal} - ,{1349,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_8[12] = { - {1416,sizes_2, _typeSignal} - ,{1414,sizes_2, _typeSignal} - ,{1412,sizes_2, _typeSignal} - ,{1410,sizes_2, _typeSignal} - ,{1408,sizes_2, _typeSignal} - ,{1406,sizes_2, _typeSignal} - ,{1404,sizes_2, _typeSignal} - ,{1402,sizes_2, _typeSignal} - ,{1381,sizes_2_8, _typeSignal} - ,{1400,sizes_2, _typeSignal} - ,{1397,sizes_3, _typeSignal} - ,{1418,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_106[4] = { - {1419,sizes_2, _typeSignal} - ,{1423,sizes_0, _typeSignal} - ,{1421,sizes_2, _typeSignal} - ,{1424,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_97[4] = { - {1425,sizes_2, _typeSignal} - ,{1427,sizes_2, _typeSignal} - ,{1431,sizes_0, _typeSignal} - ,{1429,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_98[4] = { - {1432,sizes_2, _typeSignal} - ,{1434,sizes_2, _typeSignal} - ,{1438,sizes_0, _typeSignal} - ,{1436,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_99[4] = { - {1439,sizes_2, _typeSignal} - ,{1441,sizes_2, _typeSignal} - ,{1445,sizes_0, _typeSignal} - ,{1443,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_100[4] = { - {1446,sizes_2, _typeSignal} - ,{1448,sizes_2, _typeSignal} - ,{1452,sizes_0, _typeSignal} - ,{1450,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_101[4] = { - {1453,sizes_2, _typeSignal} - ,{1455,sizes_2, _typeSignal} - ,{1459,sizes_0, _typeSignal} - ,{1457,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_102[4] = { - {1460,sizes_2, _typeSignal} - ,{1462,sizes_2, _typeSignal} - ,{1466,sizes_0, _typeSignal} - ,{1464,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_9[12] = { - {1531,sizes_2, _typeSignal} - ,{1529,sizes_2, _typeSignal} - ,{1527,sizes_2, _typeSignal} - ,{1525,sizes_2, _typeSignal} - ,{1523,sizes_2, _typeSignal} - ,{1521,sizes_2, _typeSignal} - ,{1519,sizes_2, _typeSignal} - ,{1517,sizes_2, _typeSignal} - ,{1496,sizes_2_8, _typeSignal} - ,{1515,sizes_2, _typeSignal} - ,{1512,sizes_3, _typeSignal} - ,{1533,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_107[4] = { - {1534,sizes_2, _typeSignal} - ,{1538,sizes_0, _typeSignal} - ,{1536,sizes_2, _typeSignal} - ,{1539,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_103[4] = { - {1540,sizes_2, _typeSignal} - ,{1542,sizes_2, _typeSignal} - ,{1546,sizes_0, _typeSignal} - ,{1544,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_104[4] = { - {1547,sizes_2, _typeSignal} - ,{1549,sizes_2, _typeSignal} - ,{1553,sizes_0, _typeSignal} - ,{1551,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_105[4] = { - {1554,sizes_2, _typeSignal} - ,{1556,sizes_2, _typeSignal} - ,{1560,sizes_0, _typeSignal} - ,{1558,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_106[4] = { - {1561,sizes_2, _typeSignal} - ,{1563,sizes_2, _typeSignal} - ,{1567,sizes_0, _typeSignal} - ,{1565,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_107[4] = { - {1568,sizes_2, _typeSignal} - ,{1570,sizes_2, _typeSignal} - ,{1574,sizes_0, _typeSignal} - ,{1572,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_108[4] = { - {1575,sizes_2, _typeSignal} - ,{1577,sizes_2, _typeSignal} - ,{1581,sizes_0, _typeSignal} - ,{1579,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_10[12] = { - {1646,sizes_2, _typeSignal} - ,{1644,sizes_2, _typeSignal} - ,{1642,sizes_2, _typeSignal} - ,{1640,sizes_2, _typeSignal} - ,{1638,sizes_2, _typeSignal} - ,{1636,sizes_2, _typeSignal} - ,{1634,sizes_2, _typeSignal} - ,{1632,sizes_2, _typeSignal} - ,{1611,sizes_2_8, _typeSignal} - ,{1630,sizes_2, _typeSignal} - ,{1627,sizes_3, _typeSignal} - ,{1648,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_108[4] = { - {1649,sizes_2, _typeSignal} - ,{1653,sizes_0, _typeSignal} - ,{1651,sizes_2, _typeSignal} - ,{1654,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_109[4] = { - {1655,sizes_2, _typeSignal} - ,{1657,sizes_2, _typeSignal} - ,{1661,sizes_0, _typeSignal} - ,{1659,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_110[4] = { - {1662,sizes_2, _typeSignal} - ,{1664,sizes_2, _typeSignal} - ,{1668,sizes_0, _typeSignal} - ,{1666,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_111[4] = { - {1669,sizes_2, _typeSignal} - ,{1671,sizes_2, _typeSignal} - ,{1675,sizes_0, _typeSignal} - ,{1673,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_112[4] = { - {1676,sizes_2, _typeSignal} - ,{1678,sizes_2, _typeSignal} - ,{1682,sizes_0, _typeSignal} - ,{1680,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_113[4] = { - {1683,sizes_2, _typeSignal} - ,{1685,sizes_2, _typeSignal} - ,{1689,sizes_0, _typeSignal} - ,{1687,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_114[4] = { - {1690,sizes_2, _typeSignal} - ,{1692,sizes_2, _typeSignal} - ,{1696,sizes_0, _typeSignal} - ,{1694,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_11[12] = { - {1761,sizes_2, _typeSignal} - ,{1759,sizes_2, _typeSignal} - ,{1757,sizes_2, _typeSignal} - ,{1755,sizes_2, _typeSignal} - ,{1753,sizes_2, _typeSignal} - ,{1751,sizes_2, _typeSignal} - ,{1749,sizes_2, _typeSignal} - ,{1747,sizes_2, _typeSignal} - ,{1726,sizes_2_8, _typeSignal} - ,{1745,sizes_2, _typeSignal} - ,{1742,sizes_3, _typeSignal} - ,{1763,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_109[4] = { - {1764,sizes_2, _typeSignal} - ,{1768,sizes_0, _typeSignal} - ,{1766,sizes_2, _typeSignal} - ,{1769,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_115[4] = { - {1770,sizes_2, _typeSignal} - ,{1772,sizes_2, _typeSignal} - ,{1776,sizes_0, _typeSignal} - ,{1774,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_116[4] = { - {1777,sizes_2, _typeSignal} - ,{1779,sizes_2, _typeSignal} - ,{1783,sizes_0, _typeSignal} - ,{1781,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_117[4] = { - {1784,sizes_2, _typeSignal} - ,{1786,sizes_2, _typeSignal} - ,{1790,sizes_0, _typeSignal} - ,{1788,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_118[4] = { - {1791,sizes_2, _typeSignal} - ,{1793,sizes_2, _typeSignal} - ,{1797,sizes_0, _typeSignal} - ,{1795,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_119[4] = { - {1798,sizes_2, _typeSignal} - ,{1800,sizes_2, _typeSignal} - ,{1804,sizes_0, _typeSignal} - ,{1802,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_120[4] = { - {1805,sizes_2, _typeSignal} - ,{1807,sizes_2, _typeSignal} - ,{1811,sizes_0, _typeSignal} - ,{1809,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_12[12] = { - {1876,sizes_2, _typeSignal} - ,{1874,sizes_2, _typeSignal} - ,{1872,sizes_2, _typeSignal} - ,{1870,sizes_2, _typeSignal} - ,{1868,sizes_2, _typeSignal} - ,{1866,sizes_2, _typeSignal} - ,{1864,sizes_2, _typeSignal} - ,{1862,sizes_2, _typeSignal} - ,{1841,sizes_2_8, _typeSignal} - ,{1860,sizes_2, _typeSignal} - ,{1857,sizes_3, _typeSignal} - ,{1878,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_110[4] = { - {1879,sizes_2, _typeSignal} - ,{1883,sizes_0, _typeSignal} - ,{1881,sizes_2, _typeSignal} - ,{1884,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_121[4] = { - {1885,sizes_2, _typeSignal} - ,{1887,sizes_2, _typeSignal} - ,{1891,sizes_0, _typeSignal} - ,{1889,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_122[4] = { - {1892,sizes_2, _typeSignal} - ,{1894,sizes_2, _typeSignal} - ,{1898,sizes_0, _typeSignal} - ,{1896,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_123[4] = { - {1899,sizes_2, _typeSignal} - ,{1901,sizes_2, _typeSignal} - ,{1905,sizes_0, _typeSignal} - ,{1903,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_124[4] = { - {1906,sizes_2, _typeSignal} - ,{1908,sizes_2, _typeSignal} - ,{1912,sizes_0, _typeSignal} - ,{1910,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_125[4] = { - {1913,sizes_2, _typeSignal} - ,{1915,sizes_2, _typeSignal} - ,{1919,sizes_0, _typeSignal} - ,{1917,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_126[4] = { - {1920,sizes_2, _typeSignal} - ,{1922,sizes_2, _typeSignal} - ,{1926,sizes_0, _typeSignal} - ,{1924,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_13[12] = { - {1991,sizes_2, _typeSignal} - ,{1989,sizes_2, _typeSignal} - ,{1987,sizes_2, _typeSignal} - ,{1985,sizes_2, _typeSignal} - ,{1983,sizes_2, _typeSignal} - ,{1981,sizes_2, _typeSignal} - ,{1979,sizes_2, _typeSignal} - ,{1977,sizes_2, _typeSignal} - ,{1956,sizes_2_8, _typeSignal} - ,{1975,sizes_2, _typeSignal} - ,{1972,sizes_3, _typeSignal} - ,{1993,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_111[4] = { - {1994,sizes_2, _typeSignal} - ,{1998,sizes_0, _typeSignal} - ,{1996,sizes_2, _typeSignal} - ,{1999,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_127[4] = { - {2000,sizes_2, _typeSignal} - ,{2002,sizes_2, _typeSignal} - ,{2006,sizes_0, _typeSignal} - ,{2004,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_128[4] = { - {2007,sizes_2, _typeSignal} - ,{2009,sizes_2, _typeSignal} - ,{2013,sizes_0, _typeSignal} - ,{2011,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_129[4] = { - {2014,sizes_2, _typeSignal} - ,{2016,sizes_2, _typeSignal} - ,{2020,sizes_0, _typeSignal} - ,{2018,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_130[4] = { - {2021,sizes_2, _typeSignal} - ,{2023,sizes_2, _typeSignal} - ,{2027,sizes_0, _typeSignal} - ,{2025,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_131[4] = { - {2028,sizes_2, _typeSignal} - ,{2030,sizes_2, _typeSignal} - ,{2034,sizes_0, _typeSignal} - ,{2032,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_132[4] = { - {2035,sizes_2, _typeSignal} - ,{2037,sizes_2, _typeSignal} - ,{2041,sizes_0, _typeSignal} - ,{2039,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_14[12] = { - {2106,sizes_2, _typeSignal} - ,{2104,sizes_2, _typeSignal} - ,{2102,sizes_2, _typeSignal} - ,{2100,sizes_2, _typeSignal} - ,{2098,sizes_2, _typeSignal} - ,{2096,sizes_2, _typeSignal} - ,{2094,sizes_2, _typeSignal} - ,{2092,sizes_2, _typeSignal} - ,{2071,sizes_2_8, _typeSignal} - ,{2090,sizes_2, _typeSignal} - ,{2087,sizes_3, _typeSignal} - ,{2108,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_112[4] = { - {2109,sizes_2, _typeSignal} - ,{2113,sizes_0, _typeSignal} - ,{2111,sizes_2, _typeSignal} - ,{2114,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_133[4] = { - {2115,sizes_2, _typeSignal} - ,{2117,sizes_2, _typeSignal} - ,{2121,sizes_0, _typeSignal} - ,{2119,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_134[4] = { - {2122,sizes_2, _typeSignal} - ,{2124,sizes_2, _typeSignal} - ,{2128,sizes_0, _typeSignal} - ,{2126,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_135[4] = { - {2129,sizes_2, _typeSignal} - ,{2131,sizes_2, _typeSignal} - ,{2135,sizes_0, _typeSignal} - ,{2133,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_136[4] = { - {2136,sizes_2, _typeSignal} - ,{2138,sizes_2, _typeSignal} - ,{2142,sizes_0, _typeSignal} - ,{2140,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_137[4] = { - {2143,sizes_2, _typeSignal} - ,{2145,sizes_2, _typeSignal} - ,{2149,sizes_0, _typeSignal} - ,{2147,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_138[4] = { - {2150,sizes_2, _typeSignal} - ,{2152,sizes_2, _typeSignal} - ,{2156,sizes_0, _typeSignal} - ,{2154,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_15[12] = { - {2221,sizes_2, _typeSignal} - ,{2219,sizes_2, _typeSignal} - ,{2217,sizes_2, _typeSignal} - ,{2215,sizes_2, _typeSignal} - ,{2213,sizes_2, _typeSignal} - ,{2211,sizes_2, _typeSignal} - ,{2209,sizes_2, _typeSignal} - ,{2207,sizes_2, _typeSignal} - ,{2186,sizes_2_8, _typeSignal} - ,{2205,sizes_2, _typeSignal} - ,{2202,sizes_3, _typeSignal} - ,{2223,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_113[4] = { - {2224,sizes_2, _typeSignal} - ,{2228,sizes_0, _typeSignal} - ,{2226,sizes_2, _typeSignal} - ,{2229,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_139[4] = { - {2230,sizes_2, _typeSignal} - ,{2232,sizes_2, _typeSignal} - ,{2236,sizes_0, _typeSignal} - ,{2234,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_140[4] = { - {2237,sizes_2, _typeSignal} - ,{2239,sizes_2, _typeSignal} - ,{2243,sizes_0, _typeSignal} - ,{2241,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_141[4] = { - {2244,sizes_2, _typeSignal} - ,{2246,sizes_2, _typeSignal} - ,{2250,sizes_0, _typeSignal} - ,{2248,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_142[4] = { - {2251,sizes_2, _typeSignal} - ,{2253,sizes_2, _typeSignal} - ,{2257,sizes_0, _typeSignal} - ,{2255,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_143[4] = { - {2258,sizes_2, _typeSignal} - ,{2260,sizes_2, _typeSignal} - ,{2264,sizes_0, _typeSignal} - ,{2262,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_144[4] = { - {2265,sizes_2, _typeSignal} - ,{2267,sizes_2, _typeSignal} - ,{2271,sizes_0, _typeSignal} - ,{2269,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_16[12] = { - {2336,sizes_2, _typeSignal} - ,{2334,sizes_2, _typeSignal} - ,{2332,sizes_2, _typeSignal} - ,{2330,sizes_2, _typeSignal} - ,{2328,sizes_2, _typeSignal} - ,{2326,sizes_2, _typeSignal} - ,{2324,sizes_2, _typeSignal} - ,{2322,sizes_2, _typeSignal} - ,{2301,sizes_2_8, _typeSignal} - ,{2320,sizes_2, _typeSignal} - ,{2317,sizes_3, _typeSignal} - ,{2338,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_114[4] = { - {2339,sizes_2, _typeSignal} - ,{2343,sizes_0, _typeSignal} - ,{2341,sizes_2, _typeSignal} - ,{2344,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_145[4] = { - {2345,sizes_2, _typeSignal} - ,{2347,sizes_2, _typeSignal} - ,{2351,sizes_0, _typeSignal} - ,{2349,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_146[4] = { - {2352,sizes_2, _typeSignal} - ,{2354,sizes_2, _typeSignal} - ,{2358,sizes_0, _typeSignal} - ,{2356,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_147[4] = { - {2359,sizes_2, _typeSignal} - ,{2361,sizes_2, _typeSignal} - ,{2365,sizes_0, _typeSignal} - ,{2363,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_148[4] = { - {2366,sizes_2, _typeSignal} - ,{2368,sizes_2, _typeSignal} - ,{2372,sizes_0, _typeSignal} - ,{2370,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_149[4] = { - {2373,sizes_2, _typeSignal} - ,{2375,sizes_2, _typeSignal} - ,{2379,sizes_0, _typeSignal} - ,{2377,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_150[4] = { - {2380,sizes_2, _typeSignal} - ,{2382,sizes_2, _typeSignal} - ,{2386,sizes_0, _typeSignal} - ,{2384,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_17[12] = { - {2451,sizes_2, _typeSignal} - ,{2449,sizes_2, _typeSignal} - ,{2447,sizes_2, _typeSignal} - ,{2445,sizes_2, _typeSignal} - ,{2443,sizes_2, _typeSignal} - ,{2441,sizes_2, _typeSignal} - ,{2439,sizes_2, _typeSignal} - ,{2437,sizes_2, _typeSignal} - ,{2416,sizes_2_8, _typeSignal} - ,{2435,sizes_2, _typeSignal} - ,{2432,sizes_3, _typeSignal} - ,{2453,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_115[4] = { - {2454,sizes_2, _typeSignal} - ,{2458,sizes_0, _typeSignal} - ,{2456,sizes_2, _typeSignal} - ,{2459,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_151[4] = { - {2460,sizes_2, _typeSignal} - ,{2462,sizes_2, _typeSignal} - ,{2466,sizes_0, _typeSignal} - ,{2464,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_152[4] = { - {2467,sizes_2, _typeSignal} - ,{2469,sizes_2, _typeSignal} - ,{2473,sizes_0, _typeSignal} - ,{2471,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_153[4] = { - {2474,sizes_2, _typeSignal} - ,{2476,sizes_2, _typeSignal} - ,{2480,sizes_0, _typeSignal} - ,{2478,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_154[4] = { - {2481,sizes_2, _typeSignal} - ,{2483,sizes_2, _typeSignal} - ,{2487,sizes_0, _typeSignal} - ,{2485,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_155[4] = { - {2488,sizes_2, _typeSignal} - ,{2490,sizes_2, _typeSignal} - ,{2494,sizes_0, _typeSignal} - ,{2492,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_156[4] = { - {2495,sizes_2, _typeSignal} - ,{2497,sizes_2, _typeSignal} - ,{2501,sizes_0, _typeSignal} - ,{2499,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_18[12] = { - {2566,sizes_2, _typeSignal} - ,{2564,sizes_2, _typeSignal} - ,{2562,sizes_2, _typeSignal} - ,{2560,sizes_2, _typeSignal} - ,{2558,sizes_2, _typeSignal} - ,{2556,sizes_2, _typeSignal} - ,{2554,sizes_2, _typeSignal} - ,{2552,sizes_2, _typeSignal} - ,{2531,sizes_2_8, _typeSignal} - ,{2550,sizes_2, _typeSignal} - ,{2547,sizes_3, _typeSignal} - ,{2568,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_116[4] = { - {2569,sizes_2, _typeSignal} - ,{2573,sizes_0, _typeSignal} - ,{2571,sizes_2, _typeSignal} - ,{2574,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_157[4] = { - {2575,sizes_2, _typeSignal} - ,{2577,sizes_2, _typeSignal} - ,{2581,sizes_0, _typeSignal} - ,{2579,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_158[4] = { - {2582,sizes_2, _typeSignal} - ,{2584,sizes_2, _typeSignal} - ,{2588,sizes_0, _typeSignal} - ,{2586,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_159[4] = { - {2589,sizes_2, _typeSignal} - ,{2591,sizes_2, _typeSignal} - ,{2595,sizes_0, _typeSignal} - ,{2593,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_160[4] = { - {2596,sizes_2, _typeSignal} - ,{2598,sizes_2, _typeSignal} - ,{2602,sizes_0, _typeSignal} - ,{2600,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_161[4] = { - {2603,sizes_2, _typeSignal} - ,{2605,sizes_2, _typeSignal} - ,{2609,sizes_0, _typeSignal} - ,{2607,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_162[4] = { - {2610,sizes_2, _typeSignal} - ,{2612,sizes_2, _typeSignal} - ,{2616,sizes_0, _typeSignal} - ,{2614,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_19[12] = { - {2681,sizes_2, _typeSignal} - ,{2679,sizes_2, _typeSignal} - ,{2677,sizes_2, _typeSignal} - ,{2675,sizes_2, _typeSignal} - ,{2673,sizes_2, _typeSignal} - ,{2671,sizes_2, _typeSignal} - ,{2669,sizes_2, _typeSignal} - ,{2667,sizes_2, _typeSignal} - ,{2646,sizes_2_8, _typeSignal} - ,{2665,sizes_2, _typeSignal} - ,{2662,sizes_3, _typeSignal} - ,{2683,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_117[4] = { - {2684,sizes_2, _typeSignal} - ,{2688,sizes_0, _typeSignal} - ,{2686,sizes_2, _typeSignal} - ,{2689,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_163[4] = { - {2690,sizes_2, _typeSignal} - ,{2692,sizes_2, _typeSignal} - ,{2696,sizes_0, _typeSignal} - ,{2694,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_164[4] = { - {2697,sizes_2, _typeSignal} - ,{2699,sizes_2, _typeSignal} - ,{2703,sizes_0, _typeSignal} - ,{2701,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_165[4] = { - {2704,sizes_2, _typeSignal} - ,{2706,sizes_2, _typeSignal} - ,{2710,sizes_0, _typeSignal} - ,{2708,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_166[4] = { - {2711,sizes_2, _typeSignal} - ,{2713,sizes_2, _typeSignal} - ,{2717,sizes_0, _typeSignal} - ,{2715,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_167[4] = { - {2718,sizes_2, _typeSignal} - ,{2720,sizes_2, _typeSignal} - ,{2724,sizes_0, _typeSignal} - ,{2722,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_168[4] = { - {2725,sizes_2, _typeSignal} - ,{2727,sizes_2, _typeSignal} - ,{2731,sizes_0, _typeSignal} - ,{2729,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_20[12] = { - {2796,sizes_2, _typeSignal} - ,{2794,sizes_2, _typeSignal} - ,{2792,sizes_2, _typeSignal} - ,{2790,sizes_2, _typeSignal} - ,{2788,sizes_2, _typeSignal} - ,{2786,sizes_2, _typeSignal} - ,{2784,sizes_2, _typeSignal} - ,{2782,sizes_2, _typeSignal} - ,{2761,sizes_2_8, _typeSignal} - ,{2780,sizes_2, _typeSignal} - ,{2777,sizes_3, _typeSignal} - ,{2798,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_118[4] = { - {2799,sizes_2, _typeSignal} - ,{2803,sizes_0, _typeSignal} - ,{2801,sizes_2, _typeSignal} - ,{2804,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_169[4] = { - {2805,sizes_2, _typeSignal} - ,{2807,sizes_2, _typeSignal} - ,{2811,sizes_0, _typeSignal} - ,{2809,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_170[4] = { - {2812,sizes_2, _typeSignal} - ,{2814,sizes_2, _typeSignal} - ,{2818,sizes_0, _typeSignal} - ,{2816,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_171[4] = { - {2819,sizes_2, _typeSignal} - ,{2821,sizes_2, _typeSignal} - ,{2825,sizes_0, _typeSignal} - ,{2823,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_172[4] = { - {2826,sizes_2, _typeSignal} - ,{2828,sizes_2, _typeSignal} - ,{2832,sizes_0, _typeSignal} - ,{2830,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_173[4] = { - {2833,sizes_2, _typeSignal} - ,{2835,sizes_2, _typeSignal} - ,{2839,sizes_0, _typeSignal} - ,{2837,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_174[4] = { - {2840,sizes_2, _typeSignal} - ,{2842,sizes_2, _typeSignal} - ,{2846,sizes_0, _typeSignal} - ,{2844,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_21[12] = { - {2911,sizes_2, _typeSignal} - ,{2909,sizes_2, _typeSignal} - ,{2907,sizes_2, _typeSignal} - ,{2905,sizes_2, _typeSignal} - ,{2903,sizes_2, _typeSignal} - ,{2901,sizes_2, _typeSignal} - ,{2899,sizes_2, _typeSignal} - ,{2897,sizes_2, _typeSignal} - ,{2876,sizes_2_8, _typeSignal} - ,{2895,sizes_2, _typeSignal} - ,{2892,sizes_3, _typeSignal} - ,{2913,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_119[4] = { - {2914,sizes_2, _typeSignal} - ,{2918,sizes_0, _typeSignal} - ,{2916,sizes_2, _typeSignal} - ,{2919,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_175[4] = { - {2920,sizes_2, _typeSignal} - ,{2922,sizes_2, _typeSignal} - ,{2926,sizes_0, _typeSignal} - ,{2924,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_176[4] = { - {2927,sizes_2, _typeSignal} - ,{2929,sizes_2, _typeSignal} - ,{2933,sizes_0, _typeSignal} - ,{2931,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_177[4] = { - {2934,sizes_2, _typeSignal} - ,{2936,sizes_2, _typeSignal} - ,{2940,sizes_0, _typeSignal} - ,{2938,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_178[4] = { - {2941,sizes_2, _typeSignal} - ,{2943,sizes_2, _typeSignal} - ,{2947,sizes_0, _typeSignal} - ,{2945,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_179[4] = { - {2948,sizes_2, _typeSignal} - ,{2950,sizes_2, _typeSignal} - ,{2954,sizes_0, _typeSignal} - ,{2952,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_180[4] = { - {2955,sizes_2, _typeSignal} - ,{2957,sizes_2, _typeSignal} - ,{2961,sizes_0, _typeSignal} - ,{2959,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_22[12] = { - {3026,sizes_2, _typeSignal} - ,{3024,sizes_2, _typeSignal} - ,{3022,sizes_2, _typeSignal} - ,{3020,sizes_2, _typeSignal} - ,{3018,sizes_2, _typeSignal} - ,{3016,sizes_2, _typeSignal} - ,{3014,sizes_2, _typeSignal} - ,{3012,sizes_2, _typeSignal} - ,{2991,sizes_2_8, _typeSignal} - ,{3010,sizes_2, _typeSignal} - ,{3007,sizes_3, _typeSignal} - ,{3028,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_120[4] = { - {3029,sizes_2, _typeSignal} - ,{3033,sizes_0, _typeSignal} - ,{3031,sizes_2, _typeSignal} - ,{3034,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_181[4] = { - {3035,sizes_2, _typeSignal} - ,{3037,sizes_2, _typeSignal} - ,{3041,sizes_0, _typeSignal} - ,{3039,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_182[4] = { - {3042,sizes_2, _typeSignal} - ,{3044,sizes_2, _typeSignal} - ,{3048,sizes_0, _typeSignal} - ,{3046,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_183[4] = { - {3049,sizes_2, _typeSignal} - ,{3051,sizes_2, _typeSignal} - ,{3055,sizes_0, _typeSignal} - ,{3053,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_184[4] = { - {3056,sizes_2, _typeSignal} - ,{3058,sizes_2, _typeSignal} - ,{3062,sizes_0, _typeSignal} - ,{3060,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_185[4] = { - {3063,sizes_2, _typeSignal} - ,{3065,sizes_2, _typeSignal} - ,{3069,sizes_0, _typeSignal} - ,{3067,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_186[4] = { - {3070,sizes_2, _typeSignal} - ,{3072,sizes_2, _typeSignal} - ,{3076,sizes_0, _typeSignal} - ,{3074,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_23[12] = { - {3141,sizes_2, _typeSignal} - ,{3139,sizes_2, _typeSignal} - ,{3137,sizes_2, _typeSignal} - ,{3135,sizes_2, _typeSignal} - ,{3133,sizes_2, _typeSignal} - ,{3131,sizes_2, _typeSignal} - ,{3129,sizes_2, _typeSignal} - ,{3127,sizes_2, _typeSignal} - ,{3106,sizes_2_8, _typeSignal} - ,{3125,sizes_2, _typeSignal} - ,{3122,sizes_3, _typeSignal} - ,{3143,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_121[4] = { - {3144,sizes_2, _typeSignal} - ,{3148,sizes_0, _typeSignal} - ,{3146,sizes_2, _typeSignal} - ,{3149,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_187[4] = { - {3150,sizes_2, _typeSignal} - ,{3152,sizes_2, _typeSignal} - ,{3156,sizes_0, _typeSignal} - ,{3154,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_188[4] = { - {3157,sizes_2, _typeSignal} - ,{3159,sizes_2, _typeSignal} - ,{3163,sizes_0, _typeSignal} - ,{3161,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_189[4] = { - {3164,sizes_2, _typeSignal} - ,{3166,sizes_2, _typeSignal} - ,{3170,sizes_0, _typeSignal} - ,{3168,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_190[4] = { - {3171,sizes_2, _typeSignal} - ,{3173,sizes_2, _typeSignal} - ,{3177,sizes_0, _typeSignal} - ,{3175,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_191[4] = { - {3178,sizes_2, _typeSignal} - ,{3180,sizes_2, _typeSignal} - ,{3184,sizes_0, _typeSignal} - ,{3182,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_192[4] = { - {3185,sizes_2, _typeSignal} - ,{3187,sizes_2, _typeSignal} - ,{3191,sizes_0, _typeSignal} - ,{3189,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_24[12] = { - {3256,sizes_2, _typeSignal} - ,{3254,sizes_2, _typeSignal} - ,{3252,sizes_2, _typeSignal} - ,{3250,sizes_2, _typeSignal} - ,{3248,sizes_2, _typeSignal} - ,{3246,sizes_2, _typeSignal} - ,{3244,sizes_2, _typeSignal} - ,{3242,sizes_2, _typeSignal} - ,{3221,sizes_2_8, _typeSignal} - ,{3240,sizes_2, _typeSignal} - ,{3237,sizes_3, _typeSignal} - ,{3258,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_122[4] = { - {3259,sizes_2, _typeSignal} - ,{3263,sizes_0, _typeSignal} - ,{3261,sizes_2, _typeSignal} - ,{3264,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_193[4] = { - {3265,sizes_2, _typeSignal} - ,{3267,sizes_2, _typeSignal} - ,{3271,sizes_0, _typeSignal} - ,{3269,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_194[4] = { - {3272,sizes_2, _typeSignal} - ,{3274,sizes_2, _typeSignal} - ,{3278,sizes_0, _typeSignal} - ,{3276,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_195[4] = { - {3279,sizes_2, _typeSignal} - ,{3281,sizes_2, _typeSignal} - ,{3285,sizes_0, _typeSignal} - ,{3283,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_196[4] = { - {3286,sizes_2, _typeSignal} - ,{3288,sizes_2, _typeSignal} - ,{3292,sizes_0, _typeSignal} - ,{3290,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_197[4] = { - {3293,sizes_2, _typeSignal} - ,{3295,sizes_2, _typeSignal} - ,{3299,sizes_0, _typeSignal} - ,{3297,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_198[4] = { - {3300,sizes_2, _typeSignal} - ,{3302,sizes_2, _typeSignal} - ,{3306,sizes_0, _typeSignal} - ,{3304,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_25[12] = { - {3371,sizes_2, _typeSignal} - ,{3369,sizes_2, _typeSignal} - ,{3367,sizes_2, _typeSignal} - ,{3365,sizes_2, _typeSignal} - ,{3363,sizes_2, _typeSignal} - ,{3361,sizes_2, _typeSignal} - ,{3359,sizes_2, _typeSignal} - ,{3357,sizes_2, _typeSignal} - ,{3336,sizes_2_8, _typeSignal} - ,{3355,sizes_2, _typeSignal} - ,{3352,sizes_3, _typeSignal} - ,{3373,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_123[4] = { - {3374,sizes_2, _typeSignal} - ,{3378,sizes_0, _typeSignal} - ,{3376,sizes_2, _typeSignal} - ,{3379,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_199[4] = { - {3380,sizes_2, _typeSignal} - ,{3382,sizes_2, _typeSignal} - ,{3386,sizes_0, _typeSignal} - ,{3384,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_200[4] = { - {3387,sizes_2, _typeSignal} - ,{3389,sizes_2, _typeSignal} - ,{3393,sizes_0, _typeSignal} - ,{3391,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_201[4] = { - {3394,sizes_2, _typeSignal} - ,{3396,sizes_2, _typeSignal} - ,{3400,sizes_0, _typeSignal} - ,{3398,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_202[4] = { - {3401,sizes_2, _typeSignal} - ,{3403,sizes_2, _typeSignal} - ,{3407,sizes_0, _typeSignal} - ,{3405,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_203[4] = { - {3408,sizes_2, _typeSignal} - ,{3410,sizes_2, _typeSignal} - ,{3414,sizes_0, _typeSignal} - ,{3412,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_204[4] = { - {3415,sizes_2, _typeSignal} - ,{3417,sizes_2, _typeSignal} - ,{3421,sizes_0, _typeSignal} - ,{3419,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_26[12] = { - {3486,sizes_2, _typeSignal} - ,{3484,sizes_2, _typeSignal} - ,{3482,sizes_2, _typeSignal} - ,{3480,sizes_2, _typeSignal} - ,{3478,sizes_2, _typeSignal} - ,{3476,sizes_2, _typeSignal} - ,{3474,sizes_2, _typeSignal} - ,{3472,sizes_2, _typeSignal} - ,{3451,sizes_2_8, _typeSignal} - ,{3470,sizes_2, _typeSignal} - ,{3467,sizes_3, _typeSignal} - ,{3488,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_124[4] = { - {3489,sizes_2, _typeSignal} - ,{3493,sizes_0, _typeSignal} - ,{3491,sizes_2, _typeSignal} - ,{3494,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_205[4] = { - {3495,sizes_2, _typeSignal} - ,{3497,sizes_2, _typeSignal} - ,{3501,sizes_0, _typeSignal} - ,{3499,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_206[4] = { - {3502,sizes_2, _typeSignal} - ,{3504,sizes_2, _typeSignal} - ,{3508,sizes_0, _typeSignal} - ,{3506,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_207[4] = { - {3509,sizes_2, _typeSignal} - ,{3511,sizes_2, _typeSignal} - ,{3515,sizes_0, _typeSignal} - ,{3513,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_208[4] = { - {3516,sizes_2, _typeSignal} - ,{3518,sizes_2, _typeSignal} - ,{3522,sizes_0, _typeSignal} - ,{3520,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_209[4] = { - {3523,sizes_2, _typeSignal} - ,{3525,sizes_2, _typeSignal} - ,{3529,sizes_0, _typeSignal} - ,{3527,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_210[4] = { - {3530,sizes_2, _typeSignal} - ,{3532,sizes_2, _typeSignal} - ,{3536,sizes_0, _typeSignal} - ,{3534,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_27[12] = { - {3601,sizes_2, _typeSignal} - ,{3599,sizes_2, _typeSignal} - ,{3597,sizes_2, _typeSignal} - ,{3595,sizes_2, _typeSignal} - ,{3593,sizes_2, _typeSignal} - ,{3591,sizes_2, _typeSignal} - ,{3589,sizes_2, _typeSignal} - ,{3587,sizes_2, _typeSignal} - ,{3566,sizes_2_8, _typeSignal} - ,{3585,sizes_2, _typeSignal} - ,{3582,sizes_3, _typeSignal} - ,{3603,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_125[4] = { - {3604,sizes_2, _typeSignal} - ,{3608,sizes_0, _typeSignal} - ,{3606,sizes_2, _typeSignal} - ,{3609,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_211[4] = { - {3610,sizes_2, _typeSignal} - ,{3612,sizes_2, _typeSignal} - ,{3616,sizes_0, _typeSignal} - ,{3614,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_212[4] = { - {3617,sizes_2, _typeSignal} - ,{3619,sizes_2, _typeSignal} - ,{3623,sizes_0, _typeSignal} - ,{3621,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_213[4] = { - {3624,sizes_2, _typeSignal} - ,{3626,sizes_2, _typeSignal} - ,{3630,sizes_0, _typeSignal} - ,{3628,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_214[4] = { - {3631,sizes_2, _typeSignal} - ,{3633,sizes_2, _typeSignal} - ,{3637,sizes_0, _typeSignal} - ,{3635,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_215[4] = { - {3638,sizes_2, _typeSignal} - ,{3640,sizes_2, _typeSignal} - ,{3644,sizes_0, _typeSignal} - ,{3642,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_216[4] = { - {3645,sizes_2, _typeSignal} - ,{3647,sizes_2, _typeSignal} - ,{3651,sizes_0, _typeSignal} - ,{3649,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_28[12] = { - {3716,sizes_2, _typeSignal} - ,{3714,sizes_2, _typeSignal} - ,{3712,sizes_2, _typeSignal} - ,{3710,sizes_2, _typeSignal} - ,{3708,sizes_2, _typeSignal} - ,{3706,sizes_2, _typeSignal} - ,{3704,sizes_2, _typeSignal} - ,{3702,sizes_2, _typeSignal} - ,{3681,sizes_2_8, _typeSignal} - ,{3700,sizes_2, _typeSignal} - ,{3697,sizes_3, _typeSignal} - ,{3718,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_126[4] = { - {3719,sizes_2, _typeSignal} - ,{3723,sizes_0, _typeSignal} - ,{3721,sizes_2, _typeSignal} - ,{3724,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_217[4] = { - {3725,sizes_2, _typeSignal} - ,{3727,sizes_2, _typeSignal} - ,{3731,sizes_0, _typeSignal} - ,{3729,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_218[4] = { - {3732,sizes_2, _typeSignal} - ,{3734,sizes_2, _typeSignal} - ,{3738,sizes_0, _typeSignal} - ,{3736,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_219[4] = { - {3739,sizes_2, _typeSignal} - ,{3741,sizes_2, _typeSignal} - ,{3745,sizes_0, _typeSignal} - ,{3743,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_220[4] = { - {3746,sizes_2, _typeSignal} - ,{3748,sizes_2, _typeSignal} - ,{3752,sizes_0, _typeSignal} - ,{3750,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_221[4] = { - {3753,sizes_2, _typeSignal} - ,{3755,sizes_2, _typeSignal} - ,{3759,sizes_0, _typeSignal} - ,{3757,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_222[4] = { - {3760,sizes_2, _typeSignal} - ,{3762,sizes_2, _typeSignal} - ,{3766,sizes_0, _typeSignal} - ,{3764,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_29[12] = { - {3831,sizes_2, _typeSignal} - ,{3829,sizes_2, _typeSignal} - ,{3827,sizes_2, _typeSignal} - ,{3825,sizes_2, _typeSignal} - ,{3823,sizes_2, _typeSignal} - ,{3821,sizes_2, _typeSignal} - ,{3819,sizes_2, _typeSignal} - ,{3817,sizes_2, _typeSignal} - ,{3796,sizes_2_8, _typeSignal} - ,{3815,sizes_2, _typeSignal} - ,{3812,sizes_3, _typeSignal} - ,{3833,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_127[4] = { - {3834,sizes_2, _typeSignal} - ,{3838,sizes_0, _typeSignal} - ,{3836,sizes_2, _typeSignal} - ,{3839,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_223[4] = { - {3840,sizes_2, _typeSignal} - ,{3842,sizes_2, _typeSignal} - ,{3846,sizes_0, _typeSignal} - ,{3844,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_224[4] = { - {3847,sizes_2, _typeSignal} - ,{3849,sizes_2, _typeSignal} - ,{3853,sizes_0, _typeSignal} - ,{3851,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_225[4] = { - {3854,sizes_2, _typeSignal} - ,{3856,sizes_2, _typeSignal} - ,{3860,sizes_0, _typeSignal} - ,{3858,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_226[4] = { - {3861,sizes_2, _typeSignal} - ,{3863,sizes_2, _typeSignal} - ,{3867,sizes_0, _typeSignal} - ,{3865,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_227[4] = { - {3868,sizes_2, _typeSignal} - ,{3870,sizes_2, _typeSignal} - ,{3874,sizes_0, _typeSignal} - ,{3872,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_228[4] = { - {3875,sizes_2, _typeSignal} - ,{3877,sizes_2, _typeSignal} - ,{3881,sizes_0, _typeSignal} - ,{3879,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_30[12] = { - {3946,sizes_2, _typeSignal} - ,{3944,sizes_2, _typeSignal} - ,{3942,sizes_2, _typeSignal} - ,{3940,sizes_2, _typeSignal} - ,{3938,sizes_2, _typeSignal} - ,{3936,sizes_2, _typeSignal} - ,{3934,sizes_2, _typeSignal} - ,{3932,sizes_2, _typeSignal} - ,{3911,sizes_2_8, _typeSignal} - ,{3930,sizes_2, _typeSignal} - ,{3927,sizes_3, _typeSignal} - ,{3948,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_128[4] = { - {3949,sizes_2, _typeSignal} - ,{3953,sizes_0, _typeSignal} - ,{3951,sizes_2, _typeSignal} - ,{3954,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_229[4] = { - {3955,sizes_2, _typeSignal} - ,{3957,sizes_2, _typeSignal} - ,{3961,sizes_0, _typeSignal} - ,{3959,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_230[4] = { - {3962,sizes_2, _typeSignal} - ,{3964,sizes_2, _typeSignal} - ,{3968,sizes_0, _typeSignal} - ,{3966,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_231[4] = { - {3969,sizes_2, _typeSignal} - ,{3971,sizes_2, _typeSignal} - ,{3975,sizes_0, _typeSignal} - ,{3973,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_232[4] = { - {3976,sizes_2, _typeSignal} - ,{3978,sizes_2, _typeSignal} - ,{3982,sizes_0, _typeSignal} - ,{3980,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_233[4] = { - {3983,sizes_2, _typeSignal} - ,{3985,sizes_2, _typeSignal} - ,{3989,sizes_0, _typeSignal} - ,{3987,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_234[4] = { - {3990,sizes_2, _typeSignal} - ,{3992,sizes_2, _typeSignal} - ,{3996,sizes_0, _typeSignal} - ,{3994,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_31[12] = { - {4061,sizes_2, _typeSignal} - ,{4059,sizes_2, _typeSignal} - ,{4057,sizes_2, _typeSignal} - ,{4055,sizes_2, _typeSignal} - ,{4053,sizes_2, _typeSignal} - ,{4051,sizes_2, _typeSignal} - ,{4049,sizes_2, _typeSignal} - ,{4047,sizes_2, _typeSignal} - ,{4026,sizes_2_8, _typeSignal} - ,{4045,sizes_2, _typeSignal} - ,{4042,sizes_3, _typeSignal} - ,{4063,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_129[4] = { - {4064,sizes_2, _typeSignal} - ,{4068,sizes_0, _typeSignal} - ,{4066,sizes_2, _typeSignal} - ,{4069,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_235[4] = { - {4070,sizes_2, _typeSignal} - ,{4072,sizes_2, _typeSignal} - ,{4076,sizes_0, _typeSignal} - ,{4074,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_236[4] = { - {4077,sizes_2, _typeSignal} - ,{4079,sizes_2, _typeSignal} - ,{4083,sizes_0, _typeSignal} - ,{4081,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_237[4] = { - {4084,sizes_2, _typeSignal} - ,{4086,sizes_2, _typeSignal} - ,{4090,sizes_0, _typeSignal} - ,{4088,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_238[4] = { - {4091,sizes_2, _typeSignal} - ,{4093,sizes_2, _typeSignal} - ,{4097,sizes_0, _typeSignal} - ,{4095,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_239[4] = { - {4098,sizes_2, _typeSignal} - ,{4100,sizes_2, _typeSignal} - ,{4104,sizes_0, _typeSignal} - ,{4102,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_240[4] = { - {4105,sizes_2, _typeSignal} - ,{4107,sizes_2, _typeSignal} - ,{4111,sizes_0, _typeSignal} - ,{4109,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_32[12] = { - {4176,sizes_2, _typeSignal} - ,{4174,sizes_2, _typeSignal} - ,{4172,sizes_2, _typeSignal} - ,{4170,sizes_2, _typeSignal} - ,{4168,sizes_2, _typeSignal} - ,{4166,sizes_2, _typeSignal} - ,{4164,sizes_2, _typeSignal} - ,{4162,sizes_2, _typeSignal} - ,{4141,sizes_2_8, _typeSignal} - ,{4160,sizes_2, _typeSignal} - ,{4157,sizes_3, _typeSignal} - ,{4178,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_130[4] = { - {4179,sizes_2, _typeSignal} - ,{4183,sizes_0, _typeSignal} - ,{4181,sizes_2, _typeSignal} - ,{4184,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_241[4] = { - {4185,sizes_2, _typeSignal} - ,{4187,sizes_2, _typeSignal} - ,{4191,sizes_0, _typeSignal} - ,{4189,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_242[4] = { - {4192,sizes_2, _typeSignal} - ,{4194,sizes_2, _typeSignal} - ,{4198,sizes_0, _typeSignal} - ,{4196,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_243[4] = { - {4199,sizes_2, _typeSignal} - ,{4201,sizes_2, _typeSignal} - ,{4205,sizes_0, _typeSignal} - ,{4203,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_244[4] = { - {4206,sizes_2, _typeSignal} - ,{4208,sizes_2, _typeSignal} - ,{4212,sizes_0, _typeSignal} - ,{4210,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_245[4] = { - {4213,sizes_2, _typeSignal} - ,{4215,sizes_2, _typeSignal} - ,{4219,sizes_0, _typeSignal} - ,{4217,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_246[4] = { - {4220,sizes_2, _typeSignal} - ,{4222,sizes_2, _typeSignal} - ,{4226,sizes_0, _typeSignal} - ,{4224,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_33[12] = { - {4291,sizes_2, _typeSignal} - ,{4289,sizes_2, _typeSignal} - ,{4287,sizes_2, _typeSignal} - ,{4285,sizes_2, _typeSignal} - ,{4283,sizes_2, _typeSignal} - ,{4281,sizes_2, _typeSignal} - ,{4279,sizes_2, _typeSignal} - ,{4277,sizes_2, _typeSignal} - ,{4256,sizes_2_8, _typeSignal} - ,{4275,sizes_2, _typeSignal} - ,{4272,sizes_3, _typeSignal} - ,{4293,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_131[4] = { - {4294,sizes_2, _typeSignal} - ,{4298,sizes_0, _typeSignal} - ,{4296,sizes_2, _typeSignal} - ,{4299,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_247[4] = { - {4300,sizes_2, _typeSignal} - ,{4302,sizes_2, _typeSignal} - ,{4306,sizes_0, _typeSignal} - ,{4304,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_248[4] = { - {4307,sizes_2, _typeSignal} - ,{4309,sizes_2, _typeSignal} - ,{4313,sizes_0, _typeSignal} - ,{4311,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_249[4] = { - {4314,sizes_2, _typeSignal} - ,{4316,sizes_2, _typeSignal} - ,{4320,sizes_0, _typeSignal} - ,{4318,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_250[4] = { - {4321,sizes_2, _typeSignal} - ,{4323,sizes_2, _typeSignal} - ,{4327,sizes_0, _typeSignal} - ,{4325,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_251[4] = { - {4328,sizes_2, _typeSignal} - ,{4330,sizes_2, _typeSignal} - ,{4334,sizes_0, _typeSignal} - ,{4332,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_252[4] = { - {4335,sizes_2, _typeSignal} - ,{4337,sizes_2, _typeSignal} - ,{4341,sizes_0, _typeSignal} - ,{4339,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_34[12] = { - {4406,sizes_2, _typeSignal} - ,{4404,sizes_2, _typeSignal} - ,{4402,sizes_2, _typeSignal} - ,{4400,sizes_2, _typeSignal} - ,{4398,sizes_2, _typeSignal} - ,{4396,sizes_2, _typeSignal} - ,{4394,sizes_2, _typeSignal} - ,{4392,sizes_2, _typeSignal} - ,{4371,sizes_2_8, _typeSignal} - ,{4390,sizes_2, _typeSignal} - ,{4387,sizes_3, _typeSignal} - ,{4408,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_132[4] = { - {4409,sizes_2, _typeSignal} - ,{4413,sizes_0, _typeSignal} - ,{4411,sizes_2, _typeSignal} - ,{4414,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_253[4] = { - {4415,sizes_2, _typeSignal} - ,{4417,sizes_2, _typeSignal} - ,{4421,sizes_0, _typeSignal} - ,{4419,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_254[4] = { - {4422,sizes_2, _typeSignal} - ,{4424,sizes_2, _typeSignal} - ,{4428,sizes_0, _typeSignal} - ,{4426,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_255[4] = { - {4429,sizes_2, _typeSignal} - ,{4431,sizes_2, _typeSignal} - ,{4435,sizes_0, _typeSignal} - ,{4433,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_256[4] = { - {4436,sizes_2, _typeSignal} - ,{4438,sizes_2, _typeSignal} - ,{4442,sizes_0, _typeSignal} - ,{4440,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_257[4] = { - {4443,sizes_2, _typeSignal} - ,{4445,sizes_2, _typeSignal} - ,{4449,sizes_0, _typeSignal} - ,{4447,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_258[4] = { - {4450,sizes_2, _typeSignal} - ,{4452,sizes_2, _typeSignal} - ,{4456,sizes_0, _typeSignal} - ,{4454,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_35[12] = { - {4521,sizes_2, _typeSignal} - ,{4519,sizes_2, _typeSignal} - ,{4517,sizes_2, _typeSignal} - ,{4515,sizes_2, _typeSignal} - ,{4513,sizes_2, _typeSignal} - ,{4511,sizes_2, _typeSignal} - ,{4509,sizes_2, _typeSignal} - ,{4507,sizes_2, _typeSignal} - ,{4486,sizes_2_8, _typeSignal} - ,{4505,sizes_2, _typeSignal} - ,{4502,sizes_3, _typeSignal} - ,{4523,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_133[4] = { - {4524,sizes_2, _typeSignal} - ,{4528,sizes_0, _typeSignal} - ,{4526,sizes_2, _typeSignal} - ,{4529,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_259[4] = { - {4530,sizes_2, _typeSignal} - ,{4532,sizes_2, _typeSignal} - ,{4536,sizes_0, _typeSignal} - ,{4534,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_260[4] = { - {4537,sizes_2, _typeSignal} - ,{4539,sizes_2, _typeSignal} - ,{4543,sizes_0, _typeSignal} - ,{4541,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_261[4] = { - {4544,sizes_2, _typeSignal} - ,{4546,sizes_2, _typeSignal} - ,{4550,sizes_0, _typeSignal} - ,{4548,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_262[4] = { - {4551,sizes_2, _typeSignal} - ,{4553,sizes_2, _typeSignal} - ,{4557,sizes_0, _typeSignal} - ,{4555,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_263[4] = { - {4558,sizes_2, _typeSignal} - ,{4560,sizes_2, _typeSignal} - ,{4564,sizes_0, _typeSignal} - ,{4562,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_264[4] = { - {4565,sizes_2, _typeSignal} - ,{4567,sizes_2, _typeSignal} - ,{4571,sizes_0, _typeSignal} - ,{4569,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_36[12] = { - {4636,sizes_2, _typeSignal} - ,{4634,sizes_2, _typeSignal} - ,{4632,sizes_2, _typeSignal} - ,{4630,sizes_2, _typeSignal} - ,{4628,sizes_2, _typeSignal} - ,{4626,sizes_2, _typeSignal} - ,{4624,sizes_2, _typeSignal} - ,{4622,sizes_2, _typeSignal} - ,{4601,sizes_2_8, _typeSignal} - ,{4620,sizes_2, _typeSignal} - ,{4617,sizes_3, _typeSignal} - ,{4638,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_134[4] = { - {4639,sizes_2, _typeSignal} - ,{4643,sizes_0, _typeSignal} - ,{4641,sizes_2, _typeSignal} - ,{4644,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_265[4] = { - {4645,sizes_2, _typeSignal} - ,{4647,sizes_2, _typeSignal} - ,{4651,sizes_0, _typeSignal} - ,{4649,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_266[4] = { - {4652,sizes_2, _typeSignal} - ,{4654,sizes_2, _typeSignal} - ,{4658,sizes_0, _typeSignal} - ,{4656,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_267[4] = { - {4659,sizes_2, _typeSignal} - ,{4661,sizes_2, _typeSignal} - ,{4665,sizes_0, _typeSignal} - ,{4663,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_268[4] = { - {4666,sizes_2, _typeSignal} - ,{4668,sizes_2, _typeSignal} - ,{4672,sizes_0, _typeSignal} - ,{4670,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_269[4] = { - {4673,sizes_2, _typeSignal} - ,{4675,sizes_2, _typeSignal} - ,{4679,sizes_0, _typeSignal} - ,{4677,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_270[4] = { - {4680,sizes_2, _typeSignal} - ,{4682,sizes_2, _typeSignal} - ,{4686,sizes_0, _typeSignal} - ,{4684,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_37[12] = { - {4751,sizes_2, _typeSignal} - ,{4749,sizes_2, _typeSignal} - ,{4747,sizes_2, _typeSignal} - ,{4745,sizes_2, _typeSignal} - ,{4743,sizes_2, _typeSignal} - ,{4741,sizes_2, _typeSignal} - ,{4739,sizes_2, _typeSignal} - ,{4737,sizes_2, _typeSignal} - ,{4716,sizes_2_8, _typeSignal} - ,{4735,sizes_2, _typeSignal} - ,{4732,sizes_3, _typeSignal} - ,{4753,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_135[4] = { - {4754,sizes_2, _typeSignal} - ,{4758,sizes_0, _typeSignal} - ,{4756,sizes_2, _typeSignal} - ,{4759,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_271[4] = { - {4760,sizes_2, _typeSignal} - ,{4762,sizes_2, _typeSignal} - ,{4766,sizes_0, _typeSignal} - ,{4764,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_272[4] = { - {4767,sizes_2, _typeSignal} - ,{4769,sizes_2, _typeSignal} - ,{4773,sizes_0, _typeSignal} - ,{4771,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_273[4] = { - {4774,sizes_2, _typeSignal} - ,{4776,sizes_2, _typeSignal} - ,{4780,sizes_0, _typeSignal} - ,{4778,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_274[4] = { - {4781,sizes_2, _typeSignal} - ,{4783,sizes_2, _typeSignal} - ,{4787,sizes_0, _typeSignal} - ,{4785,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_275[4] = { - {4788,sizes_2, _typeSignal} - ,{4790,sizes_2, _typeSignal} - ,{4794,sizes_0, _typeSignal} - ,{4792,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_276[4] = { - {4795,sizes_2, _typeSignal} - ,{4797,sizes_2, _typeSignal} - ,{4801,sizes_0, _typeSignal} - ,{4799,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_38[12] = { - {4866,sizes_2, _typeSignal} - ,{4864,sizes_2, _typeSignal} - ,{4862,sizes_2, _typeSignal} - ,{4860,sizes_2, _typeSignal} - ,{4858,sizes_2, _typeSignal} - ,{4856,sizes_2, _typeSignal} - ,{4854,sizes_2, _typeSignal} - ,{4852,sizes_2, _typeSignal} - ,{4831,sizes_2_8, _typeSignal} - ,{4850,sizes_2, _typeSignal} - ,{4847,sizes_3, _typeSignal} - ,{4868,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_136[4] = { - {4869,sizes_2, _typeSignal} - ,{4873,sizes_0, _typeSignal} - ,{4871,sizes_2, _typeSignal} - ,{4874,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_277[4] = { - {4875,sizes_2, _typeSignal} - ,{4877,sizes_2, _typeSignal} - ,{4881,sizes_0, _typeSignal} - ,{4879,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_278[4] = { - {4882,sizes_2, _typeSignal} - ,{4884,sizes_2, _typeSignal} - ,{4888,sizes_0, _typeSignal} - ,{4886,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_279[4] = { - {4889,sizes_2, _typeSignal} - ,{4891,sizes_2, _typeSignal} - ,{4895,sizes_0, _typeSignal} - ,{4893,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_280[4] = { - {4896,sizes_2, _typeSignal} - ,{4898,sizes_2, _typeSignal} - ,{4902,sizes_0, _typeSignal} - ,{4900,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_281[4] = { - {4903,sizes_2, _typeSignal} - ,{4905,sizes_2, _typeSignal} - ,{4909,sizes_0, _typeSignal} - ,{4907,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_282[4] = { - {4910,sizes_2, _typeSignal} - ,{4912,sizes_2, _typeSignal} - ,{4916,sizes_0, _typeSignal} - ,{4914,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_39[12] = { - {4981,sizes_2, _typeSignal} - ,{4979,sizes_2, _typeSignal} - ,{4977,sizes_2, _typeSignal} - ,{4975,sizes_2, _typeSignal} - ,{4973,sizes_2, _typeSignal} - ,{4971,sizes_2, _typeSignal} - ,{4969,sizes_2, _typeSignal} - ,{4967,sizes_2, _typeSignal} - ,{4946,sizes_2_8, _typeSignal} - ,{4965,sizes_2, _typeSignal} - ,{4962,sizes_3, _typeSignal} - ,{4983,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_137[4] = { - {4984,sizes_2, _typeSignal} - ,{4988,sizes_0, _typeSignal} - ,{4986,sizes_2, _typeSignal} - ,{4989,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_283[4] = { - {4990,sizes_2, _typeSignal} - ,{4992,sizes_2, _typeSignal} - ,{4996,sizes_0, _typeSignal} - ,{4994,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_284[4] = { - {4997,sizes_2, _typeSignal} - ,{4999,sizes_2, _typeSignal} - ,{5003,sizes_0, _typeSignal} - ,{5001,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_285[4] = { - {5004,sizes_2, _typeSignal} - ,{5006,sizes_2, _typeSignal} - ,{5010,sizes_0, _typeSignal} - ,{5008,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_286[4] = { - {5011,sizes_2, _typeSignal} - ,{5013,sizes_2, _typeSignal} - ,{5017,sizes_0, _typeSignal} - ,{5015,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_287[4] = { - {5018,sizes_2, _typeSignal} - ,{5020,sizes_2, _typeSignal} - ,{5024,sizes_0, _typeSignal} - ,{5022,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_288[4] = { - {5025,sizes_2, _typeSignal} - ,{5027,sizes_2, _typeSignal} - ,{5031,sizes_0, _typeSignal} - ,{5029,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_40[12] = { - {5096,sizes_2, _typeSignal} - ,{5094,sizes_2, _typeSignal} - ,{5092,sizes_2, _typeSignal} - ,{5090,sizes_2, _typeSignal} - ,{5088,sizes_2, _typeSignal} - ,{5086,sizes_2, _typeSignal} - ,{5084,sizes_2, _typeSignal} - ,{5082,sizes_2, _typeSignal} - ,{5061,sizes_2_8, _typeSignal} - ,{5080,sizes_2, _typeSignal} - ,{5077,sizes_3, _typeSignal} - ,{5098,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_138[4] = { - {5099,sizes_2, _typeSignal} - ,{5103,sizes_0, _typeSignal} - ,{5101,sizes_2, _typeSignal} - ,{5104,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_289[4] = { - {5105,sizes_2, _typeSignal} - ,{5107,sizes_2, _typeSignal} - ,{5111,sizes_0, _typeSignal} - ,{5109,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_290[4] = { - {5112,sizes_2, _typeSignal} - ,{5114,sizes_2, _typeSignal} - ,{5118,sizes_0, _typeSignal} - ,{5116,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_291[4] = { - {5119,sizes_2, _typeSignal} - ,{5121,sizes_2, _typeSignal} - ,{5125,sizes_0, _typeSignal} - ,{5123,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_292[4] = { - {5126,sizes_2, _typeSignal} - ,{5128,sizes_2, _typeSignal} - ,{5132,sizes_0, _typeSignal} - ,{5130,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_293[4] = { - {5133,sizes_2, _typeSignal} - ,{5135,sizes_2, _typeSignal} - ,{5139,sizes_0, _typeSignal} - ,{5137,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_294[4] = { - {5140,sizes_2, _typeSignal} - ,{5142,sizes_2, _typeSignal} - ,{5146,sizes_0, _typeSignal} - ,{5144,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_41[12] = { - {5211,sizes_2, _typeSignal} - ,{5209,sizes_2, _typeSignal} - ,{5207,sizes_2, _typeSignal} - ,{5205,sizes_2, _typeSignal} - ,{5203,sizes_2, _typeSignal} - ,{5201,sizes_2, _typeSignal} - ,{5199,sizes_2, _typeSignal} - ,{5197,sizes_2, _typeSignal} - ,{5176,sizes_2_8, _typeSignal} - ,{5195,sizes_2, _typeSignal} - ,{5192,sizes_3, _typeSignal} - ,{5213,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_139[4] = { - {5214,sizes_2, _typeSignal} - ,{5218,sizes_0, _typeSignal} - ,{5216,sizes_2, _typeSignal} - ,{5219,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_295[4] = { - {5220,sizes_2, _typeSignal} - ,{5222,sizes_2, _typeSignal} - ,{5226,sizes_0, _typeSignal} - ,{5224,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_296[4] = { - {5227,sizes_2, _typeSignal} - ,{5229,sizes_2, _typeSignal} - ,{5233,sizes_0, _typeSignal} - ,{5231,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_297[4] = { - {5234,sizes_2, _typeSignal} - ,{5236,sizes_2, _typeSignal} - ,{5240,sizes_0, _typeSignal} - ,{5238,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_298[4] = { - {5241,sizes_2, _typeSignal} - ,{5243,sizes_2, _typeSignal} - ,{5247,sizes_0, _typeSignal} - ,{5245,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_299[4] = { - {5248,sizes_2, _typeSignal} - ,{5250,sizes_2, _typeSignal} - ,{5254,sizes_0, _typeSignal} - ,{5252,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_300[4] = { - {5255,sizes_2, _typeSignal} - ,{5257,sizes_2, _typeSignal} - ,{5261,sizes_0, _typeSignal} - ,{5259,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_42[12] = { - {5326,sizes_2, _typeSignal} - ,{5324,sizes_2, _typeSignal} - ,{5322,sizes_2, _typeSignal} - ,{5320,sizes_2, _typeSignal} - ,{5318,sizes_2, _typeSignal} - ,{5316,sizes_2, _typeSignal} - ,{5314,sizes_2, _typeSignal} - ,{5312,sizes_2, _typeSignal} - ,{5291,sizes_2_8, _typeSignal} - ,{5310,sizes_2, _typeSignal} - ,{5307,sizes_3, _typeSignal} - ,{5328,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_140[4] = { - {5329,sizes_2, _typeSignal} - ,{5333,sizes_0, _typeSignal} - ,{5331,sizes_2, _typeSignal} - ,{5334,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_301[4] = { - {5335,sizes_2, _typeSignal} - ,{5337,sizes_2, _typeSignal} - ,{5341,sizes_0, _typeSignal} - ,{5339,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_302[4] = { - {5342,sizes_2, _typeSignal} - ,{5344,sizes_2, _typeSignal} - ,{5348,sizes_0, _typeSignal} - ,{5346,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_303[4] = { - {5349,sizes_2, _typeSignal} - ,{5351,sizes_2, _typeSignal} - ,{5355,sizes_0, _typeSignal} - ,{5353,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_304[4] = { - {5356,sizes_2, _typeSignal} - ,{5358,sizes_2, _typeSignal} - ,{5362,sizes_0, _typeSignal} - ,{5360,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_305[4] = { - {5363,sizes_2, _typeSignal} - ,{5365,sizes_2, _typeSignal} - ,{5369,sizes_0, _typeSignal} - ,{5367,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_306[4] = { - {5370,sizes_2, _typeSignal} - ,{5372,sizes_2, _typeSignal} - ,{5376,sizes_0, _typeSignal} - ,{5374,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_43[12] = { - {5441,sizes_2, _typeSignal} - ,{5439,sizes_2, _typeSignal} - ,{5437,sizes_2, _typeSignal} - ,{5435,sizes_2, _typeSignal} - ,{5433,sizes_2, _typeSignal} - ,{5431,sizes_2, _typeSignal} - ,{5429,sizes_2, _typeSignal} - ,{5427,sizes_2, _typeSignal} - ,{5406,sizes_2_8, _typeSignal} - ,{5425,sizes_2, _typeSignal} - ,{5422,sizes_3, _typeSignal} - ,{5443,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_141[4] = { - {5444,sizes_2, _typeSignal} - ,{5448,sizes_0, _typeSignal} - ,{5446,sizes_2, _typeSignal} - ,{5449,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_307[4] = { - {5450,sizes_2, _typeSignal} - ,{5452,sizes_2, _typeSignal} - ,{5456,sizes_0, _typeSignal} - ,{5454,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_308[4] = { - {5457,sizes_2, _typeSignal} - ,{5459,sizes_2, _typeSignal} - ,{5463,sizes_0, _typeSignal} - ,{5461,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_309[4] = { - {5464,sizes_2, _typeSignal} - ,{5466,sizes_2, _typeSignal} - ,{5470,sizes_0, _typeSignal} - ,{5468,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_310[4] = { - {5471,sizes_2, _typeSignal} - ,{5473,sizes_2, _typeSignal} - ,{5477,sizes_0, _typeSignal} - ,{5475,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_311[4] = { - {5478,sizes_2, _typeSignal} - ,{5480,sizes_2, _typeSignal} - ,{5484,sizes_0, _typeSignal} - ,{5482,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_312[4] = { - {5485,sizes_2, _typeSignal} - ,{5487,sizes_2, _typeSignal} - ,{5491,sizes_0, _typeSignal} - ,{5489,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_44[12] = { - {5556,sizes_2, _typeSignal} - ,{5554,sizes_2, _typeSignal} - ,{5552,sizes_2, _typeSignal} - ,{5550,sizes_2, _typeSignal} - ,{5548,sizes_2, _typeSignal} - ,{5546,sizes_2, _typeSignal} - ,{5544,sizes_2, _typeSignal} - ,{5542,sizes_2, _typeSignal} - ,{5521,sizes_2_8, _typeSignal} - ,{5540,sizes_2, _typeSignal} - ,{5537,sizes_3, _typeSignal} - ,{5558,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_142[4] = { - {5559,sizes_2, _typeSignal} - ,{5563,sizes_0, _typeSignal} - ,{5561,sizes_2, _typeSignal} - ,{5564,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_313[4] = { - {5565,sizes_2, _typeSignal} - ,{5567,sizes_2, _typeSignal} - ,{5571,sizes_0, _typeSignal} - ,{5569,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_314[4] = { - {5572,sizes_2, _typeSignal} - ,{5574,sizes_2, _typeSignal} - ,{5578,sizes_0, _typeSignal} - ,{5576,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_315[4] = { - {5579,sizes_2, _typeSignal} - ,{5581,sizes_2, _typeSignal} - ,{5585,sizes_0, _typeSignal} - ,{5583,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_316[4] = { - {5586,sizes_2, _typeSignal} - ,{5588,sizes_2, _typeSignal} - ,{5592,sizes_0, _typeSignal} - ,{5590,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_317[4] = { - {5593,sizes_2, _typeSignal} - ,{5595,sizes_2, _typeSignal} - ,{5599,sizes_0, _typeSignal} - ,{5597,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_318[4] = { - {5600,sizes_2, _typeSignal} - ,{5602,sizes_2, _typeSignal} - ,{5606,sizes_0, _typeSignal} - ,{5604,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_45[12] = { - {5671,sizes_2, _typeSignal} - ,{5669,sizes_2, _typeSignal} - ,{5667,sizes_2, _typeSignal} - ,{5665,sizes_2, _typeSignal} - ,{5663,sizes_2, _typeSignal} - ,{5661,sizes_2, _typeSignal} - ,{5659,sizes_2, _typeSignal} - ,{5657,sizes_2, _typeSignal} - ,{5636,sizes_2_8, _typeSignal} - ,{5655,sizes_2, _typeSignal} - ,{5652,sizes_3, _typeSignal} - ,{5673,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_143[4] = { - {5674,sizes_2, _typeSignal} - ,{5678,sizes_0, _typeSignal} - ,{5676,sizes_2, _typeSignal} - ,{5679,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_319[4] = { - {5680,sizes_2, _typeSignal} - ,{5682,sizes_2, _typeSignal} - ,{5686,sizes_0, _typeSignal} - ,{5684,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_320[4] = { - {5687,sizes_2, _typeSignal} - ,{5689,sizes_2, _typeSignal} - ,{5693,sizes_0, _typeSignal} - ,{5691,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_321[4] = { - {5694,sizes_2, _typeSignal} - ,{5696,sizes_2, _typeSignal} - ,{5700,sizes_0, _typeSignal} - ,{5698,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_322[4] = { - {5701,sizes_2, _typeSignal} - ,{5703,sizes_2, _typeSignal} - ,{5707,sizes_0, _typeSignal} - ,{5705,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_323[4] = { - {5708,sizes_2, _typeSignal} - ,{5710,sizes_2, _typeSignal} - ,{5714,sizes_0, _typeSignal} - ,{5712,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_324[4] = { - {5715,sizes_2, _typeSignal} - ,{5717,sizes_2, _typeSignal} - ,{5721,sizes_0, _typeSignal} - ,{5719,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_46[12] = { - {5786,sizes_2, _typeSignal} - ,{5784,sizes_2, _typeSignal} - ,{5782,sizes_2, _typeSignal} - ,{5780,sizes_2, _typeSignal} - ,{5778,sizes_2, _typeSignal} - ,{5776,sizes_2, _typeSignal} - ,{5774,sizes_2, _typeSignal} - ,{5772,sizes_2, _typeSignal} - ,{5751,sizes_2_8, _typeSignal} - ,{5770,sizes_2, _typeSignal} - ,{5767,sizes_3, _typeSignal} - ,{5788,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_144[4] = { - {5789,sizes_2, _typeSignal} - ,{5793,sizes_0, _typeSignal} - ,{5791,sizes_2, _typeSignal} - ,{5794,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_325[4] = { - {5795,sizes_2, _typeSignal} - ,{5797,sizes_2, _typeSignal} - ,{5801,sizes_0, _typeSignal} - ,{5799,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_326[4] = { - {5802,sizes_2, _typeSignal} - ,{5804,sizes_2, _typeSignal} - ,{5808,sizes_0, _typeSignal} - ,{5806,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_327[4] = { - {5809,sizes_2, _typeSignal} - ,{5811,sizes_2, _typeSignal} - ,{5815,sizes_0, _typeSignal} - ,{5813,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_328[4] = { - {5816,sizes_2, _typeSignal} - ,{5818,sizes_2, _typeSignal} - ,{5822,sizes_0, _typeSignal} - ,{5820,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_329[4] = { - {5823,sizes_2, _typeSignal} - ,{5825,sizes_2, _typeSignal} - ,{5829,sizes_0, _typeSignal} - ,{5827,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_330[4] = { - {5830,sizes_2, _typeSignal} - ,{5832,sizes_2, _typeSignal} - ,{5836,sizes_0, _typeSignal} - ,{5834,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_47[12] = { - {5901,sizes_2, _typeSignal} - ,{5899,sizes_2, _typeSignal} - ,{5897,sizes_2, _typeSignal} - ,{5895,sizes_2, _typeSignal} - ,{5893,sizes_2, _typeSignal} - ,{5891,sizes_2, _typeSignal} - ,{5889,sizes_2, _typeSignal} - ,{5887,sizes_2, _typeSignal} - ,{5866,sizes_2_8, _typeSignal} - ,{5885,sizes_2, _typeSignal} - ,{5882,sizes_3, _typeSignal} - ,{5903,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_145[4] = { - {5904,sizes_2, _typeSignal} - ,{5908,sizes_0, _typeSignal} - ,{5906,sizes_2, _typeSignal} - ,{5909,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_331[4] = { - {5910,sizes_2, _typeSignal} - ,{5912,sizes_2, _typeSignal} - ,{5916,sizes_0, _typeSignal} - ,{5914,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_332[4] = { - {5917,sizes_2, _typeSignal} - ,{5919,sizes_2, _typeSignal} - ,{5923,sizes_0, _typeSignal} - ,{5921,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_333[4] = { - {5924,sizes_2, _typeSignal} - ,{5926,sizes_2, _typeSignal} - ,{5930,sizes_0, _typeSignal} - ,{5928,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_334[4] = { - {5931,sizes_2, _typeSignal} - ,{5933,sizes_2, _typeSignal} - ,{5937,sizes_0, _typeSignal} - ,{5935,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_335[4] = { - {5938,sizes_2, _typeSignal} - ,{5940,sizes_2, _typeSignal} - ,{5944,sizes_0, _typeSignal} - ,{5942,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_336[4] = { - {5945,sizes_2, _typeSignal} - ,{5947,sizes_2, _typeSignal} - ,{5951,sizes_0, _typeSignal} - ,{5949,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_48[12] = { - {6016,sizes_2, _typeSignal} - ,{6014,sizes_2, _typeSignal} - ,{6012,sizes_2, _typeSignal} - ,{6010,sizes_2, _typeSignal} - ,{6008,sizes_2, _typeSignal} - ,{6006,sizes_2, _typeSignal} - ,{6004,sizes_2, _typeSignal} - ,{6002,sizes_2, _typeSignal} - ,{5981,sizes_2_8, _typeSignal} - ,{6000,sizes_2, _typeSignal} - ,{5997,sizes_3, _typeSignal} - ,{6018,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_146[4] = { - {6019,sizes_2, _typeSignal} - ,{6023,sizes_0, _typeSignal} - ,{6021,sizes_2, _typeSignal} - ,{6024,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_337[4] = { - {6025,sizes_2, _typeSignal} - ,{6027,sizes_2, _typeSignal} - ,{6031,sizes_0, _typeSignal} - ,{6029,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_338[4] = { - {6032,sizes_2, _typeSignal} - ,{6034,sizes_2, _typeSignal} - ,{6038,sizes_0, _typeSignal} - ,{6036,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_339[4] = { - {6039,sizes_2, _typeSignal} - ,{6041,sizes_2, _typeSignal} - ,{6045,sizes_0, _typeSignal} - ,{6043,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_340[4] = { - {6046,sizes_2, _typeSignal} - ,{6048,sizes_2, _typeSignal} - ,{6052,sizes_0, _typeSignal} - ,{6050,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_341[4] = { - {6053,sizes_2, _typeSignal} - ,{6055,sizes_2, _typeSignal} - ,{6059,sizes_0, _typeSignal} - ,{6057,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_342[4] = { - {6060,sizes_2, _typeSignal} - ,{6062,sizes_2, _typeSignal} - ,{6066,sizes_0, _typeSignal} - ,{6064,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_49[12] = { - {6131,sizes_2, _typeSignal} - ,{6129,sizes_2, _typeSignal} - ,{6127,sizes_2, _typeSignal} - ,{6125,sizes_2, _typeSignal} - ,{6123,sizes_2, _typeSignal} - ,{6121,sizes_2, _typeSignal} - ,{6119,sizes_2, _typeSignal} - ,{6117,sizes_2, _typeSignal} - ,{6096,sizes_2_8, _typeSignal} - ,{6115,sizes_2, _typeSignal} - ,{6112,sizes_3, _typeSignal} - ,{6133,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_147[4] = { - {6134,sizes_2, _typeSignal} - ,{6138,sizes_0, _typeSignal} - ,{6136,sizes_2, _typeSignal} - ,{6139,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_343[4] = { - {6140,sizes_2, _typeSignal} - ,{6142,sizes_2, _typeSignal} - ,{6146,sizes_0, _typeSignal} - ,{6144,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_344[4] = { - {6147,sizes_2, _typeSignal} - ,{6149,sizes_2, _typeSignal} - ,{6153,sizes_0, _typeSignal} - ,{6151,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_345[4] = { - {6154,sizes_2, _typeSignal} - ,{6156,sizes_2, _typeSignal} - ,{6160,sizes_0, _typeSignal} - ,{6158,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_346[4] = { - {6161,sizes_2, _typeSignal} - ,{6163,sizes_2, _typeSignal} - ,{6167,sizes_0, _typeSignal} - ,{6165,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_347[4] = { - {6168,sizes_2, _typeSignal} - ,{6170,sizes_2, _typeSignal} - ,{6174,sizes_0, _typeSignal} - ,{6172,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_348[4] = { - {6175,sizes_2, _typeSignal} - ,{6177,sizes_2, _typeSignal} - ,{6181,sizes_0, _typeSignal} - ,{6179,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomery2Edwards[2] = { - {6201,sizes_2, _typeSignal} - ,{6203,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableEdwards2Montgomery_1[2] = { - {6265,sizes_2, _typeSignal} - ,{6267,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_50[12] = { - {659,sizes_0, _typeComponent} - ,{660,sizes_0, _typeComponent} - ,{661,sizes_0, _typeComponent} - ,{662,sizes_0, _typeComponent} - ,{663,sizes_0, _typeComponent} - ,{664,sizes_0, _typeComponent} - ,{6273,sizes_2, _typeSignal} - ,{658,sizes_0, _typeComponent} - ,{6269,sizes_4, _typeSignal} - ,{657,sizes_0, _typeComponent} - ,{6275,sizes_2, _typeSignal} - ,{6277,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_51[12] = { - {667,sizes_0, _typeComponent} - ,{668,sizes_0, _typeComponent} - ,{669,sizes_0, _typeComponent} - ,{670,sizes_0, _typeComponent} - ,{671,sizes_0, _typeComponent} - ,{672,sizes_0, _typeComponent} - ,{6369,sizes_2, _typeSignal} - ,{666,sizes_0, _typeComponent} - ,{6365,sizes_4, _typeSignal} - ,{665,sizes_0, _typeComponent} - ,{6371,sizes_2, _typeSignal} - ,{6373,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_52[12] = { - {675,sizes_0, _typeComponent} - ,{676,sizes_0, _typeComponent} - ,{677,sizes_0, _typeComponent} - ,{678,sizes_0, _typeComponent} - ,{679,sizes_0, _typeComponent} - ,{680,sizes_0, _typeComponent} - ,{6484,sizes_2, _typeSignal} - ,{674,sizes_0, _typeComponent} - ,{6480,sizes_4, _typeSignal} - ,{673,sizes_0, _typeComponent} - ,{6486,sizes_2, _typeSignal} - ,{6488,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_53[12] = { - {683,sizes_0, _typeComponent} - ,{684,sizes_0, _typeComponent} - ,{685,sizes_0, _typeComponent} - ,{686,sizes_0, _typeComponent} - ,{687,sizes_0, _typeComponent} - ,{688,sizes_0, _typeComponent} - ,{6599,sizes_2, _typeSignal} - ,{682,sizes_0, _typeComponent} - ,{6595,sizes_4, _typeSignal} - ,{681,sizes_0, _typeComponent} - ,{6601,sizes_2, _typeSignal} - ,{6603,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_54[12] = { - {691,sizes_0, _typeComponent} - ,{692,sizes_0, _typeComponent} - ,{693,sizes_0, _typeComponent} - ,{694,sizes_0, _typeComponent} - ,{695,sizes_0, _typeComponent} - ,{696,sizes_0, _typeComponent} - ,{6714,sizes_2, _typeSignal} - ,{690,sizes_0, _typeComponent} - ,{6710,sizes_4, _typeSignal} - ,{689,sizes_0, _typeComponent} - ,{6716,sizes_2, _typeSignal} - ,{6718,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_55[12] = { - {699,sizes_0, _typeComponent} - ,{700,sizes_0, _typeComponent} - ,{701,sizes_0, _typeComponent} - ,{702,sizes_0, _typeComponent} - ,{703,sizes_0, _typeComponent} - ,{704,sizes_0, _typeComponent} - ,{6829,sizes_2, _typeSignal} - ,{698,sizes_0, _typeComponent} - ,{6825,sizes_4, _typeSignal} - ,{697,sizes_0, _typeComponent} - ,{6831,sizes_2, _typeSignal} - ,{6833,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_56[12] = { - {707,sizes_0, _typeComponent} - ,{708,sizes_0, _typeComponent} - ,{709,sizes_0, _typeComponent} - ,{710,sizes_0, _typeComponent} - ,{711,sizes_0, _typeComponent} - ,{712,sizes_0, _typeComponent} - ,{6944,sizes_2, _typeSignal} - ,{706,sizes_0, _typeComponent} - ,{6940,sizes_4, _typeSignal} - ,{705,sizes_0, _typeComponent} - ,{6946,sizes_2, _typeSignal} - ,{6948,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_57[12] = { - {715,sizes_0, _typeComponent} - ,{716,sizes_0, _typeComponent} - ,{717,sizes_0, _typeComponent} - ,{718,sizes_0, _typeComponent} - ,{719,sizes_0, _typeComponent} - ,{720,sizes_0, _typeComponent} - ,{7059,sizes_2, _typeSignal} - ,{714,sizes_0, _typeComponent} - ,{7055,sizes_4, _typeSignal} - ,{713,sizes_0, _typeComponent} - ,{7061,sizes_2, _typeSignal} - ,{7063,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_58[12] = { - {723,sizes_0, _typeComponent} - ,{724,sizes_0, _typeComponent} - ,{725,sizes_0, _typeComponent} - ,{726,sizes_0, _typeComponent} - ,{727,sizes_0, _typeComponent} - ,{728,sizes_0, _typeComponent} - ,{7174,sizes_2, _typeSignal} - ,{722,sizes_0, _typeComponent} - ,{7170,sizes_4, _typeSignal} - ,{721,sizes_0, _typeComponent} - ,{7176,sizes_2, _typeSignal} - ,{7178,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_59[12] = { - {731,sizes_0, _typeComponent} - ,{732,sizes_0, _typeComponent} - ,{733,sizes_0, _typeComponent} - ,{734,sizes_0, _typeComponent} - ,{735,sizes_0, _typeComponent} - ,{736,sizes_0, _typeComponent} - ,{7289,sizes_2, _typeSignal} - ,{730,sizes_0, _typeComponent} - ,{7285,sizes_4, _typeSignal} - ,{729,sizes_0, _typeComponent} - ,{7291,sizes_2, _typeSignal} - ,{7293,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_60[12] = { - {739,sizes_0, _typeComponent} - ,{740,sizes_0, _typeComponent} - ,{741,sizes_0, _typeComponent} - ,{742,sizes_0, _typeComponent} - ,{743,sizes_0, _typeComponent} - ,{744,sizes_0, _typeComponent} - ,{7404,sizes_2, _typeSignal} - ,{738,sizes_0, _typeComponent} - ,{7400,sizes_4, _typeSignal} - ,{737,sizes_0, _typeComponent} - ,{7406,sizes_2, _typeSignal} - ,{7408,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_61[12] = { - {747,sizes_0, _typeComponent} - ,{748,sizes_0, _typeComponent} - ,{749,sizes_0, _typeComponent} - ,{750,sizes_0, _typeComponent} - ,{751,sizes_0, _typeComponent} - ,{752,sizes_0, _typeComponent} - ,{7519,sizes_2, _typeSignal} - ,{746,sizes_0, _typeComponent} - ,{7515,sizes_4, _typeSignal} - ,{745,sizes_0, _typeComponent} - ,{7521,sizes_2, _typeSignal} - ,{7523,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_62[12] = { - {755,sizes_0, _typeComponent} - ,{756,sizes_0, _typeComponent} - ,{757,sizes_0, _typeComponent} - ,{758,sizes_0, _typeComponent} - ,{759,sizes_0, _typeComponent} - ,{760,sizes_0, _typeComponent} - ,{7634,sizes_2, _typeSignal} - ,{754,sizes_0, _typeComponent} - ,{7630,sizes_4, _typeSignal} - ,{753,sizes_0, _typeComponent} - ,{7636,sizes_2, _typeSignal} - ,{7638,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableWindow4_63[12] = { - {763,sizes_0, _typeComponent} - ,{764,sizes_0, _typeComponent} - ,{765,sizes_0, _typeComponent} - ,{766,sizes_0, _typeComponent} - ,{767,sizes_0, _typeComponent} - ,{768,sizes_0, _typeComponent} - ,{7749,sizes_2, _typeSignal} - ,{762,sizes_0, _typeComponent} - ,{7745,sizes_4, _typeSignal} - ,{761,sizes_0, _typeComponent} - ,{7751,sizes_2, _typeSignal} - ,{7753,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_148[4] = { - {6461,sizes_2, _typeSignal} - ,{6465,sizes_0, _typeSignal} - ,{6463,sizes_2, _typeSignal} - ,{6466,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_149[4] = { - {6576,sizes_2, _typeSignal} - ,{6580,sizes_0, _typeSignal} - ,{6578,sizes_2, _typeSignal} - ,{6581,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_150[4] = { - {6691,sizes_2, _typeSignal} - ,{6695,sizes_0, _typeSignal} - ,{6693,sizes_2, _typeSignal} - ,{6696,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_151[4] = { - {6806,sizes_2, _typeSignal} - ,{6810,sizes_0, _typeSignal} - ,{6808,sizes_2, _typeSignal} - ,{6811,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_152[4] = { - {6921,sizes_2, _typeSignal} - ,{6925,sizes_0, _typeSignal} - ,{6923,sizes_2, _typeSignal} - ,{6926,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_153[4] = { - {7036,sizes_2, _typeSignal} - ,{7040,sizes_0, _typeSignal} - ,{7038,sizes_2, _typeSignal} - ,{7041,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_154[4] = { - {7151,sizes_2, _typeSignal} - ,{7155,sizes_0, _typeSignal} - ,{7153,sizes_2, _typeSignal} - ,{7156,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_155[4] = { - {7266,sizes_2, _typeSignal} - ,{7270,sizes_0, _typeSignal} - ,{7268,sizes_2, _typeSignal} - ,{7271,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_156[4] = { - {7381,sizes_2, _typeSignal} - ,{7385,sizes_0, _typeSignal} - ,{7383,sizes_2, _typeSignal} - ,{7386,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_157[4] = { - {7496,sizes_2, _typeSignal} - ,{7500,sizes_0, _typeSignal} - ,{7498,sizes_2, _typeSignal} - ,{7501,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_158[4] = { - {7611,sizes_2, _typeSignal} - ,{7615,sizes_0, _typeSignal} - ,{7613,sizes_2, _typeSignal} - ,{7616,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_159[4] = { - {7726,sizes_2, _typeSignal} - ,{7730,sizes_0, _typeSignal} - ,{7728,sizes_2, _typeSignal} - ,{7731,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_160[4] = { - {7841,sizes_2, _typeSignal} - ,{7845,sizes_0, _typeSignal} - ,{7843,sizes_2, _typeSignal} - ,{7846,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_161[4] = { - {6467,sizes_2, _typeSignal} - ,{6471,sizes_0, _typeSignal} - ,{6469,sizes_2, _typeSignal} - ,{6472,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_162[4] = { - {6582,sizes_2, _typeSignal} - ,{6586,sizes_0, _typeSignal} - ,{6584,sizes_2, _typeSignal} - ,{6587,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_163[4] = { - {6697,sizes_2, _typeSignal} - ,{6701,sizes_0, _typeSignal} - ,{6699,sizes_2, _typeSignal} - ,{6702,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_164[4] = { - {6812,sizes_2, _typeSignal} - ,{6816,sizes_0, _typeSignal} - ,{6814,sizes_2, _typeSignal} - ,{6817,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_165[4] = { - {6927,sizes_2, _typeSignal} - ,{6931,sizes_0, _typeSignal} - ,{6929,sizes_2, _typeSignal} - ,{6932,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_166[4] = { - {7042,sizes_2, _typeSignal} - ,{7046,sizes_0, _typeSignal} - ,{7044,sizes_2, _typeSignal} - ,{7047,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_167[4] = { - {7157,sizes_2, _typeSignal} - ,{7161,sizes_0, _typeSignal} - ,{7159,sizes_2, _typeSignal} - ,{7162,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_168[4] = { - {7272,sizes_2, _typeSignal} - ,{7276,sizes_0, _typeSignal} - ,{7274,sizes_2, _typeSignal} - ,{7277,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_169[4] = { - {7387,sizes_2, _typeSignal} - ,{7391,sizes_0, _typeSignal} - ,{7389,sizes_2, _typeSignal} - ,{7392,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_170[4] = { - {7502,sizes_2, _typeSignal} - ,{7506,sizes_0, _typeSignal} - ,{7504,sizes_2, _typeSignal} - ,{7507,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_171[4] = { - {7617,sizes_2, _typeSignal} - ,{7621,sizes_0, _typeSignal} - ,{7619,sizes_2, _typeSignal} - ,{7622,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_172[4] = { - {7732,sizes_2, _typeSignal} - ,{7736,sizes_0, _typeSignal} - ,{7734,sizes_2, _typeSignal} - ,{7737,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_173[4] = { - {7847,sizes_2, _typeSignal} - ,{7851,sizes_0, _typeSignal} - ,{7849,sizes_2, _typeSignal} - ,{7852,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_349[4] = { - {6473,sizes_2, _typeSignal} - ,{6475,sizes_2, _typeSignal} - ,{6479,sizes_0, _typeSignal} - ,{6477,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_350[4] = { - {6588,sizes_2, _typeSignal} - ,{6590,sizes_2, _typeSignal} - ,{6594,sizes_0, _typeSignal} - ,{6592,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_351[4] = { - {6703,sizes_2, _typeSignal} - ,{6705,sizes_2, _typeSignal} - ,{6709,sizes_0, _typeSignal} - ,{6707,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_352[4] = { - {6818,sizes_2, _typeSignal} - ,{6820,sizes_2, _typeSignal} - ,{6824,sizes_0, _typeSignal} - ,{6822,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_353[4] = { - {6933,sizes_2, _typeSignal} - ,{6935,sizes_2, _typeSignal} - ,{6939,sizes_0, _typeSignal} - ,{6937,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_354[4] = { - {7048,sizes_2, _typeSignal} - ,{7050,sizes_2, _typeSignal} - ,{7054,sizes_0, _typeSignal} - ,{7052,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_355[4] = { - {7163,sizes_2, _typeSignal} - ,{7165,sizes_2, _typeSignal} - ,{7169,sizes_0, _typeSignal} - ,{7167,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_356[4] = { - {7278,sizes_2, _typeSignal} - ,{7280,sizes_2, _typeSignal} - ,{7284,sizes_0, _typeSignal} - ,{7282,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_357[4] = { - {7393,sizes_2, _typeSignal} - ,{7395,sizes_2, _typeSignal} - ,{7399,sizes_0, _typeSignal} - ,{7397,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_358[4] = { - {7508,sizes_2, _typeSignal} - ,{7510,sizes_2, _typeSignal} - ,{7514,sizes_0, _typeSignal} - ,{7512,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_359[4] = { - {7623,sizes_2, _typeSignal} - ,{7625,sizes_2, _typeSignal} - ,{7629,sizes_0, _typeSignal} - ,{7627,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_360[4] = { - {7738,sizes_2, _typeSignal} - ,{7740,sizes_2, _typeSignal} - ,{7744,sizes_0, _typeSignal} - ,{7742,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_361[4] = { - {7853,sizes_2, _typeSignal} - ,{7855,sizes_2, _typeSignal} - ,{7859,sizes_0, _typeSignal} - ,{7857,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_50[12] = { - {6314,sizes_2, _typeSignal} - ,{6312,sizes_2, _typeSignal} - ,{6310,sizes_2, _typeSignal} - ,{6308,sizes_2, _typeSignal} - ,{6306,sizes_2, _typeSignal} - ,{6304,sizes_2, _typeSignal} - ,{6302,sizes_2, _typeSignal} - ,{6300,sizes_2, _typeSignal} - ,{6279,sizes_2_8, _typeSignal} - ,{6298,sizes_2, _typeSignal} - ,{6295,sizes_3, _typeSignal} - ,{6316,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_174[4] = { - {6317,sizes_2, _typeSignal} - ,{6321,sizes_0, _typeSignal} - ,{6319,sizes_2, _typeSignal} - ,{6322,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_362[4] = { - {6323,sizes_2, _typeSignal} - ,{6325,sizes_2, _typeSignal} - ,{6329,sizes_0, _typeSignal} - ,{6327,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_363[4] = { - {6330,sizes_2, _typeSignal} - ,{6332,sizes_2, _typeSignal} - ,{6336,sizes_0, _typeSignal} - ,{6334,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_364[4] = { - {6337,sizes_2, _typeSignal} - ,{6339,sizes_2, _typeSignal} - ,{6343,sizes_0, _typeSignal} - ,{6341,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_365[4] = { - {6344,sizes_2, _typeSignal} - ,{6346,sizes_2, _typeSignal} - ,{6350,sizes_0, _typeSignal} - ,{6348,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_366[4] = { - {6351,sizes_2, _typeSignal} - ,{6353,sizes_2, _typeSignal} - ,{6357,sizes_0, _typeSignal} - ,{6355,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_367[4] = { - {6358,sizes_2, _typeSignal} - ,{6360,sizes_2, _typeSignal} - ,{6364,sizes_0, _typeSignal} - ,{6362,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_51[12] = { - {6410,sizes_2, _typeSignal} - ,{6408,sizes_2, _typeSignal} - ,{6406,sizes_2, _typeSignal} - ,{6404,sizes_2, _typeSignal} - ,{6402,sizes_2, _typeSignal} - ,{6400,sizes_2, _typeSignal} - ,{6398,sizes_2, _typeSignal} - ,{6396,sizes_2, _typeSignal} - ,{6375,sizes_2_8, _typeSignal} - ,{6394,sizes_2, _typeSignal} - ,{6391,sizes_3, _typeSignal} - ,{6412,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_175[4] = { - {6413,sizes_2, _typeSignal} - ,{6417,sizes_0, _typeSignal} - ,{6415,sizes_2, _typeSignal} - ,{6418,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_368[4] = { - {6419,sizes_2, _typeSignal} - ,{6421,sizes_2, _typeSignal} - ,{6425,sizes_0, _typeSignal} - ,{6423,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_369[4] = { - {6426,sizes_2, _typeSignal} - ,{6428,sizes_2, _typeSignal} - ,{6432,sizes_0, _typeSignal} - ,{6430,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_370[4] = { - {6433,sizes_2, _typeSignal} - ,{6435,sizes_2, _typeSignal} - ,{6439,sizes_0, _typeSignal} - ,{6437,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_371[4] = { - {6440,sizes_2, _typeSignal} - ,{6442,sizes_2, _typeSignal} - ,{6446,sizes_0, _typeSignal} - ,{6444,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_372[4] = { - {6447,sizes_2, _typeSignal} - ,{6449,sizes_2, _typeSignal} - ,{6453,sizes_0, _typeSignal} - ,{6451,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_373[4] = { - {6454,sizes_2, _typeSignal} - ,{6456,sizes_2, _typeSignal} - ,{6460,sizes_0, _typeSignal} - ,{6458,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_52[12] = { - {6525,sizes_2, _typeSignal} - ,{6523,sizes_2, _typeSignal} - ,{6521,sizes_2, _typeSignal} - ,{6519,sizes_2, _typeSignal} - ,{6517,sizes_2, _typeSignal} - ,{6515,sizes_2, _typeSignal} - ,{6513,sizes_2, _typeSignal} - ,{6511,sizes_2, _typeSignal} - ,{6490,sizes_2_8, _typeSignal} - ,{6509,sizes_2, _typeSignal} - ,{6506,sizes_3, _typeSignal} - ,{6527,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_176[4] = { - {6528,sizes_2, _typeSignal} - ,{6532,sizes_0, _typeSignal} - ,{6530,sizes_2, _typeSignal} - ,{6533,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_374[4] = { - {6534,sizes_2, _typeSignal} - ,{6536,sizes_2, _typeSignal} - ,{6540,sizes_0, _typeSignal} - ,{6538,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_375[4] = { - {6541,sizes_2, _typeSignal} - ,{6543,sizes_2, _typeSignal} - ,{6547,sizes_0, _typeSignal} - ,{6545,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_376[4] = { - {6548,sizes_2, _typeSignal} - ,{6550,sizes_2, _typeSignal} - ,{6554,sizes_0, _typeSignal} - ,{6552,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_377[4] = { - {6555,sizes_2, _typeSignal} - ,{6557,sizes_2, _typeSignal} - ,{6561,sizes_0, _typeSignal} - ,{6559,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_378[4] = { - {6562,sizes_2, _typeSignal} - ,{6564,sizes_2, _typeSignal} - ,{6568,sizes_0, _typeSignal} - ,{6566,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_379[4] = { - {6569,sizes_2, _typeSignal} - ,{6571,sizes_2, _typeSignal} - ,{6575,sizes_0, _typeSignal} - ,{6573,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_53[12] = { - {6640,sizes_2, _typeSignal} - ,{6638,sizes_2, _typeSignal} - ,{6636,sizes_2, _typeSignal} - ,{6634,sizes_2, _typeSignal} - ,{6632,sizes_2, _typeSignal} - ,{6630,sizes_2, _typeSignal} - ,{6628,sizes_2, _typeSignal} - ,{6626,sizes_2, _typeSignal} - ,{6605,sizes_2_8, _typeSignal} - ,{6624,sizes_2, _typeSignal} - ,{6621,sizes_3, _typeSignal} - ,{6642,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_177[4] = { - {6643,sizes_2, _typeSignal} - ,{6647,sizes_0, _typeSignal} - ,{6645,sizes_2, _typeSignal} - ,{6648,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_380[4] = { - {6649,sizes_2, _typeSignal} - ,{6651,sizes_2, _typeSignal} - ,{6655,sizes_0, _typeSignal} - ,{6653,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_381[4] = { - {6656,sizes_2, _typeSignal} - ,{6658,sizes_2, _typeSignal} - ,{6662,sizes_0, _typeSignal} - ,{6660,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_382[4] = { - {6663,sizes_2, _typeSignal} - ,{6665,sizes_2, _typeSignal} - ,{6669,sizes_0, _typeSignal} - ,{6667,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_383[4] = { - {6670,sizes_2, _typeSignal} - ,{6672,sizes_2, _typeSignal} - ,{6676,sizes_0, _typeSignal} - ,{6674,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_384[4] = { - {6677,sizes_2, _typeSignal} - ,{6679,sizes_2, _typeSignal} - ,{6683,sizes_0, _typeSignal} - ,{6681,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_385[4] = { - {6684,sizes_2, _typeSignal} - ,{6686,sizes_2, _typeSignal} - ,{6690,sizes_0, _typeSignal} - ,{6688,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_54[12] = { - {6755,sizes_2, _typeSignal} - ,{6753,sizes_2, _typeSignal} - ,{6751,sizes_2, _typeSignal} - ,{6749,sizes_2, _typeSignal} - ,{6747,sizes_2, _typeSignal} - ,{6745,sizes_2, _typeSignal} - ,{6743,sizes_2, _typeSignal} - ,{6741,sizes_2, _typeSignal} - ,{6720,sizes_2_8, _typeSignal} - ,{6739,sizes_2, _typeSignal} - ,{6736,sizes_3, _typeSignal} - ,{6757,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_178[4] = { - {6758,sizes_2, _typeSignal} - ,{6762,sizes_0, _typeSignal} - ,{6760,sizes_2, _typeSignal} - ,{6763,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_386[4] = { - {6764,sizes_2, _typeSignal} - ,{6766,sizes_2, _typeSignal} - ,{6770,sizes_0, _typeSignal} - ,{6768,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_387[4] = { - {6771,sizes_2, _typeSignal} - ,{6773,sizes_2, _typeSignal} - ,{6777,sizes_0, _typeSignal} - ,{6775,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_388[4] = { - {6778,sizes_2, _typeSignal} - ,{6780,sizes_2, _typeSignal} - ,{6784,sizes_0, _typeSignal} - ,{6782,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_389[4] = { - {6785,sizes_2, _typeSignal} - ,{6787,sizes_2, _typeSignal} - ,{6791,sizes_0, _typeSignal} - ,{6789,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_390[4] = { - {6792,sizes_2, _typeSignal} - ,{6794,sizes_2, _typeSignal} - ,{6798,sizes_0, _typeSignal} - ,{6796,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_391[4] = { - {6799,sizes_2, _typeSignal} - ,{6801,sizes_2, _typeSignal} - ,{6805,sizes_0, _typeSignal} - ,{6803,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_55[12] = { - {6870,sizes_2, _typeSignal} - ,{6868,sizes_2, _typeSignal} - ,{6866,sizes_2, _typeSignal} - ,{6864,sizes_2, _typeSignal} - ,{6862,sizes_2, _typeSignal} - ,{6860,sizes_2, _typeSignal} - ,{6858,sizes_2, _typeSignal} - ,{6856,sizes_2, _typeSignal} - ,{6835,sizes_2_8, _typeSignal} - ,{6854,sizes_2, _typeSignal} - ,{6851,sizes_3, _typeSignal} - ,{6872,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_179[4] = { - {6873,sizes_2, _typeSignal} - ,{6877,sizes_0, _typeSignal} - ,{6875,sizes_2, _typeSignal} - ,{6878,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_392[4] = { - {6879,sizes_2, _typeSignal} - ,{6881,sizes_2, _typeSignal} - ,{6885,sizes_0, _typeSignal} - ,{6883,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_393[4] = { - {6886,sizes_2, _typeSignal} - ,{6888,sizes_2, _typeSignal} - ,{6892,sizes_0, _typeSignal} - ,{6890,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_394[4] = { - {6893,sizes_2, _typeSignal} - ,{6895,sizes_2, _typeSignal} - ,{6899,sizes_0, _typeSignal} - ,{6897,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_395[4] = { - {6900,sizes_2, _typeSignal} - ,{6902,sizes_2, _typeSignal} - ,{6906,sizes_0, _typeSignal} - ,{6904,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_396[4] = { - {6907,sizes_2, _typeSignal} - ,{6909,sizes_2, _typeSignal} - ,{6913,sizes_0, _typeSignal} - ,{6911,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_397[4] = { - {6914,sizes_2, _typeSignal} - ,{6916,sizes_2, _typeSignal} - ,{6920,sizes_0, _typeSignal} - ,{6918,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_56[12] = { - {6985,sizes_2, _typeSignal} - ,{6983,sizes_2, _typeSignal} - ,{6981,sizes_2, _typeSignal} - ,{6979,sizes_2, _typeSignal} - ,{6977,sizes_2, _typeSignal} - ,{6975,sizes_2, _typeSignal} - ,{6973,sizes_2, _typeSignal} - ,{6971,sizes_2, _typeSignal} - ,{6950,sizes_2_8, _typeSignal} - ,{6969,sizes_2, _typeSignal} - ,{6966,sizes_3, _typeSignal} - ,{6987,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_180[4] = { - {6988,sizes_2, _typeSignal} - ,{6992,sizes_0, _typeSignal} - ,{6990,sizes_2, _typeSignal} - ,{6993,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_398[4] = { - {6994,sizes_2, _typeSignal} - ,{6996,sizes_2, _typeSignal} - ,{7000,sizes_0, _typeSignal} - ,{6998,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_399[4] = { - {7001,sizes_2, _typeSignal} - ,{7003,sizes_2, _typeSignal} - ,{7007,sizes_0, _typeSignal} - ,{7005,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_400[4] = { - {7008,sizes_2, _typeSignal} - ,{7010,sizes_2, _typeSignal} - ,{7014,sizes_0, _typeSignal} - ,{7012,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_401[4] = { - {7015,sizes_2, _typeSignal} - ,{7017,sizes_2, _typeSignal} - ,{7021,sizes_0, _typeSignal} - ,{7019,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_402[4] = { - {7022,sizes_2, _typeSignal} - ,{7024,sizes_2, _typeSignal} - ,{7028,sizes_0, _typeSignal} - ,{7026,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_403[4] = { - {7029,sizes_2, _typeSignal} - ,{7031,sizes_2, _typeSignal} - ,{7035,sizes_0, _typeSignal} - ,{7033,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_57[12] = { - {7100,sizes_2, _typeSignal} - ,{7098,sizes_2, _typeSignal} - ,{7096,sizes_2, _typeSignal} - ,{7094,sizes_2, _typeSignal} - ,{7092,sizes_2, _typeSignal} - ,{7090,sizes_2, _typeSignal} - ,{7088,sizes_2, _typeSignal} - ,{7086,sizes_2, _typeSignal} - ,{7065,sizes_2_8, _typeSignal} - ,{7084,sizes_2, _typeSignal} - ,{7081,sizes_3, _typeSignal} - ,{7102,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_181[4] = { - {7103,sizes_2, _typeSignal} - ,{7107,sizes_0, _typeSignal} - ,{7105,sizes_2, _typeSignal} - ,{7108,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_404[4] = { - {7109,sizes_2, _typeSignal} - ,{7111,sizes_2, _typeSignal} - ,{7115,sizes_0, _typeSignal} - ,{7113,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_405[4] = { - {7116,sizes_2, _typeSignal} - ,{7118,sizes_2, _typeSignal} - ,{7122,sizes_0, _typeSignal} - ,{7120,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_406[4] = { - {7123,sizes_2, _typeSignal} - ,{7125,sizes_2, _typeSignal} - ,{7129,sizes_0, _typeSignal} - ,{7127,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_407[4] = { - {7130,sizes_2, _typeSignal} - ,{7132,sizes_2, _typeSignal} - ,{7136,sizes_0, _typeSignal} - ,{7134,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_408[4] = { - {7137,sizes_2, _typeSignal} - ,{7139,sizes_2, _typeSignal} - ,{7143,sizes_0, _typeSignal} - ,{7141,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_409[4] = { - {7144,sizes_2, _typeSignal} - ,{7146,sizes_2, _typeSignal} - ,{7150,sizes_0, _typeSignal} - ,{7148,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_58[12] = { - {7215,sizes_2, _typeSignal} - ,{7213,sizes_2, _typeSignal} - ,{7211,sizes_2, _typeSignal} - ,{7209,sizes_2, _typeSignal} - ,{7207,sizes_2, _typeSignal} - ,{7205,sizes_2, _typeSignal} - ,{7203,sizes_2, _typeSignal} - ,{7201,sizes_2, _typeSignal} - ,{7180,sizes_2_8, _typeSignal} - ,{7199,sizes_2, _typeSignal} - ,{7196,sizes_3, _typeSignal} - ,{7217,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_182[4] = { - {7218,sizes_2, _typeSignal} - ,{7222,sizes_0, _typeSignal} - ,{7220,sizes_2, _typeSignal} - ,{7223,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_410[4] = { - {7224,sizes_2, _typeSignal} - ,{7226,sizes_2, _typeSignal} - ,{7230,sizes_0, _typeSignal} - ,{7228,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_411[4] = { - {7231,sizes_2, _typeSignal} - ,{7233,sizes_2, _typeSignal} - ,{7237,sizes_0, _typeSignal} - ,{7235,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_412[4] = { - {7238,sizes_2, _typeSignal} - ,{7240,sizes_2, _typeSignal} - ,{7244,sizes_0, _typeSignal} - ,{7242,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_413[4] = { - {7245,sizes_2, _typeSignal} - ,{7247,sizes_2, _typeSignal} - ,{7251,sizes_0, _typeSignal} - ,{7249,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_414[4] = { - {7252,sizes_2, _typeSignal} - ,{7254,sizes_2, _typeSignal} - ,{7258,sizes_0, _typeSignal} - ,{7256,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_415[4] = { - {7259,sizes_2, _typeSignal} - ,{7261,sizes_2, _typeSignal} - ,{7265,sizes_0, _typeSignal} - ,{7263,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_59[12] = { - {7330,sizes_2, _typeSignal} - ,{7328,sizes_2, _typeSignal} - ,{7326,sizes_2, _typeSignal} - ,{7324,sizes_2, _typeSignal} - ,{7322,sizes_2, _typeSignal} - ,{7320,sizes_2, _typeSignal} - ,{7318,sizes_2, _typeSignal} - ,{7316,sizes_2, _typeSignal} - ,{7295,sizes_2_8, _typeSignal} - ,{7314,sizes_2, _typeSignal} - ,{7311,sizes_3, _typeSignal} - ,{7332,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_183[4] = { - {7333,sizes_2, _typeSignal} - ,{7337,sizes_0, _typeSignal} - ,{7335,sizes_2, _typeSignal} - ,{7338,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_416[4] = { - {7339,sizes_2, _typeSignal} - ,{7341,sizes_2, _typeSignal} - ,{7345,sizes_0, _typeSignal} - ,{7343,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_417[4] = { - {7346,sizes_2, _typeSignal} - ,{7348,sizes_2, _typeSignal} - ,{7352,sizes_0, _typeSignal} - ,{7350,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_418[4] = { - {7353,sizes_2, _typeSignal} - ,{7355,sizes_2, _typeSignal} - ,{7359,sizes_0, _typeSignal} - ,{7357,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_419[4] = { - {7360,sizes_2, _typeSignal} - ,{7362,sizes_2, _typeSignal} - ,{7366,sizes_0, _typeSignal} - ,{7364,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_420[4] = { - {7367,sizes_2, _typeSignal} - ,{7369,sizes_2, _typeSignal} - ,{7373,sizes_0, _typeSignal} - ,{7371,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_421[4] = { - {7374,sizes_2, _typeSignal} - ,{7376,sizes_2, _typeSignal} - ,{7380,sizes_0, _typeSignal} - ,{7378,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_60[12] = { - {7445,sizes_2, _typeSignal} - ,{7443,sizes_2, _typeSignal} - ,{7441,sizes_2, _typeSignal} - ,{7439,sizes_2, _typeSignal} - ,{7437,sizes_2, _typeSignal} - ,{7435,sizes_2, _typeSignal} - ,{7433,sizes_2, _typeSignal} - ,{7431,sizes_2, _typeSignal} - ,{7410,sizes_2_8, _typeSignal} - ,{7429,sizes_2, _typeSignal} - ,{7426,sizes_3, _typeSignal} - ,{7447,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_184[4] = { - {7448,sizes_2, _typeSignal} - ,{7452,sizes_0, _typeSignal} - ,{7450,sizes_2, _typeSignal} - ,{7453,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_422[4] = { - {7454,sizes_2, _typeSignal} - ,{7456,sizes_2, _typeSignal} - ,{7460,sizes_0, _typeSignal} - ,{7458,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_423[4] = { - {7461,sizes_2, _typeSignal} - ,{7463,sizes_2, _typeSignal} - ,{7467,sizes_0, _typeSignal} - ,{7465,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_424[4] = { - {7468,sizes_2, _typeSignal} - ,{7470,sizes_2, _typeSignal} - ,{7474,sizes_0, _typeSignal} - ,{7472,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_425[4] = { - {7475,sizes_2, _typeSignal} - ,{7477,sizes_2, _typeSignal} - ,{7481,sizes_0, _typeSignal} - ,{7479,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_426[4] = { - {7482,sizes_2, _typeSignal} - ,{7484,sizes_2, _typeSignal} - ,{7488,sizes_0, _typeSignal} - ,{7486,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_427[4] = { - {7489,sizes_2, _typeSignal} - ,{7491,sizes_2, _typeSignal} - ,{7495,sizes_0, _typeSignal} - ,{7493,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_61[12] = { - {7560,sizes_2, _typeSignal} - ,{7558,sizes_2, _typeSignal} - ,{7556,sizes_2, _typeSignal} - ,{7554,sizes_2, _typeSignal} - ,{7552,sizes_2, _typeSignal} - ,{7550,sizes_2, _typeSignal} - ,{7548,sizes_2, _typeSignal} - ,{7546,sizes_2, _typeSignal} - ,{7525,sizes_2_8, _typeSignal} - ,{7544,sizes_2, _typeSignal} - ,{7541,sizes_3, _typeSignal} - ,{7562,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_185[4] = { - {7563,sizes_2, _typeSignal} - ,{7567,sizes_0, _typeSignal} - ,{7565,sizes_2, _typeSignal} - ,{7568,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_428[4] = { - {7569,sizes_2, _typeSignal} - ,{7571,sizes_2, _typeSignal} - ,{7575,sizes_0, _typeSignal} - ,{7573,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_429[4] = { - {7576,sizes_2, _typeSignal} - ,{7578,sizes_2, _typeSignal} - ,{7582,sizes_0, _typeSignal} - ,{7580,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_430[4] = { - {7583,sizes_2, _typeSignal} - ,{7585,sizes_2, _typeSignal} - ,{7589,sizes_0, _typeSignal} - ,{7587,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_431[4] = { - {7590,sizes_2, _typeSignal} - ,{7592,sizes_2, _typeSignal} - ,{7596,sizes_0, _typeSignal} - ,{7594,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_432[4] = { - {7597,sizes_2, _typeSignal} - ,{7599,sizes_2, _typeSignal} - ,{7603,sizes_0, _typeSignal} - ,{7601,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_433[4] = { - {7604,sizes_2, _typeSignal} - ,{7606,sizes_2, _typeSignal} - ,{7610,sizes_0, _typeSignal} - ,{7608,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_62[12] = { - {7675,sizes_2, _typeSignal} - ,{7673,sizes_2, _typeSignal} - ,{7671,sizes_2, _typeSignal} - ,{7669,sizes_2, _typeSignal} - ,{7667,sizes_2, _typeSignal} - ,{7665,sizes_2, _typeSignal} - ,{7663,sizes_2, _typeSignal} - ,{7661,sizes_2, _typeSignal} - ,{7640,sizes_2_8, _typeSignal} - ,{7659,sizes_2, _typeSignal} - ,{7656,sizes_3, _typeSignal} - ,{7677,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_186[4] = { - {7678,sizes_2, _typeSignal} - ,{7682,sizes_0, _typeSignal} - ,{7680,sizes_2, _typeSignal} - ,{7683,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_434[4] = { - {7684,sizes_2, _typeSignal} - ,{7686,sizes_2, _typeSignal} - ,{7690,sizes_0, _typeSignal} - ,{7688,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_435[4] = { - {7691,sizes_2, _typeSignal} - ,{7693,sizes_2, _typeSignal} - ,{7697,sizes_0, _typeSignal} - ,{7695,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_436[4] = { - {7698,sizes_2, _typeSignal} - ,{7700,sizes_2, _typeSignal} - ,{7704,sizes_0, _typeSignal} - ,{7702,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_437[4] = { - {7705,sizes_2, _typeSignal} - ,{7707,sizes_2, _typeSignal} - ,{7711,sizes_0, _typeSignal} - ,{7709,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_438[4] = { - {7712,sizes_2, _typeSignal} - ,{7714,sizes_2, _typeSignal} - ,{7718,sizes_0, _typeSignal} - ,{7716,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_439[4] = { - {7719,sizes_2, _typeSignal} - ,{7721,sizes_2, _typeSignal} - ,{7725,sizes_0, _typeSignal} - ,{7723,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMultiMux3_63[12] = { - {7790,sizes_2, _typeSignal} - ,{7788,sizes_2, _typeSignal} - ,{7786,sizes_2, _typeSignal} - ,{7784,sizes_2, _typeSignal} - ,{7782,sizes_2, _typeSignal} - ,{7780,sizes_2, _typeSignal} - ,{7778,sizes_2, _typeSignal} - ,{7776,sizes_2, _typeSignal} - ,{7755,sizes_2_8, _typeSignal} - ,{7774,sizes_2, _typeSignal} - ,{7771,sizes_3, _typeSignal} - ,{7792,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryDouble_187[4] = { - {7793,sizes_2, _typeSignal} - ,{7797,sizes_0, _typeSignal} - ,{7795,sizes_2, _typeSignal} - ,{7798,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_440[4] = { - {7799,sizes_2, _typeSignal} - ,{7801,sizes_2, _typeSignal} - ,{7805,sizes_0, _typeSignal} - ,{7803,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_441[4] = { - {7806,sizes_2, _typeSignal} - ,{7808,sizes_2, _typeSignal} - ,{7812,sizes_0, _typeSignal} - ,{7810,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_442[4] = { - {7813,sizes_2, _typeSignal} - ,{7815,sizes_2, _typeSignal} - ,{7819,sizes_0, _typeSignal} - ,{7817,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_443[4] = { - {7820,sizes_2, _typeSignal} - ,{7822,sizes_2, _typeSignal} - ,{7826,sizes_0, _typeSignal} - ,{7824,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_444[4] = { - {7827,sizes_2, _typeSignal} - ,{7829,sizes_2, _typeSignal} - ,{7833,sizes_0, _typeSignal} - ,{7831,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomeryAdd_445[4] = { - {7834,sizes_2, _typeSignal} - ,{7836,sizes_2, _typeSignal} - ,{7840,sizes_0, _typeSignal} - ,{7838,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableMontgomery2Edwards_1[2] = { - {7860,sizes_2, _typeSignal} - ,{7862,sizes_2, _typeSignal} -}; - -Circom_ComponentEntry _entryTableBabyAdd[10] = { - {7870,sizes_0, _typeSignal} - ,{7872,sizes_0, _typeSignal} - ,{7871,sizes_0, _typeSignal} - ,{7873,sizes_0, _typeSignal} - ,{7864,sizes_0, _typeSignal} - ,{7866,sizes_0, _typeSignal} - ,{7868,sizes_0, _typeSignal} - ,{7865,sizes_0, _typeSignal} - ,{7867,sizes_0, _typeSignal} - ,{7869,sizes_0, _typeSignal} -}; - -Circom_ComponentEntry _entryTableNum2Bits[2] = { - {7874,sizes_0, _typeSignal} - ,{7875,sizes_253, _typeSignal} -}; - - - -// Functions - -/* -Main -*/ -void Main_49e763aed00877a8(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - int _sigIdx_1; - PBigInt _sigValue = ctx->allocBigInts(1); - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes; - int _offset_3; - int _compIdx_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_1; - int _offset_5; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_3; - int _sigIdx_4; - Circom_Sizes _sigSizes_2; - PBigInt _v_5; - int _offset_10; - int _compIdx_4; - int _sigIdx_5; - Circom_Sizes _sigSizes_3; - PBigInt _v_6; - int _offset_12; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _v_7; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_8; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "253", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "256", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_5; - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - PBigInt _v_10; - int _offset_19; - PBigInt _num_6 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_12; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "256", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - int _offset_23; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_6; - int _offset_24; - int _compIdx_7; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_25; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_8; - int _offset_26; - - - /* signal input in */ - - /* signal output out[2] */ - - /* component pedersen = Pedersen(256) */ - - /* component n2b */ - - /* n2b = Num2Bits(253) */ - - /* var i */ - - /* in ==> n2b.in */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue); - ctx->setSignal(_compIdx, _sigIdx, _sigValue); - - /* for (i=0,i<253,i++) */ - - /* pedersen.in[i] <== n2b.out[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _offset_3 = _sigIdx_2 + 0*_sigSizes[1]; - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _sigIdx_3 = ctx->getSignalOffset(_compIdx_2, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_1 = ctx->getSignalSizes(_compIdx_2, 0x19f79b1921bbcfffLL /* out */); - _offset_5 = _sigIdx_3 + 0*_sigSizes_1[1]; - ctx->getSignal(_compIdx_2, _offset_5, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_3, _sigValue_1); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* pedersen.in[i] <== n2b.out[i] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_3, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_3, 0x08b73807b55c4bbeLL /* in */); - _v_5 = i + 0; - _offset_10 = _sigIdx_4 + ctx->field->toInt(_v_5)*_sigSizes_2[1]; - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_4, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_3 = ctx->getSignalSizes(_compIdx_4, 0x19f79b1921bbcfffLL /* out */); - _v_6 = i + 0; - _offset_12 = _sigIdx_5 + ctx->field->toInt(_v_6)*_sigSizes_3[1]; - ctx->getSignal(_compIdx_4, _offset_12, _sigValue_2); - ctx->setSignal(_compIdx_3, _offset_10, _sigValue_2); - _v_7 = i + 0; - ctx->field->add(_tmp_3, _v_7, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_8 = i + 0; - ctx->field->lt(_tmp_4,_v_8,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=253,i<256,i++) */ - mpz_set_str(_num_4[0], "253", 10); - ctx->field->copyn(i, _num_4, 1); - _v_9 = i + 0; - ctx->field->lt(_tmp_5,_v_9,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* pedersen.in[i] <== 0 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); - _v_10 = i + 0; - _offset_19 = _sigIdx_6 + ctx->field->toInt(_v_10)*_sigSizes_4[1]; - mpz_set_str(_num_6[0], "0", 10); - ctx->setSignal(_compIdx_5, _offset_19, _num_6); - _v_11 = i + 0; - ctx->field->add(_tmp_6, _v_11, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_12 = i + 0; - ctx->field->lt(_tmp_7,_v_12,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* pedersen.out[0] ==> out[0] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_7 = ctx->getSignalOffset(_compIdx_6, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_6, 0x19f79b1921bbcfffLL /* out */); - _offset_23 = _sigIdx_7 + 0*_sigSizes_5[1]; - ctx->getSignal(_compIdx_6, _offset_23, _sigValue_3); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_24 = _sigIdx_8 + 0*_sigSizes_6[1]; - ctx->setSignal(ctx->cIdx, _offset_24, _sigValue_3); - - /* pedersen.out[1] ==> out[1] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_9 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_25 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(_compIdx_7, _offset_25, _sigValue_4); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_26 = _sigIdx_10 + 1*_sigSizes_8[1]; - ctx->setSignal(ctx->cIdx, _offset_26, _sigValue_4); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_num_6, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); -} - -/* -Pedersen -in[253]=0 -in[254]=0 -in[255]=0 -n=256 -*/ -void Pedersen_3a5f42b6d718ae32(Circom_CalcWit *ctx) { - // Header - int _compIdx; - Circom_Sizes _compSizes; - int _offset_12; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_13; - PBigInt _v_8 = ctx->allocBigInts(1); - int _compIdx_1; - Circom_Sizes _compSizes_1; - int _offset_17; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_18; - PBigInt _v_11 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes_2; - int _offset_25; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_27; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_30; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - int _compIdx_3; - Circom_Sizes _compSizes_3; - int _offset_36; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_22; - int _offset_38; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_24; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _offset_41; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_25; - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _v_26; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "200", 10); - PBigInt _tmp_17 = ctx->allocBigInts(1); - PBigInt _v_28 = ctx->allocBigInts(1); - PBigInt _v_29; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "200", 10); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_4; - Circom_Sizes _compSizes_4; - int _offset_51; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - PBigInt _v_32; - int _offset_53; - PBigInt _num_37 = ctx->allocBigInts(1); - PBigInt _v_33; - PBigInt _tmp_20 = ctx->allocBigInts(1); - PBigInt _v_34; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "200", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - PBigInt nBits = ctx->allocBigInts(1); - PBigInt nWindows = ctx->allocBigInts(1); - int _cond_2; - PBigInt _v_39; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "1", 10); - PBigInt _tmp_26 = ctx->allocBigInts(1); - PBigInt _ter; - PBigInt _tmp_29 = ctx->allocBigInts(1); - PBigInt _num_42 = ctx->allocBigInts(1); - PBigInt _v_43; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_30 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "4", 10); - PBigInt _tmp_31 = ctx->allocBigInts(1); - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _compIdx_5; - Circom_Sizes _compSizes_5; - PBigInt _v_44; - int _offset_70; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_71; - PBigInt _v_45; - int _offset_73; - PBigInt BASE = ctx->allocBigInts(20); - PBigInt _v_46; - int _compIdx_6; - Circom_Sizes _compSizes_6; - PBigInt _v_47; - int _offset_75; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_76; - PBigInt _v_48; - int _offset_78; - PBigInt _v_49; - PBigInt _num_50 = ctx->allocBigInts(1); - PBigInt _v_50; - PBigInt _v_51; - PBigInt _tmp_33 = ctx->allocBigInts(1); - int _cond_3; - int _compIdx_7; - Circom_Sizes _compSizes_7; - PBigInt _v_52; - int _offset_83; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - PBigInt _v_53; - int _offset_85; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - PBigInt _v_54; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "200", 10); - PBigInt _tmp_34 = ctx->allocBigInts(1); - PBigInt _v_55; - PBigInt _tmp_35 = ctx->allocBigInts(1); - int _offset_88; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _v_56; - PBigInt _tmp_36 = ctx->allocBigInts(1); - PBigInt _v_57; - PBigInt _v_58; - PBigInt _tmp_37 = ctx->allocBigInts(1); - PBigInt _v_59; - PBigInt _v_60; - PBigInt _v_61; - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "4", 10); - PBigInt _tmp_38 = ctx->allocBigInts(1); - PBigInt _tmp_39 = ctx->allocBigInts(1); - int _cond_4; - int _compIdx_8; - Circom_Sizes _compSizes_8; - PBigInt _v_62; - int _offset_98; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - PBigInt _v_63; - int _offset_100; - PBigInt _num_53 = ctx->allocBigInts(1); - PBigInt _v_64; - PBigInt _tmp_40 = ctx->allocBigInts(1); - PBigInt _v_65; - PBigInt _v_66; - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "4", 10); - PBigInt _tmp_41 = ctx->allocBigInts(1); - PBigInt _tmp_42 = ctx->allocBigInts(1); - PBigInt _v_67; - PBigInt _tmp_43 = ctx->allocBigInts(1); - PBigInt _v_68; - PBigInt _const_11; - _const_11 = ctx->allocBigInts(1); - mpz_set_str(_const_11[0], "2", 10); - PBigInt _tmp_44 = ctx->allocBigInts(1); - PBigInt _num_55 = ctx->allocBigInts(1); - PBigInt _v_70; - PBigInt _const_12; - _const_12 = ctx->allocBigInts(1); - mpz_set_str(_const_12[0], "1", 10); - PBigInt _tmp_46 = ctx->allocBigInts(1); - int _cond_5; - PBigInt _v_72; - PBigInt _const_13; - _const_13 = ctx->allocBigInts(1); - mpz_set_str(_const_13[0], "0", 10); - PBigInt _tmp_47 = ctx->allocBigInts(1); - int _compIdx_9; - Circom_Sizes _compSizes_9; - PBigInt _v_73; - int _offset_114; - int _sigIdx_12; - int _compIdx_10; - Circom_Sizes _compSizes_10; - int _offset_115; - int _sigIdx_13; - Circom_Sizes _sigSizes_12; - int _offset_116; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_11; - Circom_Sizes _compSizes_11; - PBigInt _v_74; - int _offset_118; - int _sigIdx_14; - int _compIdx_12; - Circom_Sizes _compSizes_12; - int _offset_119; - int _sigIdx_15; - Circom_Sizes _sigSizes_13; - int _offset_120; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_13; - Circom_Sizes _compSizes_13; - PBigInt _v_75; - int _offset_122; - int _sigIdx_16; - int _compIdx_14; - Circom_Sizes _compSizes_14; - int _offset_123; - int _sigIdx_17; - Circom_Sizes _sigSizes_14; - int _offset_124; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_15; - Circom_Sizes _compSizes_15; - PBigInt _v_76; - int _offset_126; - int _sigIdx_18; - int _compIdx_16; - Circom_Sizes _compSizes_16; - int _offset_127; - int _sigIdx_19; - Circom_Sizes _sigSizes_15; - int _offset_128; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _compIdx_17; - Circom_Sizes _compSizes_17; - PBigInt _v_77; - int _offset_130; - int _sigIdx_20; - int _compIdx_18; - Circom_Sizes _compSizes_18; - PBigInt _v_78; - PBigInt _const_14; - _const_14 = ctx->allocBigInts(1); - mpz_set_str(_const_14[0], "1", 10); - PBigInt _tmp_48 = ctx->allocBigInts(1); - int _offset_132; - int _sigIdx_21; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _compIdx_19; - Circom_Sizes _compSizes_19; - PBigInt _v_79; - int _offset_134; - int _sigIdx_22; - int _compIdx_20; - Circom_Sizes _compSizes_20; - PBigInt _v_80; - PBigInt _const_15; - _const_15 = ctx->allocBigInts(1); - mpz_set_str(_const_15[0], "1", 10); - PBigInt _tmp_49 = ctx->allocBigInts(1); - int _offset_136; - int _sigIdx_23; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _compIdx_21; - Circom_Sizes _compSizes_21; - PBigInt _v_81; - int _offset_138; - int _sigIdx_24; - int _compIdx_22; - Circom_Sizes _compSizes_22; - PBigInt _v_82; - PBigInt _const_16; - _const_16 = ctx->allocBigInts(1); - mpz_set_str(_const_16[0], "1", 10); - PBigInt _tmp_50 = ctx->allocBigInts(1); - int _offset_140; - int _sigIdx_25; - Circom_Sizes _sigSizes_16; - int _offset_141; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - int _compIdx_23; - Circom_Sizes _compSizes_23; - PBigInt _v_83; - int _offset_143; - int _sigIdx_26; - int _compIdx_24; - Circom_Sizes _compSizes_24; - PBigInt _v_84; - PBigInt _const_17; - _const_17 = ctx->allocBigInts(1); - mpz_set_str(_const_17[0], "1", 10); - PBigInt _tmp_51 = ctx->allocBigInts(1); - int _offset_145; - int _sigIdx_27; - Circom_Sizes _sigSizes_17; - int _offset_146; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - PBigInt _v_85; - PBigInt _tmp_52 = ctx->allocBigInts(1); - PBigInt _v_86; - PBigInt _const_18; - _const_18 = ctx->allocBigInts(1); - mpz_set_str(_const_18[0], "1", 10); - PBigInt _tmp_54 = ctx->allocBigInts(1); - int _compIdx_25; - Circom_Sizes _compSizes_25; - int _offset_153; - int _sigIdx_28; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - int _sigIdx_29; - Circom_Sizes _sigSizes_18; - int _offset_154; - int _compIdx_26; - Circom_Sizes _compSizes_26; - int _offset_156; - int _sigIdx_30; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - int _sigIdx_31; - Circom_Sizes _sigSizes_19; - int _offset_157; - - - /* signal input in[n] */ - - /* signal output out[2] */ - - /* var BASE = [ - [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], - [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], - [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], - [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], - [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], - [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], - [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], - [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], - [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], - [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] - ] */ - - /* var nSegments = ((n-1)\200)+1 */ - - /* component segments[nSegments] */ - - /* var i */ - - /* var j */ - - /* var nBits */ - - /* var nWindows */ - - /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_12 = _compIdx + 0*_compSizes[1]; - _sigIdx = ctx->getSignalOffset(_offset_12, 0x9a7ce19baa54c278LL /* base */); - _sigSizes = ctx->getSignalSizes(_offset_12, 0x9a7ce19baa54c278LL /* base */); - _offset_13 = _sigIdx + 0*_sigSizes[1]; - mpz_set_str(_v_8[0], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); - ctx->setSignal(_offset_12, _offset_13, _v_8); - - /* segments[i].base[1] <== BASE[i][1] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_17 = _compIdx_1 + 0*_compSizes_1[1]; - _sigIdx_1 = ctx->getSignalOffset(_offset_17, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_1 = ctx->getSignalSizes(_offset_17, 0x9a7ce19baa54c278LL /* base */); - _offset_18 = _sigIdx_1 + 1*_sigSizes_1[1]; - mpz_set_str(_v_11[0], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); - ctx->setSignal(_offset_17, _offset_18, _v_11); - - /* for (j = 0,jgetSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_25 = _compIdx_2 + 0*_compSizes_2[1]; - _sigIdx_2 = ctx->getSignalOffset(_offset_25, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_offset_25, 0x08b73807b55c4bbeLL /* in */); - _offset_27 = _sigIdx_2 + 0*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_30 = _sigIdx_3 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_30, _sigValue); - ctx->setSignal(_offset_25, _offset_27, _sigValue); - mpz_set_str(_tmp_13[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_13); - while (_cond) { - - /* segments[i].in[j] <== in[i*200+j] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_36 = _compIdx_3 + 0*_compSizes_3[1]; - _sigIdx_4 = ctx->getSignalOffset(_offset_36, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(_offset_36, 0x08b73807b55c4bbeLL /* in */); - _v_22 = j + 0; - _offset_38 = _sigIdx_4 + ctx->field->toInt(_v_22)*_sigSizes_4[1]; - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_24 = j + 0; - ctx->field->add(_tmp_15,_const,_v_24); - _offset_41 = _sigIdx_5 + ctx->field->toInt(_tmp_15)*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_1); - ctx->setSignal(_offset_36, _offset_38, _sigValue_1); - _v_25 = j + 0; - ctx->field->add(_tmp_16, _v_25, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_16, 1); - _v_26 = j + 0; - ctx->field->lt(_tmp_17,_v_26,_const_1); - _cond = ctx->field->isTrue(_tmp_17); - } - - /* for (j = nBits,j < nWindows*4,j++) */ - mpz_set_str(_v_28[0], "200", 10); - ctx->field->copyn(j, _v_28, 1); - _v_29 = j + 0; - ctx->field->lt(_tmp_19,_v_29,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_19); - while (_cond_1) { - - /* segments[i].in[j] <== 0 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_51 = _compIdx_4 + 0*_compSizes_4[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_51, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(_offset_51, 0x08b73807b55c4bbeLL /* in */); - _v_32 = j + 0; - _offset_53 = _sigIdx_6 + ctx->field->toInt(_v_32)*_sigSizes_6[1]; - mpz_set_str(_num_37[0], "0", 10); - ctx->setSignal(_offset_51, _offset_53, _num_37); - _v_33 = j + 0; - ctx->field->add(_tmp_20, _v_33, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_20, 1); - _v_34 = j + 0; - ctx->field->lt(_tmp_22,_v_34,_const_3); - _cond_1 = ctx->field->isTrue(_tmp_22); - } - mpz_set_str(_tmp_24[0], "1", 10); - mpz_set_str(i[0], "1", 10); - mpz_set_str(nBits[0], "200", 10); - mpz_set_str(nWindows[0], "50", 10); - _cond_2 = ctx->field->isTrue(_tmp_24); - while (_cond_2) { - - /* nBits = (i == (nSegments-1)) ? n - (nSegments-1)*200 : 200 */ - _v_39 = i + 0; - ctx->field->eq(_tmp_26,_v_39,_const_4); - if (ctx->field->isTrue(_tmp_26)) { - mpz_set_str(_tmp_29[0], "56", 10); - _ter = _tmp_29; - } else { - mpz_set_str(_num_42[0], "200", 10); - _ter = _num_42; - } - ctx->field->copyn(nBits, _ter, 1); - - /* nWindows = ((nBits - 1)\4)+1 */ - _v_43 = nBits + 0; - ctx->field->sub(_tmp_30,_v_43,_const_5); - ctx->field->idiv(_tmp_31,_tmp_30,_const_6); - ctx->field->add(_tmp_32,_tmp_31,_const_7); - ctx->field->copyn(nWindows, _tmp_32, 1); - - /* segments[i] = Segment(nWindows) */ - - /* segments[i].base[0] <== BASE[i][0] */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_44 = i + 0; - _offset_70 = _compIdx_5 + ctx->field->toInt(_v_44)*_compSizes_5[1]; - _sigIdx_7 = ctx->getSignalOffset(_offset_70, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_7 = ctx->getSignalSizes(_offset_70, 0x9a7ce19baa54c278LL /* base */); - _offset_71 = _sigIdx_7 + 0*_sigSizes_7[1]; - _v_45 = i + 0; - _offset_73 = ctx->field->toInt(_v_45)*2; - mpz_set_str(BASE[0], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); - mpz_set_str(BASE[1], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); - mpz_set_str(BASE[2], "2671756056509184035029146175565761955751135805354291559563293617232983272177", 10); - mpz_set_str(BASE[3], "2663205510731142763556352975002641716101654201788071096152948830924149045094", 10); - mpz_set_str(BASE[4], "5802099305472655231388284418920769829666717045250560929368476121199858275951", 10); - mpz_set_str(BASE[5], "5980429700218124965372158798884772646841287887664001482443826541541529227896", 10); - mpz_set_str(BASE[6], "7107336197374528537877327281242680114152313102022415488494307685842428166594", 10); - mpz_set_str(BASE[7], "2857869773864086953506483169737724679646433914307247183624878062391496185654", 10); - mpz_set_str(BASE[8], "20265828622013100949498132415626198973119240347465898028410217039057588424236", 10); - mpz_set_str(BASE[9], "1160461593266035632937973507065134938065359936056410650153315956301179689506", 10); - mpz_set_str(BASE[10], "1487999857809287756929114517587739322941449154962237464737694709326309567994", 10); - mpz_set_str(BASE[11], "14017256862867289575056460215526364897734808720610101650676790868051368668003", 10); - mpz_set_str(BASE[12], "14618644331049802168996997831720384953259095788558646464435263343433563860015", 10); - mpz_set_str(BASE[13], "13115243279999696210147231297848654998887864576952244320558158620692603342236", 10); - mpz_set_str(BASE[14], "6814338563135591367010655964669793483652536871717891893032616415581401894627", 10); - mpz_set_str(BASE[15], "13660303521961041205824633772157003587453809761793065294055279768121314853695", 10); - mpz_set_str(BASE[16], "3571615583211663069428808372184817973703476260057504149923239576077102575715", 10); - mpz_set_str(BASE[17], "11981351099832644138306422070127357074117642951423551606012551622164230222506", 10); - mpz_set_str(BASE[18], "18597552580465440374022635246985743886550544261632147935254624835147509493269", 10); - mpz_set_str(BASE[19], "6753322320275422086923032033899357299485124665258735666995435957890214041481", 10); - _v_46 = BASE + _offset_73; - ctx->setSignal(_offset_70, _offset_71, _v_46); - - /* segments[i].base[1] <== BASE[i][1] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_47 = i + 0; - _offset_75 = _compIdx_6 + ctx->field->toInt(_v_47)*_compSizes_6[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_75, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_8 = ctx->getSignalSizes(_offset_75, 0x9a7ce19baa54c278LL /* base */); - _offset_76 = _sigIdx_8 + 1*_sigSizes_8[1]; - _v_48 = i + 0; - _offset_78 = ctx->field->toInt(_v_48)*2 + 1; - _v_49 = BASE + _offset_78; - ctx->setSignal(_offset_75, _offset_76, _v_49); - - /* for (j = 0,jfield->copyn(j, _num_50, 1); - _v_50 = j + 0; - _v_51 = nBits + 0; - ctx->field->lt(_tmp_33,_v_50,_v_51); - _cond_3 = ctx->field->isTrue(_tmp_33); - while (_cond_3) { - - /* segments[i].in[j] <== in[i*200+j] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_52 = i + 0; - _offset_83 = _compIdx_7 + ctx->field->toInt(_v_52)*_compSizes_7[1]; - _sigIdx_9 = ctx->getSignalOffset(_offset_83, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_9 = ctx->getSignalSizes(_offset_83, 0x08b73807b55c4bbeLL /* in */); - _v_53 = j + 0; - _offset_85 = _sigIdx_9 + ctx->field->toInt(_v_53)*_sigSizes_9[1]; - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_54 = i + 0; - ctx->field->mul(_tmp_34,_v_54,_const_8); - _v_55 = j + 0; - ctx->field->add(_tmp_35,_tmp_34,_v_55); - _offset_88 = _sigIdx_10 + ctx->field->toInt(_tmp_35)*_sigSizes_10[1]; - ctx->getSignal(ctx->cIdx, _offset_88, _sigValue_2); - ctx->setSignal(_offset_83, _offset_85, _sigValue_2); - _v_56 = j + 0; - ctx->field->add(_tmp_36, _v_56, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_36, 1); - _v_57 = j + 0; - _v_58 = nBits + 0; - ctx->field->lt(_tmp_37,_v_57,_v_58); - _cond_3 = ctx->field->isTrue(_tmp_37); - } - - /* for (j = nBits,j < nWindows*4,j++) */ - _v_59 = nBits + 0; - ctx->field->copyn(j, _v_59, 1); - _v_60 = j + 0; - _v_61 = nWindows + 0; - ctx->field->mul(_tmp_38,_v_61,_const_9); - ctx->field->lt(_tmp_39,_v_60,_tmp_38); - _cond_4 = ctx->field->isTrue(_tmp_39); - while (_cond_4) { - - /* segments[i].in[j] <== 0 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_62 = i + 0; - _offset_98 = _compIdx_8 + ctx->field->toInt(_v_62)*_compSizes_8[1]; - _sigIdx_11 = ctx->getSignalOffset(_offset_98, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_11 = ctx->getSignalSizes(_offset_98, 0x08b73807b55c4bbeLL /* in */); - _v_63 = j + 0; - _offset_100 = _sigIdx_11 + ctx->field->toInt(_v_63)*_sigSizes_11[1]; - mpz_set_str(_num_53[0], "0", 10); - ctx->setSignal(_offset_98, _offset_100, _num_53); - _v_64 = j + 0; - ctx->field->add(_tmp_40, _v_64, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_40, 1); - _v_65 = j + 0; - _v_66 = nWindows + 0; - ctx->field->mul(_tmp_41,_v_66,_const_10); - ctx->field->lt(_tmp_42,_v_65,_tmp_41); - _cond_4 = ctx->field->isTrue(_tmp_42); - } - _v_67 = i + 0; - ctx->field->add(_tmp_43, _v_67, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_43, 1); - _v_68 = i + 0; - ctx->field->lt(_tmp_44,_v_68,_const_11); - _cond_2 = ctx->field->isTrue(_tmp_44); - } - - /* component adders[nSegments-1] */ - - /* for (i=0,ifield->copyn(i, _num_55, 1); - _v_70 = i + 0; - ctx->field->lt(_tmp_46,_v_70,_const_12); - _cond_5 = ctx->field->isTrue(_tmp_46); - while (_cond_5) { - - /* adders[i] = BabyAdd() */ - - /* if (i==0) */ - _v_72 = i + 0; - ctx->field->eq(_tmp_47,_v_72,_const_13); - if (ctx->field->isTrue(_tmp_47)) { - - /* adders[i].x1 <== segments[0].out[0] */ - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_73 = i + 0; - _offset_114 = _compIdx_9 + ctx->field->toInt(_v_73)*_compSizes_9[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_114, 0x08f10707b58d70c2LL /* x1 */); - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_115 = _compIdx_10 + 0*_compSizes_10[1]; - _sigIdx_13 = ctx->getSignalOffset(_offset_115, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_12 = ctx->getSignalSizes(_offset_115, 0x19f79b1921bbcfffLL /* out */); - _offset_116 = _sigIdx_13 + 0*_sigSizes_12[1]; - ctx->getSignal(_offset_115, _offset_116, _sigValue_3); - ctx->setSignal(_offset_114, _sigIdx_12, _sigValue_3); - - /* adders[i].y1 <== segments[0].out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_74 = i + 0; - _offset_118 = _compIdx_11 + ctx->field->toInt(_v_74)*_compSizes_11[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_118, 0x08ed8307b58a5a9fLL /* y1 */); - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_119 = _compIdx_12 + 0*_compSizes_12[1]; - _sigIdx_15 = ctx->getSignalOffset(_offset_119, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_offset_119, 0x19f79b1921bbcfffLL /* out */); - _offset_120 = _sigIdx_15 + 1*_sigSizes_13[1]; - ctx->getSignal(_offset_119, _offset_120, _sigValue_4); - ctx->setSignal(_offset_118, _sigIdx_14, _sigValue_4); - - /* adders[i].x2 <== segments[1].out[0] */ - _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_75 = i + 0; - _offset_122 = _compIdx_13 + ctx->field->toInt(_v_75)*_compSizes_13[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_122, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_123 = _compIdx_14 + 1*_compSizes_14[1]; - _sigIdx_17 = ctx->getSignalOffset(_offset_123, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_14 = ctx->getSignalSizes(_offset_123, 0x19f79b1921bbcfffLL /* out */); - _offset_124 = _sigIdx_17 + 0*_sigSizes_14[1]; - ctx->getSignal(_offset_123, _offset_124, _sigValue_5); - ctx->setSignal(_offset_122, _sigIdx_16, _sigValue_5); - - /* adders[i].y2 <== segments[1].out[1] */ - _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_76 = i + 0; - _offset_126 = _compIdx_15 + ctx->field->toInt(_v_76)*_compSizes_15[1]; - _sigIdx_18 = ctx->getSignalOffset(_offset_126, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _offset_127 = _compIdx_16 + 1*_compSizes_16[1]; - _sigIdx_19 = ctx->getSignalOffset(_offset_127, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_offset_127, 0x19f79b1921bbcfffLL /* out */); - _offset_128 = _sigIdx_19 + 1*_sigSizes_15[1]; - ctx->getSignal(_offset_127, _offset_128, _sigValue_6); - ctx->setSignal(_offset_126, _sigIdx_18, _sigValue_6); - } else { - - /* adders[i].x1 <== adders[i-1].xout */ - _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_77 = i + 0; - _offset_130 = _compIdx_17 + ctx->field->toInt(_v_77)*_compSizes_17[1]; - _sigIdx_20 = ctx->getSignalOffset(_offset_130, 0x08f10707b58d70c2LL /* x1 */); - _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_78 = i + 0; - ctx->field->sub(_tmp_48,_v_78,_const_14); - _offset_132 = _compIdx_18 + ctx->field->toInt(_tmp_48)*_compSizes_18[1]; - _sigIdx_21 = ctx->getSignalOffset(_offset_132, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_offset_132, _sigIdx_21, _sigValue_7); - ctx->setSignal(_offset_130, _sigIdx_20, _sigValue_7); - - /* adders[i].y1 <== adders[i-1].yout */ - _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_79 = i + 0; - _offset_134 = _compIdx_19 + ctx->field->toInt(_v_79)*_compSizes_19[1]; - _sigIdx_22 = ctx->getSignalOffset(_offset_134, 0x08ed8307b58a5a9fLL /* y1 */); - _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_80 = i + 0; - ctx->field->sub(_tmp_49,_v_80,_const_15); - _offset_136 = _compIdx_20 + ctx->field->toInt(_tmp_49)*_compSizes_20[1]; - _sigIdx_23 = ctx->getSignalOffset(_offset_136, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_offset_136, _sigIdx_23, _sigValue_8); - ctx->setSignal(_offset_134, _sigIdx_22, _sigValue_8); - - /* adders[i].x2 <== segments[i+1].out[0] */ - _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_81 = i + 0; - _offset_138 = _compIdx_21 + ctx->field->toInt(_v_81)*_compSizes_21[1]; - _sigIdx_24 = ctx->getSignalOffset(_offset_138, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_82 = i + 0; - ctx->field->add(_tmp_50,_v_82,_const_16); - _offset_140 = _compIdx_22 + ctx->field->toInt(_tmp_50)*_compSizes_22[1]; - _sigIdx_25 = ctx->getSignalOffset(_offset_140, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_16 = ctx->getSignalSizes(_offset_140, 0x19f79b1921bbcfffLL /* out */); - _offset_141 = _sigIdx_25 + 0*_sigSizes_16[1]; - ctx->getSignal(_offset_140, _offset_141, _sigValue_9); - ctx->setSignal(_offset_138, _sigIdx_24, _sigValue_9); - - /* adders[i].y2 <== segments[i+1].out[1] */ - _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_83 = i + 0; - _offset_143 = _compIdx_23 + ctx->field->toInt(_v_83)*_compSizes_23[1]; - _sigIdx_26 = ctx->getSignalOffset(_offset_143, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x3ac964cacba9f1cfLL /* segments */); - _v_84 = i + 0; - ctx->field->add(_tmp_51,_v_84,_const_17); - _offset_145 = _compIdx_24 + ctx->field->toInt(_tmp_51)*_compSizes_24[1]; - _sigIdx_27 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_17 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _offset_146 = _sigIdx_27 + 1*_sigSizes_17[1]; - ctx->getSignal(_offset_145, _offset_146, _sigValue_10); - ctx->setSignal(_offset_143, _sigIdx_26, _sigValue_10); - } - _v_85 = i + 0; - ctx->field->add(_tmp_52, _v_85, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_52, 1); - _v_86 = i + 0; - ctx->field->lt(_tmp_54,_v_86,_const_18); - _cond_5 = ctx->field->isTrue(_tmp_54); - } - - /* if (nSegments>1) */ - - /* out[0] <== adders[nSegments-2].xout */ - _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_153 = _compIdx_25 + 0*_compSizes_25[1]; - _sigIdx_28 = ctx->getSignalOffset(_offset_153, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_offset_153, _sigIdx_28, _sigValue_11); - _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_154 = _sigIdx_29 + 0*_sigSizes_18[1]; - ctx->setSignal(ctx->cIdx, _offset_154, _sigValue_11); - - /* out[1] <== adders[nSegments-2].yout */ - _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_156 = _compIdx_26 + 0*_compSizes_26[1]; - _sigIdx_30 = ctx->getSignalOffset(_offset_156, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_offset_156, _sigIdx_30, _sigValue_12); - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_157 = _sigIdx_31 + 1*_sigSizes_19[1]; - ctx->setSignal(ctx->cIdx, _offset_157, _sigValue_12); - - // Footer - ctx->freeBigInts(_v_8, 1); - ctx->freeBigInts(_v_11, 1); - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_v_28, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_num_37, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(nBits, 1); - ctx->freeBigInts(nWindows, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_num_42, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(BASE, 20); - ctx->freeBigInts(_num_50, 1); - ctx->freeBigInts(_tmp_33, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_34, 1); - ctx->freeBigInts(_tmp_35, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_tmp_36, 1); - ctx->freeBigInts(_tmp_37, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_38, 1); - ctx->freeBigInts(_tmp_39, 1); - ctx->freeBigInts(_num_53, 1); - ctx->freeBigInts(_tmp_40, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_41, 1); - ctx->freeBigInts(_tmp_42, 1); - ctx->freeBigInts(_tmp_43, 1); - ctx->freeBigInts(_const_11, 1); - ctx->freeBigInts(_tmp_44, 1); - ctx->freeBigInts(_num_55, 1); - ctx->freeBigInts(_const_12, 1); - ctx->freeBigInts(_tmp_46, 1); - ctx->freeBigInts(_const_13, 1); - ctx->freeBigInts(_tmp_47, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_const_14, 1); - ctx->freeBigInts(_tmp_48, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_15, 1); - ctx->freeBigInts(_tmp_49, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_const_16, 1); - ctx->freeBigInts(_tmp_50, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const_17, 1); - ctx->freeBigInts(_tmp_51, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_tmp_52, 1); - ctx->freeBigInts(_const_18, 1); - ctx->freeBigInts(_tmp_54, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_sigValue_12, 1); -} - -/* -Segment -base[0]=0 -base[1]=0 -nWindows=50 -*/ -void Segment_a5b1c16b0dc672ca(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue = ctx->allocBigInts(1); - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes; - int _offset_9; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_10; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_11; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_4; - Circom_Sizes _compSizes_1; - int _offset_13; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - int _offset_14; - int _compIdx_5; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_15; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - Circom_Sizes _compSizes_2; - int _offset_19; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_21; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_24; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - int _compIdx_7; - Circom_Sizes _compSizes_3; - int _offset_29; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - PBigInt _v_13; - int _offset_31; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - PBigInt _v_15; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _offset_34; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _v_16; - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _v_17; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "4", 10); - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond_1; - PBigInt _v_21; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "0", 10); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _compIdx_8; - Circom_Sizes _compSizes_4; - PBigInt _v_22; - int _offset_44; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_45; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_46; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _compIdx_10; - Circom_Sizes _compSizes_5; - PBigInt _v_23; - int _offset_48; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_49; - int _compIdx_11; - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_50; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _compIdx_12; - Circom_Sizes _compSizes_6; - PBigInt _v_24; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _offset_52; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_53; - int _compIdx_13; - Circom_Sizes _compSizes_7; - PBigInt _v_25; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "1", 10); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _offset_55; - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_56; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _compIdx_14; - Circom_Sizes _compSizes_8; - PBigInt _v_26; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_16 = ctx->allocBigInts(1); - int _offset_58; - int _sigIdx_18; - Circom_Sizes _sigSizes_18; - int _offset_59; - int _compIdx_15; - Circom_Sizes _compSizes_9; - PBigInt _v_27; - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "1", 10); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _offset_61; - int _sigIdx_19; - Circom_Sizes _sigSizes_19; - int _offset_62; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - int _compIdx_16; - Circom_Sizes _compSizes_10; - PBigInt _v_28; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _offset_64; - int _sigIdx_20; - Circom_Sizes _sigSizes_20; - int _offset_65; - int _compIdx_17; - Circom_Sizes _compSizes_11; - PBigInt _v_29; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "1", 10); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _offset_67; - int _sigIdx_21; - Circom_Sizes _sigSizes_21; - int _offset_68; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - int _compIdx_18; - Circom_Sizes _compSizes_12; - PBigInt _v_30; - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "1", 10); - PBigInt _tmp_20 = ctx->allocBigInts(1); - int _offset_70; - int _sigIdx_22; - Circom_Sizes _sigSizes_22; - int _offset_71; - int _compIdx_19; - Circom_Sizes _compSizes_13; - PBigInt _v_31; - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "1", 10); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _offset_73; - int _sigIdx_23; - Circom_Sizes _sigSizes_23; - int _offset_74; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - int _compIdx_20; - Circom_Sizes _compSizes_14; - PBigInt _v_32; - int _offset_76; - int _sigIdx_24; - Circom_Sizes _sigSizes_24; - int _offset_77; - int _compIdx_21; - Circom_Sizes _compSizes_15; - PBigInt _v_33; - PBigInt _const_11; - _const_11 = ctx->allocBigInts(1); - mpz_set_str(_const_11[0], "1", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - int _offset_79; - int _sigIdx_25; - Circom_Sizes _sigSizes_25; - int _offset_80; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - int _compIdx_22; - Circom_Sizes _compSizes_16; - PBigInt _v_34; - int _offset_82; - int _sigIdx_26; - Circom_Sizes _sigSizes_26; - int _offset_83; - int _compIdx_23; - Circom_Sizes _compSizes_17; - PBigInt _v_35; - PBigInt _const_12; - _const_12 = ctx->allocBigInts(1); - mpz_set_str(_const_12[0], "1", 10); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _offset_85; - int _sigIdx_27; - Circom_Sizes _sigSizes_27; - int _offset_86; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _v_36; - PBigInt _const_13; - _const_13 = ctx->allocBigInts(1); - mpz_set_str(_const_13[0], "1", 10); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _compIdx_24; - Circom_Sizes _compSizes_18; - PBigInt _v_37; - PBigInt _const_14; - _const_14 = ctx->allocBigInts(1); - mpz_set_str(_const_14[0], "1", 10); - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _offset_89; - int _sigIdx_28; - Circom_Sizes _sigSizes_28; - int _offset_90; - int _compIdx_25; - Circom_Sizes _compSizes_19; - int _offset_91; - int _sigIdx_29; - Circom_Sizes _sigSizes_29; - int _offset_92; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - int _compIdx_26; - Circom_Sizes _compSizes_20; - PBigInt _v_38; - PBigInt _const_15; - _const_15 = ctx->allocBigInts(1); - mpz_set_str(_const_15[0], "1", 10); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _offset_94; - int _sigIdx_30; - Circom_Sizes _sigSizes_30; - int _offset_95; - int _compIdx_27; - Circom_Sizes _compSizes_21; - int _offset_96; - int _sigIdx_31; - Circom_Sizes _sigSizes_31; - int _offset_97; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - int _compIdx_28; - Circom_Sizes _compSizes_22; - PBigInt _v_39; - PBigInt _const_16; - _const_16 = ctx->allocBigInts(1); - mpz_set_str(_const_16[0], "1", 10); - PBigInt _tmp_27 = ctx->allocBigInts(1); - int _offset_99; - int _sigIdx_32; - Circom_Sizes _sigSizes_32; - int _offset_100; - int _compIdx_29; - Circom_Sizes _compSizes_23; - PBigInt _v_40; - PBigInt _const_17; - _const_17 = ctx->allocBigInts(1); - mpz_set_str(_const_17[0], "2", 10); - PBigInt _tmp_28 = ctx->allocBigInts(1); - int _offset_102; - int _sigIdx_33; - Circom_Sizes _sigSizes_33; - int _offset_103; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - int _compIdx_30; - Circom_Sizes _compSizes_24; - PBigInt _v_41; - PBigInt _const_18; - _const_18 = ctx->allocBigInts(1); - mpz_set_str(_const_18[0], "1", 10); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _offset_105; - int _sigIdx_34; - Circom_Sizes _sigSizes_34; - int _offset_106; - int _compIdx_31; - Circom_Sizes _compSizes_25; - PBigInt _v_42; - PBigInt _const_19; - _const_19 = ctx->allocBigInts(1); - mpz_set_str(_const_19[0], "2", 10); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _offset_108; - int _sigIdx_35; - Circom_Sizes _sigSizes_35; - int _offset_109; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - int _compIdx_32; - Circom_Sizes _compSizes_26; - PBigInt _v_43; - PBigInt _const_20; - _const_20 = ctx->allocBigInts(1); - mpz_set_str(_const_20[0], "1", 10); - PBigInt _tmp_31 = ctx->allocBigInts(1); - int _offset_111; - int _sigIdx_36; - Circom_Sizes _sigSizes_36; - int _offset_112; - int _compIdx_33; - Circom_Sizes _compSizes_27; - PBigInt _v_44; - int _offset_114; - int _sigIdx_37; - Circom_Sizes _sigSizes_37; - int _offset_115; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - int _compIdx_34; - Circom_Sizes _compSizes_28; - PBigInt _v_45; - PBigInt _const_21; - _const_21 = ctx->allocBigInts(1); - mpz_set_str(_const_21[0], "1", 10); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _offset_117; - int _sigIdx_38; - Circom_Sizes _sigSizes_38; - int _offset_118; - int _compIdx_35; - Circom_Sizes _compSizes_29; - PBigInt _v_46; - int _offset_120; - int _sigIdx_39; - Circom_Sizes _sigSizes_39; - int _offset_121; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _num_66 = ctx->allocBigInts(1); - PBigInt _v_47; - PBigInt _const_22; - _const_22 = ctx->allocBigInts(1); - mpz_set_str(_const_22[0], "4", 10); - PBigInt _tmp_33 = ctx->allocBigInts(1); - int _cond_2; - int _compIdx_36; - Circom_Sizes _compSizes_30; - PBigInt _v_48; - int _offset_125; - int _sigIdx_40; - Circom_Sizes _sigSizes_40; - PBigInt _v_49; - int _offset_127; - int _sigIdx_41; - Circom_Sizes _sigSizes_41; - PBigInt _v_50; - PBigInt _const_23; - _const_23 = ctx->allocBigInts(1); - mpz_set_str(_const_23[0], "4", 10); - PBigInt _tmp_34 = ctx->allocBigInts(1); - PBigInt _v_51; - PBigInt _tmp_35 = ctx->allocBigInts(1); - int _offset_130; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _v_52; - PBigInt _tmp_36 = ctx->allocBigInts(1); - PBigInt _v_53; - PBigInt _const_24; - _const_24 = ctx->allocBigInts(1); - mpz_set_str(_const_24[0], "4", 10); - PBigInt _tmp_37 = ctx->allocBigInts(1); - PBigInt _v_54; - PBigInt _tmp_38 = ctx->allocBigInts(1); - PBigInt _v_55; - PBigInt _const_25; - _const_25 = ctx->allocBigInts(1); - mpz_set_str(_const_25[0], "50", 10); - PBigInt _tmp_39 = ctx->allocBigInts(1); - int _compIdx_37; - int _sigIdx_42; - Circom_Sizes _sigSizes_42; - int _offset_139; - int _compIdx_38; - Circom_Sizes _compSizes_31; - int _offset_141; - int _sigIdx_43; - Circom_Sizes _sigSizes_43; - int _offset_142; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - int _compIdx_39; - int _sigIdx_44; - Circom_Sizes _sigSizes_44; - int _offset_143; - int _compIdx_40; - Circom_Sizes _compSizes_32; - int _offset_145; - int _sigIdx_45; - Circom_Sizes _sigSizes_45; - int _offset_146; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - int _compIdx_41; - int _sigIdx_46; - Circom_Sizes _sigSizes_46; - int _offset_147; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _sigIdx_47; - Circom_Sizes _sigSizes_47; - int _offset_148; - int _compIdx_42; - int _sigIdx_48; - Circom_Sizes _sigSizes_48; - int _offset_149; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - int _sigIdx_49; - Circom_Sizes _sigSizes_49; - int _offset_150; - - - /* signal input in[nWindows*4] */ - - /* signal input base[2] */ - - /* signal output out[2] */ - - /* var i */ - - /* var j */ - - /* component e2m = Edwards2Montgomery() */ - - /* e2m.in[0] <== base[0] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0x08b73807b55c4bbeLL /* in */); - _offset = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); - ctx->setSignal(_compIdx, _offset, _sigValue); - - /* e2m.in[1] <== base[1] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); - - /* component windows[nWindows] */ - - /* component doublers1[nWindows-1] */ - - /* component doublers2[nWindows-1] */ - - /* component adders[nWindows-1] */ - - /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_9 = _compIdx_2 + 0*_compSizes[1]; - _sigIdx_4 = ctx->getSignalOffset(_offset_9, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_4 = ctx->getSignalSizes(_offset_9, 0x9a7ce19baa54c278LL /* base */); - _offset_10 = _sigIdx_4 + 0*_sigSizes_4[1]; - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); - _offset_11 = _sigIdx_5 + 0*_sigSizes_5[1]; - ctx->getSignal(_compIdx_3, _offset_11, _sigValue_2); - ctx->setSignal(_offset_9, _offset_10, _sigValue_2); - - /* windows[i].base[1] <== e2m.out[1] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_13 = _compIdx_4 + 0*_compSizes_1[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_13, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_6 = ctx->getSignalSizes(_offset_13, 0x9a7ce19baa54c278LL /* base */); - _offset_14 = _sigIdx_6 + 1*_sigSizes_6[1]; - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_7 = ctx->getSignalOffset(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); - _offset_15 = _sigIdx_7 + 1*_sigSizes_7[1]; - ctx->getSignal(_compIdx_5, _offset_15, _sigValue_3); - ctx->setSignal(_offset_13, _offset_14, _sigValue_3); - - /* for (j=0,j<4,j++) */ - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_19 = _compIdx_6 + 0*_compSizes_2[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_19, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(_offset_19, 0x08b73807b55c4bbeLL /* in */); - _offset_21 = _sigIdx_8 + 0*_sigSizes_8[1]; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_24 = _sigIdx_9 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_4); - ctx->setSignal(_offset_19, _offset_21, _sigValue_4); - mpz_set_str(_tmp_6[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_6); - while (_cond) { - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_29 = _compIdx_7 + 0*_compSizes_3[1]; - _sigIdx_10 = ctx->getSignalOffset(_offset_29, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(_offset_29, 0x08b73807b55c4bbeLL /* in */); - _v_13 = j + 0; - _offset_31 = _sigIdx_10 + ctx->field->toInt(_v_13)*_sigSizes_10[1]; - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_15 = j + 0; - ctx->field->add(_tmp_8,_const,_v_15); - _offset_34 = _sigIdx_11 + ctx->field->toInt(_tmp_8)*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_34, _sigValue_5); - ctx->setSignal(_offset_29, _offset_31, _sigValue_5); - _v_16 = j + 0; - ctx->field->add(_tmp_9, _v_16, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_9, 1); - _v_17 = j + 0; - ctx->field->lt(_tmp_10,_v_17,_const_1); - _cond = ctx->field->isTrue(_tmp_10); - } - mpz_set_str(_tmp_12[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond_1 = ctx->field->isTrue(_tmp_12); - while (_cond_1) { - - /* windows[i] = Window4() */ - - /* if (i==0) */ - _v_21 = i + 0; - ctx->field->eq(_tmp_13,_v_21,_const_2); - if (ctx->field->isTrue(_tmp_13)) { - - /* windows[i].base[0] <== e2m.out[0] */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_22 = i + 0; - _offset_44 = _compIdx_8 + ctx->field->toInt(_v_22)*_compSizes_4[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_44, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_12 = ctx->getSignalSizes(_offset_44, 0x9a7ce19baa54c278LL /* base */); - _offset_45 = _sigIdx_12 + 0*_sigSizes_12[1]; - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_46 = _sigIdx_13 + 0*_sigSizes_13[1]; - ctx->getSignal(_compIdx_9, _offset_46, _sigValue_6); - ctx->setSignal(_offset_44, _offset_45, _sigValue_6); - - /* windows[i].base[1] <== e2m.out[1] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_23 = i + 0; - _offset_48 = _compIdx_10 + ctx->field->toInt(_v_23)*_compSizes_5[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_48, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_14 = ctx->getSignalSizes(_offset_48, 0x9a7ce19baa54c278LL /* base */); - _offset_49 = _sigIdx_14 + 1*_sigSizes_14[1]; - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_15 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _offset_50 = _sigIdx_15 + 1*_sigSizes_15[1]; - ctx->getSignal(_compIdx_11, _offset_50, _sigValue_7); - ctx->setSignal(_offset_48, _offset_49, _sigValue_7); - } else { - - /* doublers1[i-1] = MontgomeryDouble() */ - - /* doublers2[i-1] = MontgomeryDouble() */ - - /* doublers1[i-1].in[0] <== windows[i-1].out8[0] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_24 = i + 0; - ctx->field->sub(_tmp_14,_v_24,_const_3); - _offset_52 = _compIdx_12 + ctx->field->toInt(_tmp_14)*_compSizes_6[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_52, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_16 = ctx->getSignalSizes(_offset_52, 0x08b73807b55c4bbeLL /* in */); - _offset_53 = _sigIdx_16 + 0*_sigSizes_16[1]; - _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_25 = i + 0; - ctx->field->sub(_tmp_15,_v_25,_const_4); - _offset_55 = _compIdx_13 + ctx->field->toInt(_tmp_15)*_compSizes_7[1]; - _sigIdx_17 = ctx->getSignalOffset(_offset_55, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_17 = ctx->getSignalSizes(_offset_55, 0xdb8c52b452220f25LL /* out8 */); - _offset_56 = _sigIdx_17 + 0*_sigSizes_17[1]; - ctx->getSignal(_offset_55, _offset_56, _sigValue_8); - ctx->setSignal(_offset_52, _offset_53, _sigValue_8); - - /* doublers1[i-1].in[1] <== windows[i-1].out8[1] */ - _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_26 = i + 0; - ctx->field->sub(_tmp_16,_v_26,_const_5); - _offset_58 = _compIdx_14 + ctx->field->toInt(_tmp_16)*_compSizes_8[1]; - _sigIdx_18 = ctx->getSignalOffset(_offset_58, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_18 = ctx->getSignalSizes(_offset_58, 0x08b73807b55c4bbeLL /* in */); - _offset_59 = _sigIdx_18 + 1*_sigSizes_18[1]; - _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_27 = i + 0; - ctx->field->sub(_tmp_17,_v_27,_const_6); - _offset_61 = _compIdx_15 + ctx->field->toInt(_tmp_17)*_compSizes_9[1]; - _sigIdx_19 = ctx->getSignalOffset(_offset_61, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_19 = ctx->getSignalSizes(_offset_61, 0xdb8c52b452220f25LL /* out8 */); - _offset_62 = _sigIdx_19 + 1*_sigSizes_19[1]; - ctx->getSignal(_offset_61, _offset_62, _sigValue_9); - ctx->setSignal(_offset_58, _offset_59, _sigValue_9); - - /* doublers2[i-1].in[0] <== doublers1[i-1].out[0] */ - _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_28 = i + 0; - ctx->field->sub(_tmp_18,_v_28,_const_7); - _offset_64 = _compIdx_16 + ctx->field->toInt(_tmp_18)*_compSizes_10[1]; - _sigIdx_20 = ctx->getSignalOffset(_offset_64, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_20 = ctx->getSignalSizes(_offset_64, 0x08b73807b55c4bbeLL /* in */); - _offset_65 = _sigIdx_20 + 0*_sigSizes_20[1]; - _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_29 = i + 0; - ctx->field->sub(_tmp_19,_v_29,_const_8); - _offset_67 = _compIdx_17 + ctx->field->toInt(_tmp_19)*_compSizes_11[1]; - _sigIdx_21 = ctx->getSignalOffset(_offset_67, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_21 = ctx->getSignalSizes(_offset_67, 0x19f79b1921bbcfffLL /* out */); - _offset_68 = _sigIdx_21 + 0*_sigSizes_21[1]; - ctx->getSignal(_offset_67, _offset_68, _sigValue_10); - ctx->setSignal(_offset_64, _offset_65, _sigValue_10); - - /* doublers2[i-1].in[1] <== doublers1[i-1].out[1] */ - _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_30 = i + 0; - ctx->field->sub(_tmp_20,_v_30,_const_9); - _offset_70 = _compIdx_18 + ctx->field->toInt(_tmp_20)*_compSizes_12[1]; - _sigIdx_22 = ctx->getSignalOffset(_offset_70, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_22 = ctx->getSignalSizes(_offset_70, 0x08b73807b55c4bbeLL /* in */); - _offset_71 = _sigIdx_22 + 1*_sigSizes_22[1]; - _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_31 = i + 0; - ctx->field->sub(_tmp_21,_v_31,_const_10); - _offset_73 = _compIdx_19 + ctx->field->toInt(_tmp_21)*_compSizes_13[1]; - _sigIdx_23 = ctx->getSignalOffset(_offset_73, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_23 = ctx->getSignalSizes(_offset_73, 0x19f79b1921bbcfffLL /* out */); - _offset_74 = _sigIdx_23 + 1*_sigSizes_23[1]; - ctx->getSignal(_offset_73, _offset_74, _sigValue_11); - ctx->setSignal(_offset_70, _offset_71, _sigValue_11); - - /* windows[i].base[0] <== doublers2[i-1].out[0] */ - _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_32 = i + 0; - _offset_76 = _compIdx_20 + ctx->field->toInt(_v_32)*_compSizes_14[1]; - _sigIdx_24 = ctx->getSignalOffset(_offset_76, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_24 = ctx->getSignalSizes(_offset_76, 0x9a7ce19baa54c278LL /* base */); - _offset_77 = _sigIdx_24 + 0*_sigSizes_24[1]; - _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_33 = i + 0; - ctx->field->sub(_tmp_22,_v_33,_const_11); - _offset_79 = _compIdx_21 + ctx->field->toInt(_tmp_22)*_compSizes_15[1]; - _sigIdx_25 = ctx->getSignalOffset(_offset_79, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_25 = ctx->getSignalSizes(_offset_79, 0x19f79b1921bbcfffLL /* out */); - _offset_80 = _sigIdx_25 + 0*_sigSizes_25[1]; - ctx->getSignal(_offset_79, _offset_80, _sigValue_12); - ctx->setSignal(_offset_76, _offset_77, _sigValue_12); - - /* windows[i].base[1] <== doublers2[i-1].out[1] */ - _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_34 = i + 0; - _offset_82 = _compIdx_22 + ctx->field->toInt(_v_34)*_compSizes_16[1]; - _sigIdx_26 = ctx->getSignalOffset(_offset_82, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_26 = ctx->getSignalSizes(_offset_82, 0x9a7ce19baa54c278LL /* base */); - _offset_83 = _sigIdx_26 + 1*_sigSizes_26[1]; - _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_35 = i + 0; - ctx->field->sub(_tmp_23,_v_35,_const_12); - _offset_85 = _compIdx_23 + ctx->field->toInt(_tmp_23)*_compSizes_17[1]; - _sigIdx_27 = ctx->getSignalOffset(_offset_85, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_27 = ctx->getSignalSizes(_offset_85, 0x19f79b1921bbcfffLL /* out */); - _offset_86 = _sigIdx_27 + 1*_sigSizes_27[1]; - ctx->getSignal(_offset_85, _offset_86, _sigValue_13); - ctx->setSignal(_offset_82, _offset_83, _sigValue_13); - - /* adders[i-1] = MontgomeryAdd() */ - - /* if (i==1) */ - _v_36 = i + 0; - ctx->field->eq(_tmp_24,_v_36,_const_13); - if (ctx->field->isTrue(_tmp_24)) { - - /* adders[i-1].in1[0] <== windows[0].out[0] */ - _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_37 = i + 0; - ctx->field->sub(_tmp_25,_v_37,_const_14); - _offset_89 = _compIdx_24 + ctx->field->toInt(_tmp_25)*_compSizes_18[1]; - _sigIdx_28 = ctx->getSignalOffset(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_28 = ctx->getSignalSizes(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_90 = _sigIdx_28 + 0*_sigSizes_28[1]; - _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_91 = _compIdx_25 + 0*_compSizes_19[1]; - _sigIdx_29 = ctx->getSignalOffset(_offset_91, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_29 = ctx->getSignalSizes(_offset_91, 0x19f79b1921bbcfffLL /* out */); - _offset_92 = _sigIdx_29 + 0*_sigSizes_29[1]; - ctx->getSignal(_offset_91, _offset_92, _sigValue_14); - ctx->setSignal(_offset_89, _offset_90, _sigValue_14); - - /* adders[i-1].in1[1] <== windows[0].out[1] */ - _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_38 = i + 0; - ctx->field->sub(_tmp_26,_v_38,_const_15); - _offset_94 = _compIdx_26 + ctx->field->toInt(_tmp_26)*_compSizes_20[1]; - _sigIdx_30 = ctx->getSignalOffset(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_30 = ctx->getSignalSizes(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_95 = _sigIdx_30 + 1*_sigSizes_30[1]; - _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_96 = _compIdx_27 + 0*_compSizes_21[1]; - _sigIdx_31 = ctx->getSignalOffset(_offset_96, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_31 = ctx->getSignalSizes(_offset_96, 0x19f79b1921bbcfffLL /* out */); - _offset_97 = _sigIdx_31 + 1*_sigSizes_31[1]; - ctx->getSignal(_offset_96, _offset_97, _sigValue_15); - ctx->setSignal(_offset_94, _offset_95, _sigValue_15); - } else { - - /* adders[i-1].in1[0] <== adders[i-2].out[0] */ - _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_39 = i + 0; - ctx->field->sub(_tmp_27,_v_39,_const_16); - _offset_99 = _compIdx_28 + ctx->field->toInt(_tmp_27)*_compSizes_22[1]; - _sigIdx_32 = ctx->getSignalOffset(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_32 = ctx->getSignalSizes(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_100 = _sigIdx_32 + 0*_sigSizes_32[1]; - _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_40 = i + 0; - ctx->field->sub(_tmp_28,_v_40,_const_17); - _offset_102 = _compIdx_29 + ctx->field->toInt(_tmp_28)*_compSizes_23[1]; - _sigIdx_33 = ctx->getSignalOffset(_offset_102, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_33 = ctx->getSignalSizes(_offset_102, 0x19f79b1921bbcfffLL /* out */); - _offset_103 = _sigIdx_33 + 0*_sigSizes_33[1]; - ctx->getSignal(_offset_102, _offset_103, _sigValue_16); - ctx->setSignal(_offset_99, _offset_100, _sigValue_16); - - /* adders[i-1].in1[1] <== adders[i-2].out[1] */ - _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_41 = i + 0; - ctx->field->sub(_tmp_29,_v_41,_const_18); - _offset_105 = _compIdx_30 + ctx->field->toInt(_tmp_29)*_compSizes_24[1]; - _sigIdx_34 = ctx->getSignalOffset(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_34 = ctx->getSignalSizes(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_106 = _sigIdx_34 + 1*_sigSizes_34[1]; - _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_42 = i + 0; - ctx->field->sub(_tmp_30,_v_42,_const_19); - _offset_108 = _compIdx_31 + ctx->field->toInt(_tmp_30)*_compSizes_25[1]; - _sigIdx_35 = ctx->getSignalOffset(_offset_108, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_35 = ctx->getSignalSizes(_offset_108, 0x19f79b1921bbcfffLL /* out */); - _offset_109 = _sigIdx_35 + 1*_sigSizes_35[1]; - ctx->getSignal(_offset_108, _offset_109, _sigValue_17); - ctx->setSignal(_offset_105, _offset_106, _sigValue_17); - } - - /* adders[i-1].in2[0] <== windows[i].out[0] */ - _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_43 = i + 0; - ctx->field->sub(_tmp_31,_v_43,_const_20); - _offset_111 = _compIdx_32 + ctx->field->toInt(_tmp_31)*_compSizes_26[1]; - _sigIdx_36 = ctx->getSignalOffset(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_36 = ctx->getSignalSizes(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_112 = _sigIdx_36 + 0*_sigSizes_36[1]; - _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_27 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_44 = i + 0; - _offset_114 = _compIdx_33 + ctx->field->toInt(_v_44)*_compSizes_27[1]; - _sigIdx_37 = ctx->getSignalOffset(_offset_114, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_37 = ctx->getSignalSizes(_offset_114, 0x19f79b1921bbcfffLL /* out */); - _offset_115 = _sigIdx_37 + 0*_sigSizes_37[1]; - ctx->getSignal(_offset_114, _offset_115, _sigValue_18); - ctx->setSignal(_offset_111, _offset_112, _sigValue_18); - - /* adders[i-1].in2[1] <== windows[i].out[1] */ - _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_28 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_45 = i + 0; - ctx->field->sub(_tmp_32,_v_45,_const_21); - _offset_117 = _compIdx_34 + ctx->field->toInt(_tmp_32)*_compSizes_28[1]; - _sigIdx_38 = ctx->getSignalOffset(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_38 = ctx->getSignalSizes(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_118 = _sigIdx_38 + 1*_sigSizes_38[1]; - _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_29 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_46 = i + 0; - _offset_120 = _compIdx_35 + ctx->field->toInt(_v_46)*_compSizes_29[1]; - _sigIdx_39 = ctx->getSignalOffset(_offset_120, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_39 = ctx->getSignalSizes(_offset_120, 0x19f79b1921bbcfffLL /* out */); - _offset_121 = _sigIdx_39 + 1*_sigSizes_39[1]; - ctx->getSignal(_offset_120, _offset_121, _sigValue_19); - ctx->setSignal(_offset_117, _offset_118, _sigValue_19); - } - - /* for (j=0,j<4,j++) */ - mpz_set_str(_num_66[0], "0", 10); - ctx->field->copyn(j, _num_66, 1); - _v_47 = j + 0; - ctx->field->lt(_tmp_33,_v_47,_const_22); - _cond_2 = ctx->field->isTrue(_tmp_33); - while (_cond_2) { - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_30 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_48 = i + 0; - _offset_125 = _compIdx_36 + ctx->field->toInt(_v_48)*_compSizes_30[1]; - _sigIdx_40 = ctx->getSignalOffset(_offset_125, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_40 = ctx->getSignalSizes(_offset_125, 0x08b73807b55c4bbeLL /* in */); - _v_49 = j + 0; - _offset_127 = _sigIdx_40 + ctx->field->toInt(_v_49)*_sigSizes_40[1]; - _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_50 = i + 0; - ctx->field->mul(_tmp_34,_const_23,_v_50); - _v_51 = j + 0; - ctx->field->add(_tmp_35,_tmp_34,_v_51); - _offset_130 = _sigIdx_41 + ctx->field->toInt(_tmp_35)*_sigSizes_41[1]; - ctx->getSignal(ctx->cIdx, _offset_130, _sigValue_20); - ctx->setSignal(_offset_125, _offset_127, _sigValue_20); - _v_52 = j + 0; - ctx->field->add(_tmp_36, _v_52, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_36, 1); - _v_53 = j + 0; - ctx->field->lt(_tmp_37,_v_53,_const_24); - _cond_2 = ctx->field->isTrue(_tmp_37); - } - _v_54 = i + 0; - ctx->field->add(_tmp_38, _v_54, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_38, 1); - _v_55 = i + 0; - ctx->field->lt(_tmp_39,_v_55,_const_25); - _cond_1 = ctx->field->isTrue(_tmp_39); - } - - /* component m2e = Montgomery2Edwards() */ - - /* if (nWindows > 1) */ - - /* m2e.in[0] <== adders[nWindows-2].out[0] */ - _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_42 = ctx->getSignalOffset(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_42 = ctx->getSignalSizes(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); - _offset_139 = _sigIdx_42 + 0*_sigSizes_42[1]; - _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_31 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_141 = _compIdx_38 + 48*_compSizes_31[1]; - _sigIdx_43 = ctx->getSignalOffset(_offset_141, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_43 = ctx->getSignalSizes(_offset_141, 0x19f79b1921bbcfffLL /* out */); - _offset_142 = _sigIdx_43 + 0*_sigSizes_43[1]; - ctx->getSignal(_offset_141, _offset_142, _sigValue_21); - ctx->setSignal(_compIdx_37, _offset_139, _sigValue_21); - - /* m2e.in[1] <== adders[nWindows-2].out[1] */ - _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_44 = ctx->getSignalOffset(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_44 = ctx->getSignalSizes(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); - _offset_143 = _sigIdx_44 + 1*_sigSizes_44[1]; - _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_32 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_145 = _compIdx_40 + 48*_compSizes_32[1]; - _sigIdx_45 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_45 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _offset_146 = _sigIdx_45 + 1*_sigSizes_45[1]; - ctx->getSignal(_offset_145, _offset_146, _sigValue_22); - ctx->setSignal(_compIdx_39, _offset_143, _sigValue_22); - - /* out[0] <== m2e.out[0] */ - _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_46 = ctx->getSignalOffset(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_46 = ctx->getSignalSizes(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); - _offset_147 = _sigIdx_46 + 0*_sigSizes_46[1]; - ctx->getSignal(_compIdx_41, _offset_147, _sigValue_23); - _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_148 = _sigIdx_47 + 0*_sigSizes_47[1]; - ctx->setSignal(ctx->cIdx, _offset_148, _sigValue_23); - - /* out[1] <== m2e.out[1] */ - _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_48 = ctx->getSignalOffset(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_48 = ctx->getSignalSizes(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); - _offset_149 = _sigIdx_48 + 1*_sigSizes_48[1]; - ctx->getSignal(_compIdx_42, _offset_149, _sigValue_24); - _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_150 = _sigIdx_49 + 1*_sigSizes_49[1]; - ctx->setSignal(ctx->cIdx, _offset_150, _sigValue_24); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_const_11, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_const_12, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_const_13, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_const_14, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_const_15, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_const_16, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_const_17, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_const_18, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_const_19, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_const_20, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_const_21, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_num_66, 1); - ctx->freeBigInts(_const_22, 1); - ctx->freeBigInts(_tmp_33, 1); - ctx->freeBigInts(_const_23, 1); - ctx->freeBigInts(_tmp_34, 1); - ctx->freeBigInts(_tmp_35, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_tmp_36, 1); - ctx->freeBigInts(_const_24, 1); - ctx->freeBigInts(_tmp_37, 1); - ctx->freeBigInts(_tmp_38, 1); - ctx->freeBigInts(_const_25, 1); - ctx->freeBigInts(_tmp_39, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); -} - -/* -Segment -base[0]=0 -base[1]=0 -nWindows=14 -*/ -void Segment_a5bfbd6b0dd2a95a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue = ctx->allocBigInts(1); - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes; - int _offset_9; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_10; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_11; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_4; - Circom_Sizes _compSizes_1; - int _offset_13; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - int _offset_14; - int _compIdx_5; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_15; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - Circom_Sizes _compSizes_2; - int _offset_19; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_21; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_24; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - int _compIdx_7; - Circom_Sizes _compSizes_3; - int _offset_29; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - PBigInt _v_13; - int _offset_31; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - PBigInt _v_15; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _offset_34; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _v_16; - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _v_17; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "4", 10); - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond_1; - PBigInt _v_21; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "0", 10); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _compIdx_8; - Circom_Sizes _compSizes_4; - PBigInt _v_22; - int _offset_44; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_45; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_46; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _compIdx_10; - Circom_Sizes _compSizes_5; - PBigInt _v_23; - int _offset_48; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_49; - int _compIdx_11; - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_50; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _compIdx_12; - Circom_Sizes _compSizes_6; - PBigInt _v_24; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _offset_52; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_53; - int _compIdx_13; - Circom_Sizes _compSizes_7; - PBigInt _v_25; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "1", 10); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _offset_55; - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_56; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _compIdx_14; - Circom_Sizes _compSizes_8; - PBigInt _v_26; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_16 = ctx->allocBigInts(1); - int _offset_58; - int _sigIdx_18; - Circom_Sizes _sigSizes_18; - int _offset_59; - int _compIdx_15; - Circom_Sizes _compSizes_9; - PBigInt _v_27; - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "1", 10); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _offset_61; - int _sigIdx_19; - Circom_Sizes _sigSizes_19; - int _offset_62; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - int _compIdx_16; - Circom_Sizes _compSizes_10; - PBigInt _v_28; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _offset_64; - int _sigIdx_20; - Circom_Sizes _sigSizes_20; - int _offset_65; - int _compIdx_17; - Circom_Sizes _compSizes_11; - PBigInt _v_29; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "1", 10); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _offset_67; - int _sigIdx_21; - Circom_Sizes _sigSizes_21; - int _offset_68; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - int _compIdx_18; - Circom_Sizes _compSizes_12; - PBigInt _v_30; - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "1", 10); - PBigInt _tmp_20 = ctx->allocBigInts(1); - int _offset_70; - int _sigIdx_22; - Circom_Sizes _sigSizes_22; - int _offset_71; - int _compIdx_19; - Circom_Sizes _compSizes_13; - PBigInt _v_31; - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "1", 10); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _offset_73; - int _sigIdx_23; - Circom_Sizes _sigSizes_23; - int _offset_74; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - int _compIdx_20; - Circom_Sizes _compSizes_14; - PBigInt _v_32; - int _offset_76; - int _sigIdx_24; - Circom_Sizes _sigSizes_24; - int _offset_77; - int _compIdx_21; - Circom_Sizes _compSizes_15; - PBigInt _v_33; - PBigInt _const_11; - _const_11 = ctx->allocBigInts(1); - mpz_set_str(_const_11[0], "1", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - int _offset_79; - int _sigIdx_25; - Circom_Sizes _sigSizes_25; - int _offset_80; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - int _compIdx_22; - Circom_Sizes _compSizes_16; - PBigInt _v_34; - int _offset_82; - int _sigIdx_26; - Circom_Sizes _sigSizes_26; - int _offset_83; - int _compIdx_23; - Circom_Sizes _compSizes_17; - PBigInt _v_35; - PBigInt _const_12; - _const_12 = ctx->allocBigInts(1); - mpz_set_str(_const_12[0], "1", 10); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _offset_85; - int _sigIdx_27; - Circom_Sizes _sigSizes_27; - int _offset_86; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _v_36; - PBigInt _const_13; - _const_13 = ctx->allocBigInts(1); - mpz_set_str(_const_13[0], "1", 10); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _compIdx_24; - Circom_Sizes _compSizes_18; - PBigInt _v_37; - PBigInt _const_14; - _const_14 = ctx->allocBigInts(1); - mpz_set_str(_const_14[0], "1", 10); - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _offset_89; - int _sigIdx_28; - Circom_Sizes _sigSizes_28; - int _offset_90; - int _compIdx_25; - Circom_Sizes _compSizes_19; - int _offset_91; - int _sigIdx_29; - Circom_Sizes _sigSizes_29; - int _offset_92; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - int _compIdx_26; - Circom_Sizes _compSizes_20; - PBigInt _v_38; - PBigInt _const_15; - _const_15 = ctx->allocBigInts(1); - mpz_set_str(_const_15[0], "1", 10); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _offset_94; - int _sigIdx_30; - Circom_Sizes _sigSizes_30; - int _offset_95; - int _compIdx_27; - Circom_Sizes _compSizes_21; - int _offset_96; - int _sigIdx_31; - Circom_Sizes _sigSizes_31; - int _offset_97; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - int _compIdx_28; - Circom_Sizes _compSizes_22; - PBigInt _v_39; - PBigInt _const_16; - _const_16 = ctx->allocBigInts(1); - mpz_set_str(_const_16[0], "1", 10); - PBigInt _tmp_27 = ctx->allocBigInts(1); - int _offset_99; - int _sigIdx_32; - Circom_Sizes _sigSizes_32; - int _offset_100; - int _compIdx_29; - Circom_Sizes _compSizes_23; - PBigInt _v_40; - PBigInt _const_17; - _const_17 = ctx->allocBigInts(1); - mpz_set_str(_const_17[0], "2", 10); - PBigInt _tmp_28 = ctx->allocBigInts(1); - int _offset_102; - int _sigIdx_33; - Circom_Sizes _sigSizes_33; - int _offset_103; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - int _compIdx_30; - Circom_Sizes _compSizes_24; - PBigInt _v_41; - PBigInt _const_18; - _const_18 = ctx->allocBigInts(1); - mpz_set_str(_const_18[0], "1", 10); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _offset_105; - int _sigIdx_34; - Circom_Sizes _sigSizes_34; - int _offset_106; - int _compIdx_31; - Circom_Sizes _compSizes_25; - PBigInt _v_42; - PBigInt _const_19; - _const_19 = ctx->allocBigInts(1); - mpz_set_str(_const_19[0], "2", 10); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _offset_108; - int _sigIdx_35; - Circom_Sizes _sigSizes_35; - int _offset_109; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - int _compIdx_32; - Circom_Sizes _compSizes_26; - PBigInt _v_43; - PBigInt _const_20; - _const_20 = ctx->allocBigInts(1); - mpz_set_str(_const_20[0], "1", 10); - PBigInt _tmp_31 = ctx->allocBigInts(1); - int _offset_111; - int _sigIdx_36; - Circom_Sizes _sigSizes_36; - int _offset_112; - int _compIdx_33; - Circom_Sizes _compSizes_27; - PBigInt _v_44; - int _offset_114; - int _sigIdx_37; - Circom_Sizes _sigSizes_37; - int _offset_115; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - int _compIdx_34; - Circom_Sizes _compSizes_28; - PBigInt _v_45; - PBigInt _const_21; - _const_21 = ctx->allocBigInts(1); - mpz_set_str(_const_21[0], "1", 10); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _offset_117; - int _sigIdx_38; - Circom_Sizes _sigSizes_38; - int _offset_118; - int _compIdx_35; - Circom_Sizes _compSizes_29; - PBigInt _v_46; - int _offset_120; - int _sigIdx_39; - Circom_Sizes _sigSizes_39; - int _offset_121; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _num_66 = ctx->allocBigInts(1); - PBigInt _v_47; - PBigInt _const_22; - _const_22 = ctx->allocBigInts(1); - mpz_set_str(_const_22[0], "4", 10); - PBigInt _tmp_33 = ctx->allocBigInts(1); - int _cond_2; - int _compIdx_36; - Circom_Sizes _compSizes_30; - PBigInt _v_48; - int _offset_125; - int _sigIdx_40; - Circom_Sizes _sigSizes_40; - PBigInt _v_49; - int _offset_127; - int _sigIdx_41; - Circom_Sizes _sigSizes_41; - PBigInt _v_50; - PBigInt _const_23; - _const_23 = ctx->allocBigInts(1); - mpz_set_str(_const_23[0], "4", 10); - PBigInt _tmp_34 = ctx->allocBigInts(1); - PBigInt _v_51; - PBigInt _tmp_35 = ctx->allocBigInts(1); - int _offset_130; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _v_52; - PBigInt _tmp_36 = ctx->allocBigInts(1); - PBigInt _v_53; - PBigInt _const_24; - _const_24 = ctx->allocBigInts(1); - mpz_set_str(_const_24[0], "4", 10); - PBigInt _tmp_37 = ctx->allocBigInts(1); - PBigInt _v_54; - PBigInt _tmp_38 = ctx->allocBigInts(1); - PBigInt _v_55; - PBigInt _const_25; - _const_25 = ctx->allocBigInts(1); - mpz_set_str(_const_25[0], "14", 10); - PBigInt _tmp_39 = ctx->allocBigInts(1); - int _compIdx_37; - int _sigIdx_42; - Circom_Sizes _sigSizes_42; - int _offset_139; - int _compIdx_38; - Circom_Sizes _compSizes_31; - int _offset_141; - int _sigIdx_43; - Circom_Sizes _sigSizes_43; - int _offset_142; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - int _compIdx_39; - int _sigIdx_44; - Circom_Sizes _sigSizes_44; - int _offset_143; - int _compIdx_40; - Circom_Sizes _compSizes_32; - int _offset_145; - int _sigIdx_45; - Circom_Sizes _sigSizes_45; - int _offset_146; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - int _compIdx_41; - int _sigIdx_46; - Circom_Sizes _sigSizes_46; - int _offset_147; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _sigIdx_47; - Circom_Sizes _sigSizes_47; - int _offset_148; - int _compIdx_42; - int _sigIdx_48; - Circom_Sizes _sigSizes_48; - int _offset_149; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - int _sigIdx_49; - Circom_Sizes _sigSizes_49; - int _offset_150; - - - /* signal input in[nWindows*4] */ - - /* signal input base[2] */ - - /* signal output out[2] */ - - /* var i */ - - /* var j */ - - /* component e2m = Edwards2Montgomery() */ - - /* e2m.in[0] <== base[0] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0x08b73807b55c4bbeLL /* in */); - _offset = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); - ctx->setSignal(_compIdx, _offset, _sigValue); - - /* e2m.in[1] <== base[1] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0x08b73807b55c4bbeLL /* in */); - _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); - - /* component windows[nWindows] */ - - /* component doublers1[nWindows-1] */ - - /* component doublers2[nWindows-1] */ - - /* component adders[nWindows-1] */ - - /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_9 = _compIdx_2 + 0*_compSizes[1]; - _sigIdx_4 = ctx->getSignalOffset(_offset_9, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_4 = ctx->getSignalSizes(_offset_9, 0x9a7ce19baa54c278LL /* base */); - _offset_10 = _sigIdx_4 + 0*_sigSizes_4[1]; - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0x19f79b1921bbcfffLL /* out */); - _offset_11 = _sigIdx_5 + 0*_sigSizes_5[1]; - ctx->getSignal(_compIdx_3, _offset_11, _sigValue_2); - ctx->setSignal(_offset_9, _offset_10, _sigValue_2); - - /* windows[i].base[1] <== e2m.out[1] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_13 = _compIdx_4 + 0*_compSizes_1[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_13, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_6 = ctx->getSignalSizes(_offset_13, 0x9a7ce19baa54c278LL /* base */); - _offset_14 = _sigIdx_6 + 1*_sigSizes_6[1]; - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_7 = ctx->getSignalOffset(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(_compIdx_5, 0x19f79b1921bbcfffLL /* out */); - _offset_15 = _sigIdx_7 + 1*_sigSizes_7[1]; - ctx->getSignal(_compIdx_5, _offset_15, _sigValue_3); - ctx->setSignal(_offset_13, _offset_14, _sigValue_3); - - /* for (j=0,j<4,j++) */ - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_19 = _compIdx_6 + 0*_compSizes_2[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_19, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(_offset_19, 0x08b73807b55c4bbeLL /* in */); - _offset_21 = _sigIdx_8 + 0*_sigSizes_8[1]; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_24 = _sigIdx_9 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_4); - ctx->setSignal(_offset_19, _offset_21, _sigValue_4); - mpz_set_str(_tmp_6[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_6); - while (_cond) { - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_29 = _compIdx_7 + 0*_compSizes_3[1]; - _sigIdx_10 = ctx->getSignalOffset(_offset_29, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(_offset_29, 0x08b73807b55c4bbeLL /* in */); - _v_13 = j + 0; - _offset_31 = _sigIdx_10 + ctx->field->toInt(_v_13)*_sigSizes_10[1]; - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_15 = j + 0; - ctx->field->add(_tmp_8,_const,_v_15); - _offset_34 = _sigIdx_11 + ctx->field->toInt(_tmp_8)*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_34, _sigValue_5); - ctx->setSignal(_offset_29, _offset_31, _sigValue_5); - _v_16 = j + 0; - ctx->field->add(_tmp_9, _v_16, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_9, 1); - _v_17 = j + 0; - ctx->field->lt(_tmp_10,_v_17,_const_1); - _cond = ctx->field->isTrue(_tmp_10); - } - mpz_set_str(_tmp_12[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond_1 = ctx->field->isTrue(_tmp_12); - while (_cond_1) { - - /* windows[i] = Window4() */ - - /* if (i==0) */ - _v_21 = i + 0; - ctx->field->eq(_tmp_13,_v_21,_const_2); - if (ctx->field->isTrue(_tmp_13)) { - - /* windows[i].base[0] <== e2m.out[0] */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_22 = i + 0; - _offset_44 = _compIdx_8 + ctx->field->toInt(_v_22)*_compSizes_4[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_44, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_12 = ctx->getSignalSizes(_offset_44, 0x9a7ce19baa54c278LL /* base */); - _offset_45 = _sigIdx_12 + 0*_sigSizes_12[1]; - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_46 = _sigIdx_13 + 0*_sigSizes_13[1]; - ctx->getSignal(_compIdx_9, _offset_46, _sigValue_6); - ctx->setSignal(_offset_44, _offset_45, _sigValue_6); - - /* windows[i].base[1] <== e2m.out[1] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_23 = i + 0; - _offset_48 = _compIdx_10 + ctx->field->toInt(_v_23)*_compSizes_5[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_48, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_14 = ctx->getSignalSizes(_offset_48, 0x9a7ce19baa54c278LL /* base */); - _offset_49 = _sigIdx_14 + 1*_sigSizes_14[1]; - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc3d71c18f117a8a1LL /* e2m */); - _sigIdx_15 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _offset_50 = _sigIdx_15 + 1*_sigSizes_15[1]; - ctx->getSignal(_compIdx_11, _offset_50, _sigValue_7); - ctx->setSignal(_offset_48, _offset_49, _sigValue_7); - } else { - - /* doublers1[i-1] = MontgomeryDouble() */ - - /* doublers2[i-1] = MontgomeryDouble() */ - - /* doublers1[i-1].in[0] <== windows[i-1].out8[0] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_24 = i + 0; - ctx->field->sub(_tmp_14,_v_24,_const_3); - _offset_52 = _compIdx_12 + ctx->field->toInt(_tmp_14)*_compSizes_6[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_52, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_16 = ctx->getSignalSizes(_offset_52, 0x08b73807b55c4bbeLL /* in */); - _offset_53 = _sigIdx_16 + 0*_sigSizes_16[1]; - _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_25 = i + 0; - ctx->field->sub(_tmp_15,_v_25,_const_4); - _offset_55 = _compIdx_13 + ctx->field->toInt(_tmp_15)*_compSizes_7[1]; - _sigIdx_17 = ctx->getSignalOffset(_offset_55, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_17 = ctx->getSignalSizes(_offset_55, 0xdb8c52b452220f25LL /* out8 */); - _offset_56 = _sigIdx_17 + 0*_sigSizes_17[1]; - ctx->getSignal(_offset_55, _offset_56, _sigValue_8); - ctx->setSignal(_offset_52, _offset_53, _sigValue_8); - - /* doublers1[i-1].in[1] <== windows[i-1].out8[1] */ - _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_26 = i + 0; - ctx->field->sub(_tmp_16,_v_26,_const_5); - _offset_58 = _compIdx_14 + ctx->field->toInt(_tmp_16)*_compSizes_8[1]; - _sigIdx_18 = ctx->getSignalOffset(_offset_58, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_18 = ctx->getSignalSizes(_offset_58, 0x08b73807b55c4bbeLL /* in */); - _offset_59 = _sigIdx_18 + 1*_sigSizes_18[1]; - _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_27 = i + 0; - ctx->field->sub(_tmp_17,_v_27,_const_6); - _offset_61 = _compIdx_15 + ctx->field->toInt(_tmp_17)*_compSizes_9[1]; - _sigIdx_19 = ctx->getSignalOffset(_offset_61, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_19 = ctx->getSignalSizes(_offset_61, 0xdb8c52b452220f25LL /* out8 */); - _offset_62 = _sigIdx_19 + 1*_sigSizes_19[1]; - ctx->getSignal(_offset_61, _offset_62, _sigValue_9); - ctx->setSignal(_offset_58, _offset_59, _sigValue_9); - - /* doublers2[i-1].in[0] <== doublers1[i-1].out[0] */ - _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_28 = i + 0; - ctx->field->sub(_tmp_18,_v_28,_const_7); - _offset_64 = _compIdx_16 + ctx->field->toInt(_tmp_18)*_compSizes_10[1]; - _sigIdx_20 = ctx->getSignalOffset(_offset_64, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_20 = ctx->getSignalSizes(_offset_64, 0x08b73807b55c4bbeLL /* in */); - _offset_65 = _sigIdx_20 + 0*_sigSizes_20[1]; - _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_29 = i + 0; - ctx->field->sub(_tmp_19,_v_29,_const_8); - _offset_67 = _compIdx_17 + ctx->field->toInt(_tmp_19)*_compSizes_11[1]; - _sigIdx_21 = ctx->getSignalOffset(_offset_67, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_21 = ctx->getSignalSizes(_offset_67, 0x19f79b1921bbcfffLL /* out */); - _offset_68 = _sigIdx_21 + 0*_sigSizes_21[1]; - ctx->getSignal(_offset_67, _offset_68, _sigValue_10); - ctx->setSignal(_offset_64, _offset_65, _sigValue_10); - - /* doublers2[i-1].in[1] <== doublers1[i-1].out[1] */ - _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_30 = i + 0; - ctx->field->sub(_tmp_20,_v_30,_const_9); - _offset_70 = _compIdx_18 + ctx->field->toInt(_tmp_20)*_compSizes_12[1]; - _sigIdx_22 = ctx->getSignalOffset(_offset_70, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_22 = ctx->getSignalSizes(_offset_70, 0x08b73807b55c4bbeLL /* in */); - _offset_71 = _sigIdx_22 + 1*_sigSizes_22[1]; - _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _compSizes_13 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f6460b565389782LL /* doublers1 */); - _v_31 = i + 0; - ctx->field->sub(_tmp_21,_v_31,_const_10); - _offset_73 = _compIdx_19 + ctx->field->toInt(_tmp_21)*_compSizes_13[1]; - _sigIdx_23 = ctx->getSignalOffset(_offset_73, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_23 = ctx->getSignalSizes(_offset_73, 0x19f79b1921bbcfffLL /* out */); - _offset_74 = _sigIdx_23 + 1*_sigSizes_23[1]; - ctx->getSignal(_offset_73, _offset_74, _sigValue_11); - ctx->setSignal(_offset_70, _offset_71, _sigValue_11); - - /* windows[i].base[0] <== doublers2[i-1].out[0] */ - _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_14 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_32 = i + 0; - _offset_76 = _compIdx_20 + ctx->field->toInt(_v_32)*_compSizes_14[1]; - _sigIdx_24 = ctx->getSignalOffset(_offset_76, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_24 = ctx->getSignalSizes(_offset_76, 0x9a7ce19baa54c278LL /* base */); - _offset_77 = _sigIdx_24 + 0*_sigSizes_24[1]; - _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_15 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_33 = i + 0; - ctx->field->sub(_tmp_22,_v_33,_const_11); - _offset_79 = _compIdx_21 + ctx->field->toInt(_tmp_22)*_compSizes_15[1]; - _sigIdx_25 = ctx->getSignalOffset(_offset_79, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_25 = ctx->getSignalSizes(_offset_79, 0x19f79b1921bbcfffLL /* out */); - _offset_80 = _sigIdx_25 + 0*_sigSizes_25[1]; - ctx->getSignal(_offset_79, _offset_80, _sigValue_12); - ctx->setSignal(_offset_76, _offset_77, _sigValue_12); - - /* windows[i].base[1] <== doublers2[i-1].out[1] */ - _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_16 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_34 = i + 0; - _offset_82 = _compIdx_22 + ctx->field->toInt(_v_34)*_compSizes_16[1]; - _sigIdx_26 = ctx->getSignalOffset(_offset_82, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_26 = ctx->getSignalSizes(_offset_82, 0x9a7ce19baa54c278LL /* base */); - _offset_83 = _sigIdx_26 + 1*_sigSizes_26[1]; - _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _compSizes_17 = ctx->getSubComponentSizes(ctx->cIdx, 0x1f645fb5653895cfLL /* doublers2 */); - _v_35 = i + 0; - ctx->field->sub(_tmp_23,_v_35,_const_12); - _offset_85 = _compIdx_23 + ctx->field->toInt(_tmp_23)*_compSizes_17[1]; - _sigIdx_27 = ctx->getSignalOffset(_offset_85, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_27 = ctx->getSignalSizes(_offset_85, 0x19f79b1921bbcfffLL /* out */); - _offset_86 = _sigIdx_27 + 1*_sigSizes_27[1]; - ctx->getSignal(_offset_85, _offset_86, _sigValue_13); - ctx->setSignal(_offset_82, _offset_83, _sigValue_13); - - /* adders[i-1] = MontgomeryAdd() */ - - /* if (i==1) */ - _v_36 = i + 0; - ctx->field->eq(_tmp_24,_v_36,_const_13); - if (ctx->field->isTrue(_tmp_24)) { - - /* adders[i-1].in1[0] <== windows[0].out[0] */ - _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_18 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_37 = i + 0; - ctx->field->sub(_tmp_25,_v_37,_const_14); - _offset_89 = _compIdx_24 + ctx->field->toInt(_tmp_25)*_compSizes_18[1]; - _sigIdx_28 = ctx->getSignalOffset(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_28 = ctx->getSignalSizes(_offset_89, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_90 = _sigIdx_28 + 0*_sigSizes_28[1]; - _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_19 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_91 = _compIdx_25 + 0*_compSizes_19[1]; - _sigIdx_29 = ctx->getSignalOffset(_offset_91, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_29 = ctx->getSignalSizes(_offset_91, 0x19f79b1921bbcfffLL /* out */); - _offset_92 = _sigIdx_29 + 0*_sigSizes_29[1]; - ctx->getSignal(_offset_91, _offset_92, _sigValue_14); - ctx->setSignal(_offset_89, _offset_90, _sigValue_14); - - /* adders[i-1].in1[1] <== windows[0].out[1] */ - _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_20 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_38 = i + 0; - ctx->field->sub(_tmp_26,_v_38,_const_15); - _offset_94 = _compIdx_26 + ctx->field->toInt(_tmp_26)*_compSizes_20[1]; - _sigIdx_30 = ctx->getSignalOffset(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_30 = ctx->getSignalSizes(_offset_94, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_95 = _sigIdx_30 + 1*_sigSizes_30[1]; - _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_21 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_96 = _compIdx_27 + 0*_compSizes_21[1]; - _sigIdx_31 = ctx->getSignalOffset(_offset_96, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_31 = ctx->getSignalSizes(_offset_96, 0x19f79b1921bbcfffLL /* out */); - _offset_97 = _sigIdx_31 + 1*_sigSizes_31[1]; - ctx->getSignal(_offset_96, _offset_97, _sigValue_15); - ctx->setSignal(_offset_94, _offset_95, _sigValue_15); - } else { - - /* adders[i-1].in1[0] <== adders[i-2].out[0] */ - _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_22 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_39 = i + 0; - ctx->field->sub(_tmp_27,_v_39,_const_16); - _offset_99 = _compIdx_28 + ctx->field->toInt(_tmp_27)*_compSizes_22[1]; - _sigIdx_32 = ctx->getSignalOffset(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_32 = ctx->getSignalSizes(_offset_99, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_100 = _sigIdx_32 + 0*_sigSizes_32[1]; - _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_23 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_40 = i + 0; - ctx->field->sub(_tmp_28,_v_40,_const_17); - _offset_102 = _compIdx_29 + ctx->field->toInt(_tmp_28)*_compSizes_23[1]; - _sigIdx_33 = ctx->getSignalOffset(_offset_102, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_33 = ctx->getSignalSizes(_offset_102, 0x19f79b1921bbcfffLL /* out */); - _offset_103 = _sigIdx_33 + 0*_sigSizes_33[1]; - ctx->getSignal(_offset_102, _offset_103, _sigValue_16); - ctx->setSignal(_offset_99, _offset_100, _sigValue_16); - - /* adders[i-1].in1[1] <== adders[i-2].out[1] */ - _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_24 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_41 = i + 0; - ctx->field->sub(_tmp_29,_v_41,_const_18); - _offset_105 = _compIdx_30 + ctx->field->toInt(_tmp_29)*_compSizes_24[1]; - _sigIdx_34 = ctx->getSignalOffset(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_34 = ctx->getSignalSizes(_offset_105, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_106 = _sigIdx_34 + 1*_sigSizes_34[1]; - _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_25 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_42 = i + 0; - ctx->field->sub(_tmp_30,_v_42,_const_19); - _offset_108 = _compIdx_31 + ctx->field->toInt(_tmp_30)*_compSizes_25[1]; - _sigIdx_35 = ctx->getSignalOffset(_offset_108, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_35 = ctx->getSignalSizes(_offset_108, 0x19f79b1921bbcfffLL /* out */); - _offset_109 = _sigIdx_35 + 1*_sigSizes_35[1]; - ctx->getSignal(_offset_108, _offset_109, _sigValue_17); - ctx->setSignal(_offset_105, _offset_106, _sigValue_17); - } - - /* adders[i-1].in2[0] <== windows[i].out[0] */ - _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_26 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_43 = i + 0; - ctx->field->sub(_tmp_31,_v_43,_const_20); - _offset_111 = _compIdx_32 + ctx->field->toInt(_tmp_31)*_compSizes_26[1]; - _sigIdx_36 = ctx->getSignalOffset(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_36 = ctx->getSignalSizes(_offset_111, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_112 = _sigIdx_36 + 0*_sigSizes_36[1]; - _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_27 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_44 = i + 0; - _offset_114 = _compIdx_33 + ctx->field->toInt(_v_44)*_compSizes_27[1]; - _sigIdx_37 = ctx->getSignalOffset(_offset_114, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_37 = ctx->getSignalSizes(_offset_114, 0x19f79b1921bbcfffLL /* out */); - _offset_115 = _sigIdx_37 + 0*_sigSizes_37[1]; - ctx->getSignal(_offset_114, _offset_115, _sigValue_18); - ctx->setSignal(_offset_111, _offset_112, _sigValue_18); - - /* adders[i-1].in2[1] <== windows[i].out[1] */ - _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_28 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _v_45 = i + 0; - ctx->field->sub(_tmp_32,_v_45,_const_21); - _offset_117 = _compIdx_34 + ctx->field->toInt(_tmp_32)*_compSizes_28[1]; - _sigIdx_38 = ctx->getSignalOffset(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_38 = ctx->getSignalSizes(_offset_117, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_118 = _sigIdx_38 + 1*_sigSizes_38[1]; - _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_29 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_46 = i + 0; - _offset_120 = _compIdx_35 + ctx->field->toInt(_v_46)*_compSizes_29[1]; - _sigIdx_39 = ctx->getSignalOffset(_offset_120, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_39 = ctx->getSignalSizes(_offset_120, 0x19f79b1921bbcfffLL /* out */); - _offset_121 = _sigIdx_39 + 1*_sigSizes_39[1]; - ctx->getSignal(_offset_120, _offset_121, _sigValue_19); - ctx->setSignal(_offset_117, _offset_118, _sigValue_19); - } - - /* for (j=0,j<4,j++) */ - mpz_set_str(_num_66[0], "0", 10); - ctx->field->copyn(j, _num_66, 1); - _v_47 = j + 0; - ctx->field->lt(_tmp_33,_v_47,_const_22); - _cond_2 = ctx->field->isTrue(_tmp_33); - while (_cond_2) { - - /* windows[i].in[j] <== in[4*i+j] */ - _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_30 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_48 = i + 0; - _offset_125 = _compIdx_36 + ctx->field->toInt(_v_48)*_compSizes_30[1]; - _sigIdx_40 = ctx->getSignalOffset(_offset_125, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_40 = ctx->getSignalSizes(_offset_125, 0x08b73807b55c4bbeLL /* in */); - _v_49 = j + 0; - _offset_127 = _sigIdx_40 + ctx->field->toInt(_v_49)*_sigSizes_40[1]; - _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_50 = i + 0; - ctx->field->mul(_tmp_34,_const_23,_v_50); - _v_51 = j + 0; - ctx->field->add(_tmp_35,_tmp_34,_v_51); - _offset_130 = _sigIdx_41 + ctx->field->toInt(_tmp_35)*_sigSizes_41[1]; - ctx->getSignal(ctx->cIdx, _offset_130, _sigValue_20); - ctx->setSignal(_offset_125, _offset_127, _sigValue_20); - _v_52 = j + 0; - ctx->field->add(_tmp_36, _v_52, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_36, 1); - _v_53 = j + 0; - ctx->field->lt(_tmp_37,_v_53,_const_24); - _cond_2 = ctx->field->isTrue(_tmp_37); - } - _v_54 = i + 0; - ctx->field->add(_tmp_38, _v_54, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_38, 1); - _v_55 = i + 0; - ctx->field->lt(_tmp_39,_v_55,_const_25); - _cond_1 = ctx->field->isTrue(_tmp_39); - } - - /* component m2e = Montgomery2Edwards() */ - - /* if (nWindows > 1) */ - - /* m2e.in[0] <== adders[nWindows-2].out[0] */ - _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_42 = ctx->getSignalOffset(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_42 = ctx->getSignalSizes(_compIdx_37, 0x08b73807b55c4bbeLL /* in */); - _offset_139 = _sigIdx_42 + 0*_sigSizes_42[1]; - _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_31 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_141 = _compIdx_38 + 12*_compSizes_31[1]; - _sigIdx_43 = ctx->getSignalOffset(_offset_141, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_43 = ctx->getSignalSizes(_offset_141, 0x19f79b1921bbcfffLL /* out */); - _offset_142 = _sigIdx_43 + 0*_sigSizes_43[1]; - ctx->getSignal(_offset_141, _offset_142, _sigValue_21); - ctx->setSignal(_compIdx_37, _offset_139, _sigValue_21); - - /* m2e.in[1] <== adders[nWindows-2].out[1] */ - _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_44 = ctx->getSignalOffset(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_44 = ctx->getSignalSizes(_compIdx_39, 0x08b73807b55c4bbeLL /* in */); - _offset_143 = _sigIdx_44 + 1*_sigSizes_44[1]; - _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _compSizes_32 = ctx->getSubComponentSizes(ctx->cIdx, 0x6ccbe39576114790LL /* adders */); - _offset_145 = _compIdx_40 + 12*_compSizes_32[1]; - _sigIdx_45 = ctx->getSignalOffset(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_45 = ctx->getSignalSizes(_offset_145, 0x19f79b1921bbcfffLL /* out */); - _offset_146 = _sigIdx_45 + 1*_sigSizes_45[1]; - ctx->getSignal(_offset_145, _offset_146, _sigValue_22); - ctx->setSignal(_compIdx_39, _offset_143, _sigValue_22); - - /* out[0] <== m2e.out[0] */ - _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_46 = ctx->getSignalOffset(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_46 = ctx->getSignalSizes(_compIdx_41, 0x19f79b1921bbcfffLL /* out */); - _offset_147 = _sigIdx_46 + 0*_sigSizes_46[1]; - ctx->getSignal(_compIdx_41, _offset_147, _sigValue_23); - _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_148 = _sigIdx_47 + 0*_sigSizes_47[1]; - ctx->setSignal(ctx->cIdx, _offset_148, _sigValue_23); - - /* out[1] <== m2e.out[1] */ - _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0x08b66c1917fb9801LL /* m2e */); - _sigIdx_48 = ctx->getSignalOffset(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_48 = ctx->getSignalSizes(_compIdx_42, 0x19f79b1921bbcfffLL /* out */); - _offset_149 = _sigIdx_48 + 1*_sigSizes_48[1]; - ctx->getSignal(_compIdx_42, _offset_149, _sigValue_24); - _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_150 = _sigIdx_49 + 1*_sigSizes_49[1]; - ctx->setSignal(ctx->cIdx, _offset_150, _sigValue_24); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_const_11, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_const_12, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_const_13, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_const_14, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_const_15, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_const_16, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_const_17, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_const_18, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_const_19, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_const_20, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_const_21, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_num_66, 1); - ctx->freeBigInts(_const_22, 1); - ctx->freeBigInts(_tmp_33, 1); - ctx->freeBigInts(_const_23, 1); - ctx->freeBigInts(_tmp_34, 1); - ctx->freeBigInts(_tmp_35, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_tmp_36, 1); - ctx->freeBigInts(_const_24, 1); - ctx->freeBigInts(_tmp_37, 1); - ctx->freeBigInts(_tmp_38, 1); - ctx->freeBigInts(_const_25, 1); - ctx->freeBigInts(_tmp_39, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); -} - -/* -Edwards2Montgomery -*/ -void Edwards2Montgomery_1322d6544b8b5e68(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "1", 10); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "1", 10); - PBigInt _tmp_1 = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_4; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_5; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - int _offset_6; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_7; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_8; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_9; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_10; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_11; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - - - /* signal input in[2] */ - - /* signal output out[2] */ - - /* out[0] <-- (1 + in[1]) / (1 - in[1]) */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset = _sigIdx + 1*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset, _sigValue); - ctx->field->add(_tmp,_const,_sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_1 = _sigIdx_1 + 1*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); - ctx->field->sub(_tmp_1,_const_1,_sigValue_1); - ctx->field->div(_tmp_2,_tmp,_tmp_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_2 = _sigIdx_2 + 0*_sigSizes_2[1]; - ctx->setSignal(ctx->cIdx, _offset_2, _tmp_2); - - /* out[1] <-- out[0] / in[0] */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_3 = _sigIdx_3 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_4 = _sigIdx_4 + 0*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_3); - ctx->field->div(_tmp_3,_sigValue_2,_sigValue_3); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_5 = _sigIdx_5 + 1*_sigSizes_5[1]; - ctx->setSignal(ctx->cIdx, _offset_5, _tmp_3); - - /* out[0] * (1-in[1]) === (1 + in[1]) */ - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_4); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_7 = _sigIdx_7 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_5); - ctx->field->sub(_tmp_4,_const_2,_sigValue_5); - ctx->field->mul(_tmp_5,_sigValue_4,_tmp_4); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_8 = _sigIdx_8 + 1*_sigSizes_8[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_6); - ctx->field->add(_tmp_6,_const_3,_sigValue_6); - ctx->checkConstraint(_tmp_5, _tmp_6, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:37:4"); - /* out[1] * in[0] === out[0] */ - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_7); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_8); - ctx->field->mul(_tmp_7,_sigValue_7,_sigValue_8); - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_9); - ctx->checkConstraint(_tmp_7, _sigValue_9, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:38:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_9, 1); -} - -/* -Window4 -*/ -void Window4_2d34837f67f5f72b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue = ctx->allocBigInts(1); - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_4; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_5; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_3; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - int _offset_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_7; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_9; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_10; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_11; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_12; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_13; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _compIdx_7; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_14; - int _compIdx_8; - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_15; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _compIdx_9; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_16; - int _compIdx_10; - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_17; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _compIdx_11; - int _sigIdx_18; - Circom_Sizes _sigSizes_18; - int _offset_18; - int _sigIdx_19; - Circom_Sizes _sigSizes_19; - int _offset_19; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - int _compIdx_12; - int _sigIdx_20; - Circom_Sizes _sigSizes_20; - int _offset_20; - int _sigIdx_21; - Circom_Sizes _sigSizes_21; - int _offset_21; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - int _compIdx_13; - int _sigIdx_22; - Circom_Sizes _sigSizes_22; - int _offset_22; - int _compIdx_14; - int _sigIdx_23; - Circom_Sizes _sigSizes_23; - int _offset_23; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - int _compIdx_15; - int _sigIdx_24; - Circom_Sizes _sigSizes_24; - int _offset_24; - int _compIdx_16; - int _sigIdx_25; - Circom_Sizes _sigSizes_25; - int _offset_25; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - int _compIdx_17; - int _sigIdx_26; - Circom_Sizes _sigSizes_26; - int _offset_26; - int _compIdx_18; - int _sigIdx_27; - Circom_Sizes _sigSizes_27; - int _offset_27; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - int _compIdx_19; - int _sigIdx_28; - Circom_Sizes _sigSizes_28; - int _offset_28; - int _compIdx_20; - int _sigIdx_29; - Circom_Sizes _sigSizes_29; - int _offset_29; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - int _compIdx_21; - int _sigIdx_30; - Circom_Sizes _sigSizes_30; - int _offset_30; - int _sigIdx_31; - Circom_Sizes _sigSizes_31; - int _offset_31; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - int _compIdx_22; - int _sigIdx_32; - Circom_Sizes _sigSizes_32; - int _offset_32; - int _sigIdx_33; - Circom_Sizes _sigSizes_33; - int _offset_33; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - int _compIdx_23; - int _sigIdx_34; - Circom_Sizes _sigSizes_34; - int _offset_34; - int _compIdx_24; - int _sigIdx_35; - Circom_Sizes _sigSizes_35; - int _offset_35; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - int _compIdx_25; - int _sigIdx_36; - Circom_Sizes _sigSizes_36; - int _offset_36; - int _compIdx_26; - int _sigIdx_37; - Circom_Sizes _sigSizes_37; - int _offset_37; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - int _compIdx_27; - int _sigIdx_38; - Circom_Sizes _sigSizes_38; - int _offset_38; - int _compIdx_28; - int _sigIdx_39; - Circom_Sizes _sigSizes_39; - int _offset_39; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - int _compIdx_29; - int _sigIdx_40; - Circom_Sizes _sigSizes_40; - int _offset_40; - int _compIdx_30; - int _sigIdx_41; - Circom_Sizes _sigSizes_41; - int _offset_41; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - int _compIdx_31; - int _sigIdx_42; - Circom_Sizes _sigSizes_42; - int _offset_42; - int _sigIdx_43; - Circom_Sizes _sigSizes_43; - int _offset_43; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - int _compIdx_32; - int _sigIdx_44; - Circom_Sizes _sigSizes_44; - int _offset_44; - int _sigIdx_45; - Circom_Sizes _sigSizes_45; - int _offset_45; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - int _compIdx_33; - int _sigIdx_46; - Circom_Sizes _sigSizes_46; - int _offset_46; - int _compIdx_34; - int _sigIdx_47; - Circom_Sizes _sigSizes_47; - int _offset_47; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _compIdx_35; - int _sigIdx_48; - Circom_Sizes _sigSizes_48; - int _offset_48; - int _compIdx_36; - int _sigIdx_49; - Circom_Sizes _sigSizes_49; - int _offset_49; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - int _compIdx_37; - int _sigIdx_50; - Circom_Sizes _sigSizes_50; - int _offset_50; - int _compIdx_38; - int _sigIdx_51; - Circom_Sizes _sigSizes_51; - int _offset_51; - PBigInt _sigValue_25 = ctx->allocBigInts(1); - int _compIdx_39; - int _sigIdx_52; - Circom_Sizes _sigSizes_52; - int _offset_52; - int _compIdx_40; - int _sigIdx_53; - Circom_Sizes _sigSizes_53; - int _offset_53; - PBigInt _sigValue_26 = ctx->allocBigInts(1); - int _compIdx_41; - int _sigIdx_54; - Circom_Sizes _sigSizes_54; - int _offset_54; - int _sigIdx_55; - Circom_Sizes _sigSizes_55; - int _offset_55; - PBigInt _sigValue_27 = ctx->allocBigInts(1); - int _compIdx_42; - int _sigIdx_56; - Circom_Sizes _sigSizes_56; - int _offset_56; - int _sigIdx_57; - Circom_Sizes _sigSizes_57; - int _offset_57; - PBigInt _sigValue_28 = ctx->allocBigInts(1); - int _compIdx_43; - int _sigIdx_58; - Circom_Sizes _sigSizes_58; - int _offset_58; - int _compIdx_44; - int _sigIdx_59; - Circom_Sizes _sigSizes_59; - int _offset_59; - PBigInt _sigValue_29 = ctx->allocBigInts(1); - int _compIdx_45; - int _sigIdx_60; - Circom_Sizes _sigSizes_60; - int _offset_60; - int _compIdx_46; - int _sigIdx_61; - Circom_Sizes _sigSizes_61; - int _offset_61; - PBigInt _sigValue_30 = ctx->allocBigInts(1); - int _compIdx_47; - int _sigIdx_62; - Circom_Sizes _sigSizes_62; - int _offset_62; - int _compIdx_48; - int _sigIdx_63; - Circom_Sizes _sigSizes_63; - int _offset_63; - PBigInt _sigValue_31 = ctx->allocBigInts(1); - int _compIdx_49; - int _sigIdx_64; - Circom_Sizes _sigSizes_64; - int _offset_64; - int _compIdx_50; - int _sigIdx_65; - Circom_Sizes _sigSizes_65; - int _offset_65; - PBigInt _sigValue_32 = ctx->allocBigInts(1); - int _compIdx_51; - int _sigIdx_66; - Circom_Sizes _sigSizes_66; - int _offset_66; - int _sigIdx_67; - Circom_Sizes _sigSizes_67; - int _offset_67; - PBigInt _sigValue_33 = ctx->allocBigInts(1); - int _compIdx_52; - int _sigIdx_68; - Circom_Sizes _sigSizes_68; - int _offset_68; - int _sigIdx_69; - Circom_Sizes _sigSizes_69; - int _offset_69; - PBigInt _sigValue_34 = ctx->allocBigInts(1); - int _compIdx_53; - int _sigIdx_70; - Circom_Sizes _sigSizes_70; - int _offset_70; - int _compIdx_54; - int _sigIdx_71; - Circom_Sizes _sigSizes_71; - int _offset_71; - PBigInt _sigValue_35 = ctx->allocBigInts(1); - int _compIdx_55; - int _sigIdx_72; - Circom_Sizes _sigSizes_72; - int _offset_72; - int _compIdx_56; - int _sigIdx_73; - Circom_Sizes _sigSizes_73; - int _offset_73; - PBigInt _sigValue_36 = ctx->allocBigInts(1); - int _compIdx_57; - int _sigIdx_74; - Circom_Sizes _sigSizes_74; - int _offset_74; - int _compIdx_58; - int _sigIdx_75; - Circom_Sizes _sigSizes_75; - int _offset_75; - PBigInt _sigValue_37 = ctx->allocBigInts(1); - int _compIdx_59; - int _sigIdx_76; - Circom_Sizes _sigSizes_76; - int _offset_76; - int _compIdx_60; - int _sigIdx_77; - Circom_Sizes _sigSizes_77; - int _offset_77; - PBigInt _sigValue_38 = ctx->allocBigInts(1); - int _compIdx_61; - int _sigIdx_78; - Circom_Sizes _sigSizes_78; - int _offset_78; - int _sigIdx_79; - Circom_Sizes _sigSizes_79; - int _offset_79; - PBigInt _sigValue_39 = ctx->allocBigInts(1); - int _compIdx_62; - int _sigIdx_80; - Circom_Sizes _sigSizes_80; - int _offset_80; - int _sigIdx_81; - Circom_Sizes _sigSizes_81; - int _offset_81; - PBigInt _sigValue_40 = ctx->allocBigInts(1); - int _compIdx_63; - int _sigIdx_82; - Circom_Sizes _sigSizes_82; - int _offset_82; - int _compIdx_64; - int _sigIdx_83; - Circom_Sizes _sigSizes_83; - int _offset_83; - PBigInt _sigValue_41 = ctx->allocBigInts(1); - int _compIdx_65; - int _sigIdx_84; - Circom_Sizes _sigSizes_84; - int _offset_84; - int _compIdx_66; - int _sigIdx_85; - Circom_Sizes _sigSizes_85; - int _offset_85; - PBigInt _sigValue_42 = ctx->allocBigInts(1); - int _compIdx_67; - int _sigIdx_86; - Circom_Sizes _sigSizes_86; - int _offset_86; - int _compIdx_68; - int _sigIdx_87; - Circom_Sizes _sigSizes_87; - int _offset_87; - PBigInt _sigValue_43 = ctx->allocBigInts(1); - int _compIdx_69; - int _sigIdx_88; - Circom_Sizes _sigSizes_88; - int _offset_88; - int _compIdx_70; - int _sigIdx_89; - Circom_Sizes _sigSizes_89; - int _offset_89; - PBigInt _sigValue_44 = ctx->allocBigInts(1); - int _compIdx_71; - int _sigIdx_90; - Circom_Sizes _sigSizes_90; - int _offset_90; - PBigInt _sigValue_45 = ctx->allocBigInts(1); - int _sigIdx_91; - Circom_Sizes _sigSizes_91; - int _offset_91; - int _compIdx_72; - int _sigIdx_92; - Circom_Sizes _sigSizes_92; - int _offset_92; - PBigInt _sigValue_46 = ctx->allocBigInts(1); - int _sigIdx_93; - Circom_Sizes _sigSizes_93; - int _offset_93; - int _compIdx_73; - int _sigIdx_94; - Circom_Sizes _sigSizes_94; - int _offset_94; - PBigInt _sigValue_47 = ctx->allocBigInts(1); - int _sigIdx_95; - Circom_Sizes _sigSizes_95; - int _offset_95; - int _compIdx_74; - int _sigIdx_96; - Circom_Sizes _sigSizes_96; - int _offset_96; - PBigInt _sigValue_48 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "2", 10); - PBigInt _tmp_1 = ctx->allocBigInts(1); - int _sigIdx_97; - Circom_Sizes _sigSizes_97; - int _offset_97; - PBigInt _sigValue_49 = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _compIdx_75; - int _sigIdx_98; - Circom_Sizes _sigSizes_98; - int _offset_98; - PBigInt _sigValue_50 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_99; - Circom_Sizes _sigSizes_99; - int _offset_99; - - - /* signal input in[4] */ - - /* signal input base[2] */ - - /* signal output out[2] */ - - /* signal output out8[2] */ - - /* component mux = MultiMux3(2) */ - - /* mux.s[0] <== in[0] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); - ctx->setSignal(_compIdx, _offset, _sigValue); - - /* mux.s[1] <== in[1] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _offset_2 = _sigIdx_2 + 1*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_3 = _sigIdx_3 + 1*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_2, _sigValue_1); - - /* mux.s[2] <== in[2] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63ee4c86020b22LL /* s */); - _offset_4 = _sigIdx_4 + 2*_sigSizes_4[1]; - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_5 = _sigIdx_5 + 2*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_5, _sigValue_2); - ctx->setSignal(_compIdx_2, _offset_4, _sigValue_2); - - /* component dbl2 = MontgomeryDouble() */ - - /* component adr3 = MontgomeryAdd() */ - - /* component adr4 = MontgomeryAdd() */ - - /* component adr5 = MontgomeryAdd() */ - - /* component adr6 = MontgomeryAdd() */ - - /* component adr7 = MontgomeryAdd() */ - - /* component adr8 = MontgomeryAdd() */ - - /* mux.c[0][0] <== base[0] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_6 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1] + 0*_sigSizes_6[2]; - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_7 = _sigIdx_7 + 0*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_3); - ctx->setSignal(_compIdx_3, _offset_6, _sigValue_3); - - /* mux.c[1][0] <== base[1] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_4, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_4, 0xaf63de4c8601eff2LL /* c */); - _offset_8 = _sigIdx_8 + 1*_sigSizes_8[1] + 0*_sigSizes_8[2]; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_4); - ctx->setSignal(_compIdx_4, _offset_8, _sigValue_4); - - /* dbl2.in[0] <== base[0] */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(_compIdx_5, 0x08b73807b55c4bbeLL /* in */); - _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_5); - ctx->setSignal(_compIdx_5, _offset_10, _sigValue_5); - - /* dbl2.in[1] <== base[1] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_12 = ctx->getSignalSizes(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); - _offset_12 = _sigIdx_12 + 1*_sigSizes_12[1]; - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_13 = _sigIdx_13 + 1*_sigSizes_13[1]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_6); - ctx->setSignal(_compIdx_6, _offset_12, _sigValue_6); - - /* mux.c[0][1] <== dbl2.out[0] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_7, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_14 = ctx->getSignalSizes(_compIdx_7, 0xaf63de4c8601eff2LL /* c */); - _offset_14 = _sigIdx_14 + 0*_sigSizes_14[1] + 1*_sigSizes_14[2]; - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_15 = ctx->getSignalOffset(_compIdx_8, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_compIdx_8, 0x19f79b1921bbcfffLL /* out */); - _offset_15 = _sigIdx_15 + 0*_sigSizes_15[1]; - ctx->getSignal(_compIdx_8, _offset_15, _sigValue_7); - ctx->setSignal(_compIdx_7, _offset_14, _sigValue_7); - - /* mux.c[1][1] <== dbl2.out[1] */ - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_9, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_16 = ctx->getSignalSizes(_compIdx_9, 0xaf63de4c8601eff2LL /* c */); - _offset_16 = _sigIdx_16 + 1*_sigSizes_16[1] + 1*_sigSizes_16[2]; - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_17 = ctx->getSignalOffset(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_17 = ctx->getSignalSizes(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); - _offset_17 = _sigIdx_17 + 1*_sigSizes_17[1]; - ctx->getSignal(_compIdx_10, _offset_17, _sigValue_8); - ctx->setSignal(_compIdx_9, _offset_16, _sigValue_8); - - /* adr3.in1[0] <== base[0] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_18 = ctx->getSignalOffset(_compIdx_11, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_18 = ctx->getSignalSizes(_compIdx_11, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_18 = _sigIdx_18 + 0*_sigSizes_18[1]; - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_19 = _sigIdx_19 + 0*_sigSizes_19[1]; - ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_9); - ctx->setSignal(_compIdx_11, _offset_18, _sigValue_9); - - /* adr3.in1[1] <== base[1] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_20 = ctx->getSignalOffset(_compIdx_12, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_20 = ctx->getSignalSizes(_compIdx_12, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_20 = _sigIdx_20 + 1*_sigSizes_20[1]; - _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_21 = _sigIdx_21 + 1*_sigSizes_21[1]; - ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_10); - ctx->setSignal(_compIdx_12, _offset_20, _sigValue_10); - - /* adr3.in2[0] <== dbl2.out[0] */ - _compIdx_13 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_22 = ctx->getSignalOffset(_compIdx_13, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_22 = ctx->getSignalSizes(_compIdx_13, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_22 = _sigIdx_22 + 0*_sigSizes_22[1]; - _compIdx_14 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_23 = ctx->getSignalOffset(_compIdx_14, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_23 = ctx->getSignalSizes(_compIdx_14, 0x19f79b1921bbcfffLL /* out */); - _offset_23 = _sigIdx_23 + 0*_sigSizes_23[1]; - ctx->getSignal(_compIdx_14, _offset_23, _sigValue_11); - ctx->setSignal(_compIdx_13, _offset_22, _sigValue_11); - - /* adr3.in2[1] <== dbl2.out[1] */ - _compIdx_15 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_24 = ctx->getSignalOffset(_compIdx_15, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_24 = ctx->getSignalSizes(_compIdx_15, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_24 = _sigIdx_24 + 1*_sigSizes_24[1]; - _compIdx_16 = ctx->getSubComponentOffset(ctx->cIdx, 0x7a918b6729ec5ebdLL /* dbl2 */); - _sigIdx_25 = ctx->getSignalOffset(_compIdx_16, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_25 = ctx->getSignalSizes(_compIdx_16, 0x19f79b1921bbcfffLL /* out */); - _offset_25 = _sigIdx_25 + 1*_sigSizes_25[1]; - ctx->getSignal(_compIdx_16, _offset_25, _sigValue_12); - ctx->setSignal(_compIdx_15, _offset_24, _sigValue_12); - - /* mux.c[0][2] <== adr3.out[0] */ - _compIdx_17 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_26 = ctx->getSignalOffset(_compIdx_17, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_26 = ctx->getSignalSizes(_compIdx_17, 0xaf63de4c8601eff2LL /* c */); - _offset_26 = _sigIdx_26 + 0*_sigSizes_26[1] + 2*_sigSizes_26[2]; - _compIdx_18 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_27 = ctx->getSignalOffset(_compIdx_18, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_27 = ctx->getSignalSizes(_compIdx_18, 0x19f79b1921bbcfffLL /* out */); - _offset_27 = _sigIdx_27 + 0*_sigSizes_27[1]; - ctx->getSignal(_compIdx_18, _offset_27, _sigValue_13); - ctx->setSignal(_compIdx_17, _offset_26, _sigValue_13); - - /* mux.c[1][2] <== adr3.out[1] */ - _compIdx_19 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_28 = ctx->getSignalOffset(_compIdx_19, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_28 = ctx->getSignalSizes(_compIdx_19, 0xaf63de4c8601eff2LL /* c */); - _offset_28 = _sigIdx_28 + 1*_sigSizes_28[1] + 2*_sigSizes_28[2]; - _compIdx_20 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_29 = ctx->getSignalOffset(_compIdx_20, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_29 = ctx->getSignalSizes(_compIdx_20, 0x19f79b1921bbcfffLL /* out */); - _offset_29 = _sigIdx_29 + 1*_sigSizes_29[1]; - ctx->getSignal(_compIdx_20, _offset_29, _sigValue_14); - ctx->setSignal(_compIdx_19, _offset_28, _sigValue_14); - - /* adr4.in1[0] <== base[0] */ - _compIdx_21 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_30 = ctx->getSignalOffset(_compIdx_21, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_30 = ctx->getSignalSizes(_compIdx_21, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_30 = _sigIdx_30 + 0*_sigSizes_30[1]; - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_31 = _sigIdx_31 + 0*_sigSizes_31[1]; - ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_15); - ctx->setSignal(_compIdx_21, _offset_30, _sigValue_15); - - /* adr4.in1[1] <== base[1] */ - _compIdx_22 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_32 = ctx->getSignalOffset(_compIdx_22, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_32 = ctx->getSignalSizes(_compIdx_22, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_32 = _sigIdx_32 + 1*_sigSizes_32[1]; - _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_33 = _sigIdx_33 + 1*_sigSizes_33[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_16); - ctx->setSignal(_compIdx_22, _offset_32, _sigValue_16); - - /* adr4.in2[0] <== adr3.out[0] */ - _compIdx_23 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_34 = ctx->getSignalOffset(_compIdx_23, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_34 = ctx->getSignalSizes(_compIdx_23, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_34 = _sigIdx_34 + 0*_sigSizes_34[1]; - _compIdx_24 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_35 = ctx->getSignalOffset(_compIdx_24, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_35 = ctx->getSignalSizes(_compIdx_24, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_35 + 0*_sigSizes_35[1]; - ctx->getSignal(_compIdx_24, _offset_35, _sigValue_17); - ctx->setSignal(_compIdx_23, _offset_34, _sigValue_17); - - /* adr4.in2[1] <== adr3.out[1] */ - _compIdx_25 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_36 = ctx->getSignalOffset(_compIdx_25, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_36 = ctx->getSignalSizes(_compIdx_25, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_36 = _sigIdx_36 + 1*_sigSizes_36[1]; - _compIdx_26 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57a83d1e31497LL /* adr3 */); - _sigIdx_37 = ctx->getSignalOffset(_compIdx_26, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_37 = ctx->getSignalSizes(_compIdx_26, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_37 + 1*_sigSizes_37[1]; - ctx->getSignal(_compIdx_26, _offset_37, _sigValue_18); - ctx->setSignal(_compIdx_25, _offset_36, _sigValue_18); - - /* mux.c[0][3] <== adr4.out[0] */ - _compIdx_27 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_38 = ctx->getSignalOffset(_compIdx_27, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_38 = ctx->getSignalSizes(_compIdx_27, 0xaf63de4c8601eff2LL /* c */); - _offset_38 = _sigIdx_38 + 0*_sigSizes_38[1] + 3*_sigSizes_38[2]; - _compIdx_28 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_39 = ctx->getSignalOffset(_compIdx_28, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_39 = ctx->getSignalSizes(_compIdx_28, 0x19f79b1921bbcfffLL /* out */); - _offset_39 = _sigIdx_39 + 0*_sigSizes_39[1]; - ctx->getSignal(_compIdx_28, _offset_39, _sigValue_19); - ctx->setSignal(_compIdx_27, _offset_38, _sigValue_19); - - /* mux.c[1][3] <== adr4.out[1] */ - _compIdx_29 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_40 = ctx->getSignalOffset(_compIdx_29, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_40 = ctx->getSignalSizes(_compIdx_29, 0xaf63de4c8601eff2LL /* c */); - _offset_40 = _sigIdx_40 + 1*_sigSizes_40[1] + 3*_sigSizes_40[2]; - _compIdx_30 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_41 = ctx->getSignalOffset(_compIdx_30, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_41 = ctx->getSignalSizes(_compIdx_30, 0x19f79b1921bbcfffLL /* out */); - _offset_41 = _sigIdx_41 + 1*_sigSizes_41[1]; - ctx->getSignal(_compIdx_30, _offset_41, _sigValue_20); - ctx->setSignal(_compIdx_29, _offset_40, _sigValue_20); - - /* adr5.in1[0] <== base[0] */ - _compIdx_31 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_42 = ctx->getSignalOffset(_compIdx_31, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_42 = ctx->getSignalSizes(_compIdx_31, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_42 = _sigIdx_42 + 0*_sigSizes_42[1]; - _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_43 = _sigIdx_43 + 0*_sigSizes_43[1]; - ctx->getSignal(ctx->cIdx, _offset_43, _sigValue_21); - ctx->setSignal(_compIdx_31, _offset_42, _sigValue_21); - - /* adr5.in1[1] <== base[1] */ - _compIdx_32 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_44 = ctx->getSignalOffset(_compIdx_32, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_44 = ctx->getSignalSizes(_compIdx_32, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_44 = _sigIdx_44 + 1*_sigSizes_44[1]; - _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_45 = _sigIdx_45 + 1*_sigSizes_45[1]; - ctx->getSignal(ctx->cIdx, _offset_45, _sigValue_22); - ctx->setSignal(_compIdx_32, _offset_44, _sigValue_22); - - /* adr5.in2[0] <== adr4.out[0] */ - _compIdx_33 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_46 = ctx->getSignalOffset(_compIdx_33, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_46 = ctx->getSignalSizes(_compIdx_33, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_46 = _sigIdx_46 + 0*_sigSizes_46[1]; - _compIdx_34 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_47 = ctx->getSignalOffset(_compIdx_34, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_47 = ctx->getSignalSizes(_compIdx_34, 0x19f79b1921bbcfffLL /* out */); - _offset_47 = _sigIdx_47 + 0*_sigSizes_47[1]; - ctx->getSignal(_compIdx_34, _offset_47, _sigValue_23); - ctx->setSignal(_compIdx_33, _offset_46, _sigValue_23); - - /* adr5.in2[1] <== adr4.out[1] */ - _compIdx_35 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_48 = ctx->getSignalOffset(_compIdx_35, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_48 = ctx->getSignalSizes(_compIdx_35, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_48 = _sigIdx_48 + 1*_sigSizes_48[1]; - _compIdx_36 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57783d1e30f7eLL /* adr4 */); - _sigIdx_49 = ctx->getSignalOffset(_compIdx_36, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_49 = ctx->getSignalSizes(_compIdx_36, 0x19f79b1921bbcfffLL /* out */); - _offset_49 = _sigIdx_49 + 1*_sigSizes_49[1]; - ctx->getSignal(_compIdx_36, _offset_49, _sigValue_24); - ctx->setSignal(_compIdx_35, _offset_48, _sigValue_24); - - /* mux.c[0][4] <== adr5.out[0] */ - _compIdx_37 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_50 = ctx->getSignalOffset(_compIdx_37, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_50 = ctx->getSignalSizes(_compIdx_37, 0xaf63de4c8601eff2LL /* c */); - _offset_50 = _sigIdx_50 + 0*_sigSizes_50[1] + 4*_sigSizes_50[2]; - _compIdx_38 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_51 = ctx->getSignalOffset(_compIdx_38, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_51 = ctx->getSignalSizes(_compIdx_38, 0x19f79b1921bbcfffLL /* out */); - _offset_51 = _sigIdx_51 + 0*_sigSizes_51[1]; - ctx->getSignal(_compIdx_38, _offset_51, _sigValue_25); - ctx->setSignal(_compIdx_37, _offset_50, _sigValue_25); - - /* mux.c[1][4] <== adr5.out[1] */ - _compIdx_39 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_52 = ctx->getSignalOffset(_compIdx_39, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_52 = ctx->getSignalSizes(_compIdx_39, 0xaf63de4c8601eff2LL /* c */); - _offset_52 = _sigIdx_52 + 1*_sigSizes_52[1] + 4*_sigSizes_52[2]; - _compIdx_40 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_53 = ctx->getSignalOffset(_compIdx_40, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_53 = ctx->getSignalSizes(_compIdx_40, 0x19f79b1921bbcfffLL /* out */); - _offset_53 = _sigIdx_53 + 1*_sigSizes_53[1]; - ctx->getSignal(_compIdx_40, _offset_53, _sigValue_26); - ctx->setSignal(_compIdx_39, _offset_52, _sigValue_26); - - /* adr6.in1[0] <== base[0] */ - _compIdx_41 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_54 = ctx->getSignalOffset(_compIdx_41, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_54 = ctx->getSignalSizes(_compIdx_41, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_54 = _sigIdx_54 + 0*_sigSizes_54[1]; - _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_55 = _sigIdx_55 + 0*_sigSizes_55[1]; - ctx->getSignal(ctx->cIdx, _offset_55, _sigValue_27); - ctx->setSignal(_compIdx_41, _offset_54, _sigValue_27); - - /* adr6.in1[1] <== base[1] */ - _compIdx_42 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_56 = ctx->getSignalOffset(_compIdx_42, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_56 = ctx->getSignalSizes(_compIdx_42, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_56 = _sigIdx_56 + 1*_sigSizes_56[1]; - _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_57 = _sigIdx_57 + 1*_sigSizes_57[1]; - ctx->getSignal(ctx->cIdx, _offset_57, _sigValue_28); - ctx->setSignal(_compIdx_42, _offset_56, _sigValue_28); - - /* adr6.in2[0] <== adr5.out[0] */ - _compIdx_43 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_58 = ctx->getSignalOffset(_compIdx_43, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_58 = ctx->getSignalSizes(_compIdx_43, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_58 = _sigIdx_58 + 0*_sigSizes_58[1]; - _compIdx_44 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_59 = ctx->getSignalOffset(_compIdx_44, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_59 = ctx->getSignalSizes(_compIdx_44, 0x19f79b1921bbcfffLL /* out */); - _offset_59 = _sigIdx_59 + 0*_sigSizes_59[1]; - ctx->getSignal(_compIdx_44, _offset_59, _sigValue_29); - ctx->setSignal(_compIdx_43, _offset_58, _sigValue_29); - - /* adr6.in2[1] <== adr5.out[1] */ - _compIdx_45 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_60 = ctx->getSignalOffset(_compIdx_45, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_60 = ctx->getSignalSizes(_compIdx_45, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_60 = _sigIdx_60 + 1*_sigSizes_60[1]; - _compIdx_46 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57883d1e31131LL /* adr5 */); - _sigIdx_61 = ctx->getSignalOffset(_compIdx_46, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_61 = ctx->getSignalSizes(_compIdx_46, 0x19f79b1921bbcfffLL /* out */); - _offset_61 = _sigIdx_61 + 1*_sigSizes_61[1]; - ctx->getSignal(_compIdx_46, _offset_61, _sigValue_30); - ctx->setSignal(_compIdx_45, _offset_60, _sigValue_30); - - /* mux.c[0][5] <== adr6.out[0] */ - _compIdx_47 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_62 = ctx->getSignalOffset(_compIdx_47, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_62 = ctx->getSignalSizes(_compIdx_47, 0xaf63de4c8601eff2LL /* c */); - _offset_62 = _sigIdx_62 + 0*_sigSizes_62[1] + 5*_sigSizes_62[2]; - _compIdx_48 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_63 = ctx->getSignalOffset(_compIdx_48, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_63 = ctx->getSignalSizes(_compIdx_48, 0x19f79b1921bbcfffLL /* out */); - _offset_63 = _sigIdx_63 + 0*_sigSizes_63[1]; - ctx->getSignal(_compIdx_48, _offset_63, _sigValue_31); - ctx->setSignal(_compIdx_47, _offset_62, _sigValue_31); - - /* mux.c[1][5] <== adr6.out[1] */ - _compIdx_49 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_64 = ctx->getSignalOffset(_compIdx_49, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_64 = ctx->getSignalSizes(_compIdx_49, 0xaf63de4c8601eff2LL /* c */); - _offset_64 = _sigIdx_64 + 1*_sigSizes_64[1] + 5*_sigSizes_64[2]; - _compIdx_50 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_65 = ctx->getSignalOffset(_compIdx_50, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_65 = ctx->getSignalSizes(_compIdx_50, 0x19f79b1921bbcfffLL /* out */); - _offset_65 = _sigIdx_65 + 1*_sigSizes_65[1]; - ctx->getSignal(_compIdx_50, _offset_65, _sigValue_32); - ctx->setSignal(_compIdx_49, _offset_64, _sigValue_32); - - /* adr7.in1[0] <== base[0] */ - _compIdx_51 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_66 = ctx->getSignalOffset(_compIdx_51, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_66 = ctx->getSignalSizes(_compIdx_51, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_66 = _sigIdx_66 + 0*_sigSizes_66[1]; - _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_67 = _sigIdx_67 + 0*_sigSizes_67[1]; - ctx->getSignal(ctx->cIdx, _offset_67, _sigValue_33); - ctx->setSignal(_compIdx_51, _offset_66, _sigValue_33); - - /* adr7.in1[1] <== base[1] */ - _compIdx_52 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_68 = ctx->getSignalOffset(_compIdx_52, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_68 = ctx->getSignalSizes(_compIdx_52, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_68 = _sigIdx_68 + 1*_sigSizes_68[1]; - _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_69 = _sigIdx_69 + 1*_sigSizes_69[1]; - ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_34); - ctx->setSignal(_compIdx_52, _offset_68, _sigValue_34); - - /* adr7.in2[0] <== adr6.out[0] */ - _compIdx_53 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_70 = ctx->getSignalOffset(_compIdx_53, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_70 = ctx->getSignalSizes(_compIdx_53, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_70 = _sigIdx_70 + 0*_sigSizes_70[1]; - _compIdx_54 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_71 = ctx->getSignalOffset(_compIdx_54, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_71 = ctx->getSignalSizes(_compIdx_54, 0x19f79b1921bbcfffLL /* out */); - _offset_71 = _sigIdx_71 + 0*_sigSizes_71[1]; - ctx->getSignal(_compIdx_54, _offset_71, _sigValue_35); - ctx->setSignal(_compIdx_53, _offset_70, _sigValue_35); - - /* adr7.in2[1] <== adr6.out[1] */ - _compIdx_55 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_72 = ctx->getSignalOffset(_compIdx_55, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_72 = ctx->getSignalSizes(_compIdx_55, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_72 = _sigIdx_72 + 1*_sigSizes_72[1]; - _compIdx_56 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57583d1e30c18LL /* adr6 */); - _sigIdx_73 = ctx->getSignalOffset(_compIdx_56, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_73 = ctx->getSignalSizes(_compIdx_56, 0x19f79b1921bbcfffLL /* out */); - _offset_73 = _sigIdx_73 + 1*_sigSizes_73[1]; - ctx->getSignal(_compIdx_56, _offset_73, _sigValue_36); - ctx->setSignal(_compIdx_55, _offset_72, _sigValue_36); - - /* mux.c[0][6] <== adr7.out[0] */ - _compIdx_57 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_74 = ctx->getSignalOffset(_compIdx_57, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_74 = ctx->getSignalSizes(_compIdx_57, 0xaf63de4c8601eff2LL /* c */); - _offset_74 = _sigIdx_74 + 0*_sigSizes_74[1] + 6*_sigSizes_74[2]; - _compIdx_58 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_75 = ctx->getSignalOffset(_compIdx_58, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_75 = ctx->getSignalSizes(_compIdx_58, 0x19f79b1921bbcfffLL /* out */); - _offset_75 = _sigIdx_75 + 0*_sigSizes_75[1]; - ctx->getSignal(_compIdx_58, _offset_75, _sigValue_37); - ctx->setSignal(_compIdx_57, _offset_74, _sigValue_37); - - /* mux.c[1][6] <== adr7.out[1] */ - _compIdx_59 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_76 = ctx->getSignalOffset(_compIdx_59, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_76 = ctx->getSignalSizes(_compIdx_59, 0xaf63de4c8601eff2LL /* c */); - _offset_76 = _sigIdx_76 + 1*_sigSizes_76[1] + 6*_sigSizes_76[2]; - _compIdx_60 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_77 = ctx->getSignalOffset(_compIdx_60, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_77 = ctx->getSignalSizes(_compIdx_60, 0x19f79b1921bbcfffLL /* out */); - _offset_77 = _sigIdx_77 + 1*_sigSizes_77[1]; - ctx->getSignal(_compIdx_60, _offset_77, _sigValue_38); - ctx->setSignal(_compIdx_59, _offset_76, _sigValue_38); - - /* adr8.in1[0] <== base[0] */ - _compIdx_61 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_78 = ctx->getSignalOffset(_compIdx_61, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_78 = ctx->getSignalSizes(_compIdx_61, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_78 = _sigIdx_78 + 0*_sigSizes_78[1]; - _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_79 = _sigIdx_79 + 0*_sigSizes_79[1]; - ctx->getSignal(ctx->cIdx, _offset_79, _sigValue_39); - ctx->setSignal(_compIdx_61, _offset_78, _sigValue_39); - - /* adr8.in1[1] <== base[1] */ - _compIdx_62 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_80 = ctx->getSignalOffset(_compIdx_62, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_80 = ctx->getSignalSizes(_compIdx_62, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_80 = _sigIdx_80 + 1*_sigSizes_80[1]; - _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0x9a7ce19baa54c278LL /* base */); - _offset_81 = _sigIdx_81 + 1*_sigSizes_81[1]; - ctx->getSignal(ctx->cIdx, _offset_81, _sigValue_40); - ctx->setSignal(_compIdx_62, _offset_80, _sigValue_40); - - /* adr8.in2[0] <== adr7.out[0] */ - _compIdx_63 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_82 = ctx->getSignalOffset(_compIdx_63, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_82 = ctx->getSignalSizes(_compIdx_63, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_82 = _sigIdx_82 + 0*_sigSizes_82[1]; - _compIdx_64 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_83 = ctx->getSignalOffset(_compIdx_64, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_83 = ctx->getSignalSizes(_compIdx_64, 0x19f79b1921bbcfffLL /* out */); - _offset_83 = _sigIdx_83 + 0*_sigSizes_83[1]; - ctx->getSignal(_compIdx_64, _offset_83, _sigValue_41); - ctx->setSignal(_compIdx_63, _offset_82, _sigValue_41); - - /* adr8.in2[1] <== adr7.out[1] */ - _compIdx_65 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_84 = ctx->getSignalOffset(_compIdx_65, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_84 = ctx->getSignalSizes(_compIdx_65, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_84 = _sigIdx_84 + 1*_sigSizes_84[1]; - _compIdx_66 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57683d1e30dcbLL /* adr7 */); - _sigIdx_85 = ctx->getSignalOffset(_compIdx_66, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_85 = ctx->getSignalSizes(_compIdx_66, 0x19f79b1921bbcfffLL /* out */); - _offset_85 = _sigIdx_85 + 1*_sigSizes_85[1]; - ctx->getSignal(_compIdx_66, _offset_85, _sigValue_42); - ctx->setSignal(_compIdx_65, _offset_84, _sigValue_42); - - /* mux.c[0][7] <== adr8.out[0] */ - _compIdx_67 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_86 = ctx->getSignalOffset(_compIdx_67, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_86 = ctx->getSignalSizes(_compIdx_67, 0xaf63de4c8601eff2LL /* c */); - _offset_86 = _sigIdx_86 + 0*_sigSizes_86[1] + 7*_sigSizes_86[2]; - _compIdx_68 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_87 = ctx->getSignalOffset(_compIdx_68, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_87 = ctx->getSignalSizes(_compIdx_68, 0x19f79b1921bbcfffLL /* out */); - _offset_87 = _sigIdx_87 + 0*_sigSizes_87[1]; - ctx->getSignal(_compIdx_68, _offset_87, _sigValue_43); - ctx->setSignal(_compIdx_67, _offset_86, _sigValue_43); - - /* mux.c[1][7] <== adr8.out[1] */ - _compIdx_69 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_88 = ctx->getSignalOffset(_compIdx_69, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_88 = ctx->getSignalSizes(_compIdx_69, 0xaf63de4c8601eff2LL /* c */); - _offset_88 = _sigIdx_88 + 1*_sigSizes_88[1] + 7*_sigSizes_88[2]; - _compIdx_70 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_89 = ctx->getSignalOffset(_compIdx_70, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_89 = ctx->getSignalSizes(_compIdx_70, 0x19f79b1921bbcfffLL /* out */); - _offset_89 = _sigIdx_89 + 1*_sigSizes_89[1]; - ctx->getSignal(_compIdx_70, _offset_89, _sigValue_44); - ctx->setSignal(_compIdx_69, _offset_88, _sigValue_44); - - /* out8[0] <== adr8.out[0] */ - _compIdx_71 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_90 = ctx->getSignalOffset(_compIdx_71, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_90 = ctx->getSignalSizes(_compIdx_71, 0x19f79b1921bbcfffLL /* out */); - _offset_90 = _sigIdx_90 + 0*_sigSizes_90[1]; - ctx->getSignal(_compIdx_71, _offset_90, _sigValue_45); - _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); - _offset_91 = _sigIdx_91 + 0*_sigSizes_91[1]; - ctx->setSignal(ctx->cIdx, _offset_91, _sigValue_45); - - /* out8[1] <== adr8.out[1] */ - _compIdx_72 = ctx->getSubComponentOffset(ctx->cIdx, 0xc9a57383d1e308b2LL /* adr8 */); - _sigIdx_92 = ctx->getSignalOffset(_compIdx_72, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_92 = ctx->getSignalSizes(_compIdx_72, 0x19f79b1921bbcfffLL /* out */); - _offset_92 = _sigIdx_92 + 1*_sigSizes_92[1]; - ctx->getSignal(_compIdx_72, _offset_92, _sigValue_46); - _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); - _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0xdb8c52b452220f25LL /* out8 */); - _offset_93 = _sigIdx_93 + 1*_sigSizes_93[1]; - ctx->setSignal(ctx->cIdx, _offset_93, _sigValue_46); - - /* out[0] <== mux.out[0] */ - _compIdx_73 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_94 = ctx->getSignalOffset(_compIdx_73, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_94 = ctx->getSignalSizes(_compIdx_73, 0x19f79b1921bbcfffLL /* out */); - _offset_94 = _sigIdx_94 + 0*_sigSizes_94[1]; - ctx->getSignal(_compIdx_73, _offset_94, _sigValue_47); - _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_95 = _sigIdx_95 + 0*_sigSizes_95[1]; - ctx->setSignal(ctx->cIdx, _offset_95, _sigValue_47); - - /* out[1] <== - mux.out[1]*2*in[3] + mux.out[1] */ - _compIdx_74 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_96 = ctx->getSignalOffset(_compIdx_74, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_96 = ctx->getSignalSizes(_compIdx_74, 0x19f79b1921bbcfffLL /* out */); - _offset_96 = _sigIdx_96 + 1*_sigSizes_96[1]; - ctx->getSignal(_compIdx_74, _offset_96, _sigValue_48); - ctx->field->neg(_tmp,_sigValue_48); - ctx->field->mul(_tmp_1,_tmp,_const); - _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_97 = _sigIdx_97 + 3*_sigSizes_97[1]; - ctx->getSignal(ctx->cIdx, _offset_97, _sigValue_49); - ctx->field->mul(_tmp_2,_tmp_1,_sigValue_49); - _compIdx_75 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_98 = ctx->getSignalOffset(_compIdx_75, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_98 = ctx->getSignalSizes(_compIdx_75, 0x19f79b1921bbcfffLL /* out */); - _offset_98 = _sigIdx_98 + 1*_sigSizes_98[1]; - ctx->getSignal(_compIdx_75, _offset_98, _sigValue_50); - ctx->field->add(_tmp_3,_tmp_2,_sigValue_50); - _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_99 = _sigIdx_99 + 1*_sigSizes_99[1]; - ctx->setSignal(ctx->cIdx, _offset_99, _tmp_3); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); - ctx->freeBigInts(_sigValue_25, 1); - ctx->freeBigInts(_sigValue_26, 1); - ctx->freeBigInts(_sigValue_27, 1); - ctx->freeBigInts(_sigValue_28, 1); - ctx->freeBigInts(_sigValue_29, 1); - ctx->freeBigInts(_sigValue_30, 1); - ctx->freeBigInts(_sigValue_31, 1); - ctx->freeBigInts(_sigValue_32, 1); - ctx->freeBigInts(_sigValue_33, 1); - ctx->freeBigInts(_sigValue_34, 1); - ctx->freeBigInts(_sigValue_35, 1); - ctx->freeBigInts(_sigValue_36, 1); - ctx->freeBigInts(_sigValue_37, 1); - ctx->freeBigInts(_sigValue_38, 1); - ctx->freeBigInts(_sigValue_39, 1); - ctx->freeBigInts(_sigValue_40, 1); - ctx->freeBigInts(_sigValue_41, 1); - ctx->freeBigInts(_sigValue_42, 1); - ctx->freeBigInts(_sigValue_43, 1); - ctx->freeBigInts(_sigValue_44, 1); - ctx->freeBigInts(_sigValue_45, 1); - ctx->freeBigInts(_sigValue_46, 1); - ctx->freeBigInts(_sigValue_47, 1); - ctx->freeBigInts(_sigValue_48, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_sigValue_49, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_50, 1); - ctx->freeBigInts(_tmp_3, 1); -} - -/* -MontgomeryDouble -*/ -void MontgomeryDouble_90f61203260940df(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_10; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_11; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_2; - int _sigIdx_3; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "3", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_2; - int _offset_13; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "337396", 10); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_5; - Circom_Sizes _sigSizes_3; - int _offset_15; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "2", 10); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_6; - int _sigIdx_7; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_4; - int _offset_17; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "2", 10); - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _sigIdx_9; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "3", 10); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_5; - int _offset_19; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "337396", 10); - PBigInt _tmp_20 = ctx->allocBigInts(1); - PBigInt _tmp_21 = ctx->allocBigInts(1); - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - int _sigIdx_11; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "1", 10); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _sigIdx_12; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "168698", 10); - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _sigIdx_13; - Circom_Sizes _sigSizes_6; - int _offset_22; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "2", 10); - PBigInt _tmp_26 = ctx->allocBigInts(1); - PBigInt _tmp_27 = ctx->allocBigInts(1); - int _sigIdx_14; - Circom_Sizes _sigSizes_7; - int _offset_23; - int _sigIdx_15; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - int _sigIdx_16; - Circom_Sizes _sigSizes_8; - int _offset_24; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_9; - int _offset_25; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - PBigInt _tmp_28 = ctx->allocBigInts(1); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _sigIdx_18; - Circom_Sizes _sigSizes_10; - int _offset_26; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _sigIdx_19; - Circom_Sizes _sigSizes_11; - int _offset_27; - - - /* signal input in[2] */ - - /* signal output out[2] */ - - /* var a = 168700 */ - - /* var d = 168696 */ - - /* var A = (2 * (a + d)) / (a - d) */ - - /* var B = 4 / (a - d) */ - - /* signal lamda */ - - /* signal x1_2 */ - - /* x1_2 <== in[0] * in[0] */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_10 = _sigIdx + 0*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_11 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_1); - ctx->field->mul(_tmp_6,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); - ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp_6); - - /* lamda <-- (3*x1_2 + 2*A*in[0] + 1 ) / (2*B*in[1]) */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); - ctx->field->mul(_tmp_7,_const,_sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_13 = _sigIdx_4 + 0*_sigSizes_2[1]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); - ctx->field->mul(_tmp_9,_const_1,_sigValue_3); - ctx->field->add(_tmp_10,_tmp_7,_tmp_9); - ctx->field->add(_tmp_11,_tmp_10,_const_2); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_15 = _sigIdx_5 + 1*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_4); - ctx->field->mul(_tmp_13,_const_3,_sigValue_4); - ctx->field->div(_tmp_14,_tmp_11,_tmp_13); - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->setSignal(ctx->cIdx, _sigIdx_6, _tmp_14); - - /* lamda * (2*B*in[1]) === (3*x1_2 + 2*A*in[0] + 1 ) */ - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_17 = _sigIdx_8 + 1*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_6); - ctx->field->mul(_tmp_16,_const_4,_sigValue_6); - ctx->field->mul(_tmp_17,_sigValue_5,_tmp_16); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0xe29b1d535fbc8e4fLL /* x1_2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); - ctx->field->mul(_tmp_18,_const_5,_sigValue_7); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_19 = _sigIdx_10 + 0*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_8); - ctx->field->mul(_tmp_20,_const_6,_sigValue_8); - ctx->field->add(_tmp_21,_tmp_18,_tmp_20); - ctx->field->add(_tmp_22,_tmp_21,_const_7); - ctx->checkConstraint(_tmp_17, _tmp_22, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:137:4"); - /* out[0] <== B*lamda*lamda - A - 2*in[0] */ - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_9); - ctx->field->mul(_tmp_23,_const_8,_sigValue_9); - _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_10); - ctx->field->mul(_tmp_24,_tmp_23,_sigValue_10); - ctx->field->sub(_tmp_25,_tmp_24,_const_9); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_22 = _sigIdx_13 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_22, _sigValue_11); - ctx->field->mul(_tmp_26,_const_10,_sigValue_11); - ctx->field->sub(_tmp_27,_tmp_25,_tmp_26); - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_23 = _sigIdx_14 + 0*_sigSizes_7[1]; - ctx->setSignal(ctx->cIdx, _offset_23, _tmp_27); - - /* out[1] <== lamda * (in[0] - out[0]) - in[1] */ - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_12); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_24 = _sigIdx_16 + 0*_sigSizes_8[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_13); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_25 = _sigIdx_17 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_14); - ctx->field->sub(_tmp_28,_sigValue_13,_sigValue_14); - ctx->field->mul(_tmp_29,_sigValue_12,_tmp_28); - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_26 = _sigIdx_18 + 1*_sigSizes_10[1]; - ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_15); - ctx->field->sub(_tmp_30,_tmp_29,_sigValue_15); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_27 = _sigIdx_19 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_27, _tmp_30); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_tmp_30, 1); -} - -/* -MontgomeryAdd -*/ -void MontgomeryAdd_6479fdda8bf6c089(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_10; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_11; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_12; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_13; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _sigIdx_4; - int _sigIdx_5; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - int _offset_14; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - int _offset_15; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _tmp_10 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_6; - int _offset_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_17; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_10; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "1", 10); - PBigInt _tmp_12 = ctx->allocBigInts(1); - int _sigIdx_11; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "168698", 10); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_12; - Circom_Sizes _sigSizes_8; - int _offset_20; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_21; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - PBigInt _tmp_16 = ctx->allocBigInts(1); - int _sigIdx_14; - Circom_Sizes _sigSizes_10; - int _offset_22; - int _sigIdx_15; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - int _sigIdx_16; - Circom_Sizes _sigSizes_11; - int _offset_23; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_12; - int _offset_24; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_18; - Circom_Sizes _sigSizes_13; - int _offset_25; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _sigIdx_19; - Circom_Sizes _sigSizes_14; - int _offset_26; - - - /* signal input in1[2] */ - - /* signal input in2[2] */ - - /* signal output out[2] */ - - /* var a = 168700 */ - - /* var d = 168696 */ - - /* var A = (2 * (a + d)) / (a - d) */ - - /* var B = 4 / (a - d) */ - - /* signal lamda */ - - /* lamda <-- (in2[1] - in1[1]) / (in2[0] - in1[0]) */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_10 = _sigIdx + 1*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_11 = _sigIdx_1 + 1*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_1); - ctx->field->sub(_tmp_6,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_12 = _sigIdx_2 + 0*_sigSizes_2[1]; - ctx->getSignal(ctx->cIdx, _offset_12, _sigValue_2); - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_13 = _sigIdx_3 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); - ctx->field->sub(_tmp_7,_sigValue_2,_sigValue_3); - ctx->field->div(_tmp_8,_tmp_6,_tmp_7); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->setSignal(ctx->cIdx, _sigIdx_4, _tmp_8); - - /* lamda * (in2[0] - in1[0]) === (in2[1] - in1[1]) */ - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_14 = _sigIdx_6 + 0*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_14, _sigValue_5); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_15 = _sigIdx_7 + 0*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_6); - ctx->field->sub(_tmp_9,_sigValue_5,_sigValue_6); - ctx->field->mul(_tmp_10,_sigValue_4,_tmp_9); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_16 = _sigIdx_8 + 1*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_16, _sigValue_7); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_17 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_8); - ctx->field->sub(_tmp_11,_sigValue_7,_sigValue_8); - ctx->checkConstraint(_tmp_10, _tmp_11, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:102:4"); - /* out[0] <== B*lamda*lamda - A - in1[0] -in2[0] */ - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_9); - ctx->field->mul(_tmp_12,_const,_sigValue_9); - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_10); - ctx->field->mul(_tmp_13,_tmp_12,_sigValue_10); - ctx->field->sub(_tmp_14,_tmp_13,_const_1); - _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_20 = _sigIdx_12 + 0*_sigSizes_8[1]; - ctx->getSignal(ctx->cIdx, _offset_20, _sigValue_11); - ctx->field->sub(_tmp_15,_tmp_14,_sigValue_11); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc1192bd45ee4LL /* in2 */); - _offset_21 = _sigIdx_13 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_12); - ctx->field->sub(_tmp_16,_tmp_15,_sigValue_12); - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_22 = _sigIdx_14 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_22, _tmp_16); - - /* out[1] <== lamda * (in1[0] - out[0]) - in1[1] */ - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xea67a6ec62466682LL /* lamda */); - ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_13); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_23 = _sigIdx_16 + 0*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_23, _sigValue_14); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_24 = _sigIdx_17 + 0*_sigSizes_12[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_15); - ctx->field->sub(_tmp_17,_sigValue_14,_sigValue_15); - ctx->field->mul(_tmp_18,_sigValue_13,_tmp_17); - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x2b9fc4192bd463fdLL /* in1 */); - _offset_25 = _sigIdx_18 + 1*_sigSizes_13[1]; - ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_16); - ctx->field->sub(_tmp_19,_tmp_18,_sigValue_16); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_26 = _sigIdx_19 + 1*_sigSizes_14[1]; - ctx->setSignal(ctx->cIdx, _offset_26, _tmp_19); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_tmp_19, 1); -} - -/* -MultiMux3 -n=2 -*/ -void MultiMux3_af32615da3b0d5ce(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_2; - int _offset_6; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_3; - int _offset_8; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _sigIdx_5; - Circom_Sizes _sigSizes_4; - int _offset_10; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_6; - Circom_Sizes _sigSizes_5; - int _offset_12; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_7; - int _offset_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_9; - Circom_Sizes _sigSizes_8; - int _offset_18; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_9; - int _offset_20; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _sigIdx_11; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - PBigInt _tmp_9 = ctx->allocBigInts(1); - int _sigIdx_12; - Circom_Sizes _sigSizes_10; - int _offset_22; - int _sigIdx_13; - Circom_Sizes _sigSizes_11; - int _offset_24; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - int _sigIdx_14; - Circom_Sizes _sigSizes_12; - int _offset_26; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - PBigInt _tmp_10 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_13; - int _offset_28; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_16; - Circom_Sizes _sigSizes_14; - int _offset_30; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - PBigInt _tmp_12 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_15; - int _offset_31; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _sigIdx_18; - Circom_Sizes _sigSizes_16; - int _offset_33; - int _sigIdx_19; - Circom_Sizes _sigSizes_17; - int _offset_35; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - int _sigIdx_20; - Circom_Sizes _sigSizes_18; - int _offset_37; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_21; - Circom_Sizes _sigSizes_19; - int _offset_39; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _sigIdx_22; - Circom_Sizes _sigSizes_20; - int _offset_41; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _tmp_16 = ctx->allocBigInts(1); - int _sigIdx_23; - Circom_Sizes _sigSizes_21; - int _offset_42; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _sigIdx_24; - Circom_Sizes _sigSizes_22; - int _offset_44; - int _sigIdx_25; - Circom_Sizes _sigSizes_23; - int _offset_46; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - int _sigIdx_26; - Circom_Sizes _sigSizes_24; - int _offset_48; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_27; - Circom_Sizes _sigSizes_25; - int _offset_50; - int _sigIdx_28; - Circom_Sizes _sigSizes_26; - int _offset_52; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _sigIdx_29; - Circom_Sizes _sigSizes_27; - int _offset_54; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _sigIdx_30; - Circom_Sizes _sigSizes_28; - int _offset_56; - PBigInt _sigValue_25 = ctx->allocBigInts(1); - PBigInt _tmp_20 = ctx->allocBigInts(1); - int _sigIdx_31; - Circom_Sizes _sigSizes_29; - int _offset_58; - PBigInt _sigValue_26 = ctx->allocBigInts(1); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _sigIdx_32; - PBigInt _sigValue_27 = ctx->allocBigInts(1); - PBigInt _tmp_22 = ctx->allocBigInts(1); - int _sigIdx_33; - Circom_Sizes _sigSizes_30; - int _offset_60; - int _sigIdx_34; - Circom_Sizes _sigSizes_31; - int _offset_62; - PBigInt _sigValue_28 = ctx->allocBigInts(1); - int _sigIdx_35; - Circom_Sizes _sigSizes_32; - int _offset_64; - PBigInt _sigValue_29 = ctx->allocBigInts(1); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _sigIdx_36; - Circom_Sizes _sigSizes_33; - int _offset_65; - PBigInt _sigValue_30 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _sigIdx_37; - Circom_Sizes _sigSizes_34; - int _offset_67; - int _sigIdx_38; - Circom_Sizes _sigSizes_35; - int _offset_69; - PBigInt _sigValue_31 = ctx->allocBigInts(1); - int _sigIdx_39; - Circom_Sizes _sigSizes_36; - int _offset_71; - PBigInt _sigValue_32 = ctx->allocBigInts(1); - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _sigIdx_40; - Circom_Sizes _sigSizes_37; - int _offset_72; - PBigInt _sigValue_33 = ctx->allocBigInts(1); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _sigIdx_41; - Circom_Sizes _sigSizes_38; - int _offset_74; - int _sigIdx_42; - Circom_Sizes _sigSizes_39; - int _offset_76; - PBigInt _sigValue_34 = ctx->allocBigInts(1); - int _sigIdx_43; - Circom_Sizes _sigSizes_40; - int _offset_78; - int _sigIdx_44; - Circom_Sizes _sigSizes_41; - int _offset_80; - PBigInt _sigValue_35 = ctx->allocBigInts(1); - int _sigIdx_45; - Circom_Sizes _sigSizes_42; - int _offset_82; - PBigInt _sigValue_36 = ctx->allocBigInts(1); - PBigInt _tmp_27 = ctx->allocBigInts(1); - int _sigIdx_46; - Circom_Sizes _sigSizes_43; - int _offset_84; - PBigInt _sigValue_37 = ctx->allocBigInts(1); - PBigInt _tmp_28 = ctx->allocBigInts(1); - int _sigIdx_47; - Circom_Sizes _sigSizes_44; - int _offset_86; - PBigInt _sigValue_38 = ctx->allocBigInts(1); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _sigIdx_48; - Circom_Sizes _sigSizes_45; - int _offset_87; - PBigInt _sigValue_39 = ctx->allocBigInts(1); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _sigIdx_49; - Circom_Sizes _sigSizes_46; - int _offset_89; - PBigInt _sigValue_40 = ctx->allocBigInts(1); - int _sigIdx_50; - Circom_Sizes _sigSizes_47; - int _offset_91; - PBigInt _sigValue_41 = ctx->allocBigInts(1); - PBigInt _tmp_31 = ctx->allocBigInts(1); - int _sigIdx_51; - Circom_Sizes _sigSizes_48; - int _offset_93; - PBigInt _sigValue_42 = ctx->allocBigInts(1); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _sigIdx_52; - Circom_Sizes _sigSizes_49; - int _offset_95; - PBigInt _sigValue_43 = ctx->allocBigInts(1); - PBigInt _tmp_33 = ctx->allocBigInts(1); - PBigInt _tmp_34 = ctx->allocBigInts(1); - int _sigIdx_53; - Circom_Sizes _sigSizes_50; - int _offset_97; - PBigInt _tmp_36 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _sigIdx_54; - Circom_Sizes _sigSizes_51; - PBigInt _v_49; - int _offset_103; - PBigInt _sigValue_44 = ctx->allocBigInts(1); - int _sigIdx_55; - Circom_Sizes _sigSizes_52; - PBigInt _v_50; - int _offset_105; - PBigInt _sigValue_45 = ctx->allocBigInts(1); - PBigInt _tmp_37 = ctx->allocBigInts(1); - int _sigIdx_56; - Circom_Sizes _sigSizes_53; - PBigInt _v_51; - int _offset_107; - PBigInt _sigValue_46 = ctx->allocBigInts(1); - PBigInt _tmp_38 = ctx->allocBigInts(1); - int _sigIdx_57; - Circom_Sizes _sigSizes_54; - PBigInt _v_52; - int _offset_109; - PBigInt _sigValue_47 = ctx->allocBigInts(1); - PBigInt _tmp_39 = ctx->allocBigInts(1); - int _sigIdx_58; - Circom_Sizes _sigSizes_55; - PBigInt _v_53; - int _offset_111; - PBigInt _sigValue_48 = ctx->allocBigInts(1); - PBigInt _tmp_40 = ctx->allocBigInts(1); - int _sigIdx_59; - Circom_Sizes _sigSizes_56; - PBigInt _v_54; - int _offset_113; - PBigInt _sigValue_49 = ctx->allocBigInts(1); - PBigInt _tmp_41 = ctx->allocBigInts(1); - int _sigIdx_60; - Circom_Sizes _sigSizes_57; - PBigInt _v_55; - int _offset_115; - PBigInt _sigValue_50 = ctx->allocBigInts(1); - PBigInt _tmp_42 = ctx->allocBigInts(1); - int _sigIdx_61; - Circom_Sizes _sigSizes_58; - PBigInt _v_56; - int _offset_117; - PBigInt _sigValue_51 = ctx->allocBigInts(1); - PBigInt _tmp_43 = ctx->allocBigInts(1); - int _sigIdx_62; - PBigInt _sigValue_52 = ctx->allocBigInts(1); - PBigInt _tmp_44 = ctx->allocBigInts(1); - int _sigIdx_63; - Circom_Sizes _sigSizes_59; - PBigInt _v_57; - int _offset_119; - int _sigIdx_64; - Circom_Sizes _sigSizes_60; - PBigInt _v_58; - int _offset_121; - PBigInt _sigValue_53 = ctx->allocBigInts(1); - int _sigIdx_65; - Circom_Sizes _sigSizes_61; - PBigInt _v_59; - int _offset_123; - PBigInt _sigValue_54 = ctx->allocBigInts(1); - PBigInt _tmp_45 = ctx->allocBigInts(1); - int _sigIdx_66; - Circom_Sizes _sigSizes_62; - PBigInt _v_60; - int _offset_125; - PBigInt _sigValue_55 = ctx->allocBigInts(1); - PBigInt _tmp_46 = ctx->allocBigInts(1); - int _sigIdx_67; - Circom_Sizes _sigSizes_63; - PBigInt _v_61; - int _offset_127; - PBigInt _sigValue_56 = ctx->allocBigInts(1); - PBigInt _tmp_47 = ctx->allocBigInts(1); - int _sigIdx_68; - Circom_Sizes _sigSizes_64; - int _offset_128; - PBigInt _sigValue_57 = ctx->allocBigInts(1); - PBigInt _tmp_48 = ctx->allocBigInts(1); - int _sigIdx_69; - Circom_Sizes _sigSizes_65; - PBigInt _v_62; - int _offset_130; - int _sigIdx_70; - Circom_Sizes _sigSizes_66; - PBigInt _v_63; - int _offset_132; - PBigInt _sigValue_58 = ctx->allocBigInts(1); - int _sigIdx_71; - Circom_Sizes _sigSizes_67; - PBigInt _v_64; - int _offset_134; - PBigInt _sigValue_59 = ctx->allocBigInts(1); - PBigInt _tmp_49 = ctx->allocBigInts(1); - int _sigIdx_72; - Circom_Sizes _sigSizes_68; - PBigInt _v_65; - int _offset_136; - PBigInt _sigValue_60 = ctx->allocBigInts(1); - PBigInt _tmp_50 = ctx->allocBigInts(1); - int _sigIdx_73; - Circom_Sizes _sigSizes_69; - PBigInt _v_66; - int _offset_138; - PBigInt _sigValue_61 = ctx->allocBigInts(1); - PBigInt _tmp_51 = ctx->allocBigInts(1); - int _sigIdx_74; - Circom_Sizes _sigSizes_70; - int _offset_139; - PBigInt _sigValue_62 = ctx->allocBigInts(1); - PBigInt _tmp_52 = ctx->allocBigInts(1); - int _sigIdx_75; - Circom_Sizes _sigSizes_71; - PBigInt _v_67; - int _offset_141; - int _sigIdx_76; - Circom_Sizes _sigSizes_72; - PBigInt _v_68; - int _offset_143; - PBigInt _sigValue_63 = ctx->allocBigInts(1); - int _sigIdx_77; - Circom_Sizes _sigSizes_73; - PBigInt _v_69; - int _offset_145; - PBigInt _sigValue_64 = ctx->allocBigInts(1); - PBigInt _tmp_53 = ctx->allocBigInts(1); - int _sigIdx_78; - Circom_Sizes _sigSizes_74; - PBigInt _v_70; - int _offset_147; - int _sigIdx_79; - Circom_Sizes _sigSizes_75; - PBigInt _v_71; - int _offset_149; - PBigInt _sigValue_65 = ctx->allocBigInts(1); - int _sigIdx_80; - Circom_Sizes _sigSizes_76; - PBigInt _v_72; - int _offset_151; - PBigInt _sigValue_66 = ctx->allocBigInts(1); - PBigInt _tmp_54 = ctx->allocBigInts(1); - int _sigIdx_81; - Circom_Sizes _sigSizes_77; - PBigInt _v_73; - int _offset_153; - PBigInt _sigValue_67 = ctx->allocBigInts(1); - PBigInt _tmp_55 = ctx->allocBigInts(1); - int _sigIdx_82; - Circom_Sizes _sigSizes_78; - PBigInt _v_74; - int _offset_155; - PBigInt _sigValue_68 = ctx->allocBigInts(1); - PBigInt _tmp_56 = ctx->allocBigInts(1); - int _sigIdx_83; - PBigInt _sigValue_69 = ctx->allocBigInts(1); - PBigInt _tmp_57 = ctx->allocBigInts(1); - int _sigIdx_84; - Circom_Sizes _sigSizes_79; - PBigInt _v_75; - int _offset_157; - int _sigIdx_85; - Circom_Sizes _sigSizes_80; - PBigInt _v_76; - int _offset_159; - PBigInt _sigValue_70 = ctx->allocBigInts(1); - int _sigIdx_86; - Circom_Sizes _sigSizes_81; - PBigInt _v_77; - int _offset_161; - PBigInt _sigValue_71 = ctx->allocBigInts(1); - PBigInt _tmp_58 = ctx->allocBigInts(1); - int _sigIdx_87; - Circom_Sizes _sigSizes_82; - int _offset_162; - PBigInt _sigValue_72 = ctx->allocBigInts(1); - PBigInt _tmp_59 = ctx->allocBigInts(1); - int _sigIdx_88; - Circom_Sizes _sigSizes_83; - PBigInt _v_78; - int _offset_164; - int _sigIdx_89; - Circom_Sizes _sigSizes_84; - PBigInt _v_79; - int _offset_166; - PBigInt _sigValue_73 = ctx->allocBigInts(1); - int _sigIdx_90; - Circom_Sizes _sigSizes_85; - PBigInt _v_80; - int _offset_168; - PBigInt _sigValue_74 = ctx->allocBigInts(1); - PBigInt _tmp_60 = ctx->allocBigInts(1); - int _sigIdx_91; - Circom_Sizes _sigSizes_86; - int _offset_169; - PBigInt _sigValue_75 = ctx->allocBigInts(1); - PBigInt _tmp_61 = ctx->allocBigInts(1); - int _sigIdx_92; - Circom_Sizes _sigSizes_87; - PBigInt _v_81; - int _offset_171; - int _sigIdx_93; - Circom_Sizes _sigSizes_88; - PBigInt _v_82; - int _offset_173; - PBigInt _sigValue_76 = ctx->allocBigInts(1); - int _sigIdx_94; - Circom_Sizes _sigSizes_89; - PBigInt _v_83; - int _offset_175; - int _sigIdx_95; - Circom_Sizes _sigSizes_90; - PBigInt _v_84; - int _offset_177; - PBigInt _sigValue_77 = ctx->allocBigInts(1); - int _sigIdx_96; - Circom_Sizes _sigSizes_91; - PBigInt _v_85; - int _offset_179; - PBigInt _sigValue_78 = ctx->allocBigInts(1); - PBigInt _tmp_62 = ctx->allocBigInts(1); - int _sigIdx_97; - Circom_Sizes _sigSizes_92; - PBigInt _v_86; - int _offset_181; - PBigInt _sigValue_79 = ctx->allocBigInts(1); - PBigInt _tmp_63 = ctx->allocBigInts(1); - int _sigIdx_98; - Circom_Sizes _sigSizes_93; - PBigInt _v_87; - int _offset_183; - PBigInt _sigValue_80 = ctx->allocBigInts(1); - PBigInt _tmp_64 = ctx->allocBigInts(1); - int _sigIdx_99; - Circom_Sizes _sigSizes_94; - int _offset_184; - PBigInt _sigValue_81 = ctx->allocBigInts(1); - PBigInt _tmp_65 = ctx->allocBigInts(1); - int _sigIdx_100; - Circom_Sizes _sigSizes_95; - PBigInt _v_88; - int _offset_186; - PBigInt _sigValue_82 = ctx->allocBigInts(1); - int _sigIdx_101; - Circom_Sizes _sigSizes_96; - PBigInt _v_89; - int _offset_188; - PBigInt _sigValue_83 = ctx->allocBigInts(1); - PBigInt _tmp_66 = ctx->allocBigInts(1); - int _sigIdx_102; - Circom_Sizes _sigSizes_97; - PBigInt _v_90; - int _offset_190; - PBigInt _sigValue_84 = ctx->allocBigInts(1); - PBigInt _tmp_67 = ctx->allocBigInts(1); - int _sigIdx_103; - Circom_Sizes _sigSizes_98; - PBigInt _v_91; - int _offset_192; - PBigInt _sigValue_85 = ctx->allocBigInts(1); - PBigInt _tmp_68 = ctx->allocBigInts(1); - PBigInt _tmp_69 = ctx->allocBigInts(1); - int _sigIdx_104; - Circom_Sizes _sigSizes_99; - PBigInt _v_92; - int _offset_194; - PBigInt _v_93; - PBigInt _tmp_70 = ctx->allocBigInts(1); - PBigInt _v_94; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "2", 10); - PBigInt _tmp_71 = ctx->allocBigInts(1); - - - /* signal input c[n][8] */ - - /* signal input s[3] */ - - /* signal output out[n] */ - - /* signal a210[n] */ - - /* signal a21[n] */ - - /* signal a20[n] */ - - /* signal a2[n] */ - - /* signal a10[n] */ - - /* signal a1[n] */ - - /* signal a0[n] */ - - /* signal a[n] */ - - /* signal s10 */ - - /* s10 <== s[1] * s[0] */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset = _sigIdx + 1*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); - ctx->field->mul(_tmp,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); - - /* for (var i=0,igetSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_6 = _sigIdx_3 + 0*_sigSizes_2[1] + 7*_sigSizes_2[2]; - ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_8 = _sigIdx_4 + 0*_sigSizes_3[1] + 6*_sigSizes_3[2]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_3); - ctx->field->sub(_tmp_2,_sigValue_2,_sigValue_3); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_10 = _sigIdx_5 + 0*_sigSizes_4[1] + 5*_sigSizes_4[2]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_4); - ctx->field->sub(_tmp_3,_tmp_2,_sigValue_4); - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_12 = _sigIdx_6 + 0*_sigSizes_5[1] + 4*_sigSizes_5[2]; - ctx->getSignal(ctx->cIdx, _offset_12, _sigValue_5); - ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_14 = _sigIdx_7 + 0*_sigSizes_6[1] + 3*_sigSizes_6[2]; - ctx->getSignal(ctx->cIdx, _offset_14, _sigValue_6); - ctx->field->sub(_tmp_5,_tmp_4,_sigValue_6); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_16 = _sigIdx_8 + 0*_sigSizes_7[1] + 2*_sigSizes_7[2]; - ctx->getSignal(ctx->cIdx, _offset_16, _sigValue_7); - ctx->field->add(_tmp_6,_tmp_5,_sigValue_7); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_18 = _sigIdx_9 + 0*_sigSizes_8[1] + 1*_sigSizes_8[2]; - ctx->getSignal(ctx->cIdx, _offset_18, _sigValue_8); - ctx->field->add(_tmp_7,_tmp_6,_sigValue_8); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_20 = _sigIdx_10 + 0*_sigSizes_9[1] + 0*_sigSizes_9[2]; - ctx->getSignal(ctx->cIdx, _offset_20, _sigValue_9); - ctx->field->sub(_tmp_8,_tmp_7,_sigValue_9); - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_10); - ctx->field->mul(_tmp_9,_tmp_8,_sigValue_10); - _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _offset_22 = _sigIdx_12 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_22, _tmp_9); - - /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s[1] */ - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_24 = _sigIdx_13 + 0*_sigSizes_11[1] + 6*_sigSizes_11[2]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_11); - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_26 = _sigIdx_14 + 0*_sigSizes_12[1] + 4*_sigSizes_12[2]; - ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_12); - ctx->field->sub(_tmp_10,_sigValue_11,_sigValue_12); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_28 = _sigIdx_15 + 0*_sigSizes_13[1] + 2*_sigSizes_13[2]; - ctx->getSignal(ctx->cIdx, _offset_28, _sigValue_13); - ctx->field->sub(_tmp_11,_tmp_10,_sigValue_13); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_30 = _sigIdx_16 + 0*_sigSizes_14[1] + 0*_sigSizes_14[2]; - ctx->getSignal(ctx->cIdx, _offset_30, _sigValue_14); - ctx->field->add(_tmp_12,_tmp_11,_sigValue_14); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_31 = _sigIdx_17 + 1*_sigSizes_15[1]; - ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_15); - ctx->field->mul(_tmp_13,_tmp_12,_sigValue_15); - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_16 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _offset_33 = _sigIdx_18 + 0*_sigSizes_16[1]; - ctx->setSignal(ctx->cIdx, _offset_33, _tmp_13); - - /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s[0] */ - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_35 = _sigIdx_19 + 0*_sigSizes_17[1] + 5*_sigSizes_17[2]; - ctx->getSignal(ctx->cIdx, _offset_35, _sigValue_16); - _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_37 = _sigIdx_20 + 0*_sigSizes_18[1] + 4*_sigSizes_18[2]; - ctx->getSignal(ctx->cIdx, _offset_37, _sigValue_17); - ctx->field->sub(_tmp_14,_sigValue_16,_sigValue_17); - _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_39 = _sigIdx_21 + 0*_sigSizes_19[1] + 1*_sigSizes_19[2]; - ctx->getSignal(ctx->cIdx, _offset_39, _sigValue_18); - ctx->field->sub(_tmp_15,_tmp_14,_sigValue_18); - _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_20 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_41 = _sigIdx_22 + 0*_sigSizes_20[1] + 0*_sigSizes_20[2]; - ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_19); - ctx->field->add(_tmp_16,_tmp_15,_sigValue_19); - _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_42 = _sigIdx_23 + 0*_sigSizes_21[1]; - ctx->getSignal(ctx->cIdx, _offset_42, _sigValue_20); - ctx->field->mul(_tmp_17,_tmp_16,_sigValue_20); - _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_22 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _offset_44 = _sigIdx_24 + 0*_sigSizes_22[1]; - ctx->setSignal(ctx->cIdx, _offset_44, _tmp_17); - - /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) */ - _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_23 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_46 = _sigIdx_25 + 0*_sigSizes_23[1] + 4*_sigSizes_23[2]; - ctx->getSignal(ctx->cIdx, _offset_46, _sigValue_21); - _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_24 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_48 = _sigIdx_26 + 0*_sigSizes_24[1] + 0*_sigSizes_24[2]; - ctx->getSignal(ctx->cIdx, _offset_48, _sigValue_22); - ctx->field->sub(_tmp_18,_sigValue_21,_sigValue_22); - _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_25 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _offset_50 = _sigIdx_27 + 0*_sigSizes_25[1]; - ctx->setSignal(ctx->cIdx, _offset_50, _tmp_18); - - /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ - _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_26 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_52 = _sigIdx_28 + 0*_sigSizes_26[1] + 3*_sigSizes_26[2]; - ctx->getSignal(ctx->cIdx, _offset_52, _sigValue_23); - _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_27 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_54 = _sigIdx_29 + 0*_sigSizes_27[1] + 2*_sigSizes_27[2]; - ctx->getSignal(ctx->cIdx, _offset_54, _sigValue_24); - ctx->field->sub(_tmp_19,_sigValue_23,_sigValue_24); - _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_28 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_56 = _sigIdx_30 + 0*_sigSizes_28[1] + 1*_sigSizes_28[2]; - ctx->getSignal(ctx->cIdx, _offset_56, _sigValue_25); - ctx->field->sub(_tmp_20,_tmp_19,_sigValue_25); - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_29 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_58 = _sigIdx_31 + 0*_sigSizes_29[1] + 0*_sigSizes_29[2]; - ctx->getSignal(ctx->cIdx, _offset_58, _sigValue_26); - ctx->field->add(_tmp_21,_tmp_20,_sigValue_26); - _sigIdx_32 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_32, _sigValue_27); - ctx->field->mul(_tmp_22,_tmp_21,_sigValue_27); - _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_30 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _offset_60 = _sigIdx_33 + 0*_sigSizes_30[1]; - ctx->setSignal(ctx->cIdx, _offset_60, _tmp_22); - - /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ - _sigIdx_34 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_62 = _sigIdx_34 + 0*_sigSizes_31[1] + 2*_sigSizes_31[2]; - ctx->getSignal(ctx->cIdx, _offset_62, _sigValue_28); - _sigIdx_35 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_32 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_64 = _sigIdx_35 + 0*_sigSizes_32[1] + 0*_sigSizes_32[2]; - ctx->getSignal(ctx->cIdx, _offset_64, _sigValue_29); - ctx->field->sub(_tmp_23,_sigValue_28,_sigValue_29); - _sigIdx_36 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_65 = _sigIdx_36 + 1*_sigSizes_33[1]; - ctx->getSignal(ctx->cIdx, _offset_65, _sigValue_30); - ctx->field->mul(_tmp_24,_tmp_23,_sigValue_30); - _sigIdx_37 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_34 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _offset_67 = _sigIdx_37 + 0*_sigSizes_34[1]; - ctx->setSignal(ctx->cIdx, _offset_67, _tmp_24); - - /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ - _sigIdx_38 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_35 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_69 = _sigIdx_38 + 0*_sigSizes_35[1] + 1*_sigSizes_35[2]; - ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_31); - _sigIdx_39 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_36 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_71 = _sigIdx_39 + 0*_sigSizes_36[1] + 0*_sigSizes_36[2]; - ctx->getSignal(ctx->cIdx, _offset_71, _sigValue_32); - ctx->field->sub(_tmp_25,_sigValue_31,_sigValue_32); - _sigIdx_40 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_37 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_72 = _sigIdx_40 + 0*_sigSizes_37[1]; - ctx->getSignal(ctx->cIdx, _offset_72, _sigValue_33); - ctx->field->mul(_tmp_26,_tmp_25,_sigValue_33); - _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_38 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _offset_74 = _sigIdx_41 + 0*_sigSizes_38[1]; - ctx->setSignal(ctx->cIdx, _offset_74, _tmp_26); - - /* a[i] <== ( c[i][ 0] ) */ - _sigIdx_42 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_39 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_76 = _sigIdx_42 + 0*_sigSizes_39[1] + 0*_sigSizes_39[2]; - ctx->getSignal(ctx->cIdx, _offset_76, _sigValue_34); - _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_40 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _offset_78 = _sigIdx_43 + 0*_sigSizes_40[1]; - ctx->setSignal(ctx->cIdx, _offset_78, _sigValue_34); - - /* out[i] <== ( a210[i] + a21[i] + a20[i] + a2[i] ) * s[2] + - ( a10[i] + a1[i] + a0[i] + a[i] ) */ - _sigIdx_44 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _offset_80 = _sigIdx_44 + 0*_sigSizes_41[1]; - ctx->getSignal(ctx->cIdx, _offset_80, _sigValue_35); - _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_42 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _offset_82 = _sigIdx_45 + 0*_sigSizes_42[1]; - ctx->getSignal(ctx->cIdx, _offset_82, _sigValue_36); - ctx->field->add(_tmp_27,_sigValue_35,_sigValue_36); - _sigIdx_46 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _offset_84 = _sigIdx_46 + 0*_sigSizes_43[1]; - ctx->getSignal(ctx->cIdx, _offset_84, _sigValue_37); - ctx->field->add(_tmp_28,_tmp_27,_sigValue_37); - _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_44 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _offset_86 = _sigIdx_47 + 0*_sigSizes_44[1]; - ctx->getSignal(ctx->cIdx, _offset_86, _sigValue_38); - ctx->field->add(_tmp_29,_tmp_28,_sigValue_38); - _sigIdx_48 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_87 = _sigIdx_48 + 2*_sigSizes_45[1]; - ctx->getSignal(ctx->cIdx, _offset_87, _sigValue_39); - ctx->field->mul(_tmp_30,_tmp_29,_sigValue_39); - _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_46 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _offset_89 = _sigIdx_49 + 0*_sigSizes_46[1]; - ctx->getSignal(ctx->cIdx, _offset_89, _sigValue_40); - _sigIdx_50 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _offset_91 = _sigIdx_50 + 0*_sigSizes_47[1]; - ctx->getSignal(ctx->cIdx, _offset_91, _sigValue_41); - ctx->field->add(_tmp_31,_sigValue_40,_sigValue_41); - _sigIdx_51 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_48 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _offset_93 = _sigIdx_51 + 0*_sigSizes_48[1]; - ctx->getSignal(ctx->cIdx, _offset_93, _sigValue_42); - ctx->field->add(_tmp_32,_tmp_31,_sigValue_42); - _sigIdx_52 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _offset_95 = _sigIdx_52 + 0*_sigSizes_49[1]; - ctx->getSignal(ctx->cIdx, _offset_95, _sigValue_43); - ctx->field->add(_tmp_33,_tmp_32,_sigValue_43); - ctx->field->add(_tmp_34,_tmp_30,_tmp_33); - _sigIdx_53 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_50 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_97 = _sigIdx_53 + 0*_sigSizes_50[1]; - ctx->setSignal(ctx->cIdx, _offset_97, _tmp_34); - mpz_set_str(_tmp_36[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_36); - while (_cond) { - - /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ - _sigIdx_54 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_51 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_49 = i + 0; - _offset_103 = _sigIdx_54 + ctx->field->toInt(_v_49)*_sigSizes_51[1] + 7*_sigSizes_51[2]; - ctx->getSignal(ctx->cIdx, _offset_103, _sigValue_44); - _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_52 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_50 = i + 0; - _offset_105 = _sigIdx_55 + ctx->field->toInt(_v_50)*_sigSizes_52[1] + 6*_sigSizes_52[2]; - ctx->getSignal(ctx->cIdx, _offset_105, _sigValue_45); - ctx->field->sub(_tmp_37,_sigValue_44,_sigValue_45); - _sigIdx_56 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_53 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_51 = i + 0; - _offset_107 = _sigIdx_56 + ctx->field->toInt(_v_51)*_sigSizes_53[1] + 5*_sigSizes_53[2]; - ctx->getSignal(ctx->cIdx, _offset_107, _sigValue_46); - ctx->field->sub(_tmp_38,_tmp_37,_sigValue_46); - _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_54 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_52 = i + 0; - _offset_109 = _sigIdx_57 + ctx->field->toInt(_v_52)*_sigSizes_54[1] + 4*_sigSizes_54[2]; - ctx->getSignal(ctx->cIdx, _offset_109, _sigValue_47); - ctx->field->add(_tmp_39,_tmp_38,_sigValue_47); - _sigIdx_58 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_53 = i + 0; - _offset_111 = _sigIdx_58 + ctx->field->toInt(_v_53)*_sigSizes_55[1] + 3*_sigSizes_55[2]; - ctx->getSignal(ctx->cIdx, _offset_111, _sigValue_48); - ctx->field->sub(_tmp_40,_tmp_39,_sigValue_48); - _sigIdx_59 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_56 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_54 = i + 0; - _offset_113 = _sigIdx_59 + ctx->field->toInt(_v_54)*_sigSizes_56[1] + 2*_sigSizes_56[2]; - ctx->getSignal(ctx->cIdx, _offset_113, _sigValue_49); - ctx->field->add(_tmp_41,_tmp_40,_sigValue_49); - _sigIdx_60 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_55 = i + 0; - _offset_115 = _sigIdx_60 + ctx->field->toInt(_v_55)*_sigSizes_57[1] + 1*_sigSizes_57[2]; - ctx->getSignal(ctx->cIdx, _offset_115, _sigValue_50); - ctx->field->add(_tmp_42,_tmp_41,_sigValue_50); - _sigIdx_61 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_58 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_56 = i + 0; - _offset_117 = _sigIdx_61 + ctx->field->toInt(_v_56)*_sigSizes_58[1] + 0*_sigSizes_58[2]; - ctx->getSignal(ctx->cIdx, _offset_117, _sigValue_51); - ctx->field->sub(_tmp_43,_tmp_42,_sigValue_51); - _sigIdx_62 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_62, _sigValue_52); - ctx->field->mul(_tmp_44,_tmp_43,_sigValue_52); - _sigIdx_63 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_59 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _v_57 = i + 0; - _offset_119 = _sigIdx_63 + ctx->field->toInt(_v_57)*_sigSizes_59[1]; - ctx->setSignal(ctx->cIdx, _offset_119, _tmp_44); - - /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s[1] */ - _sigIdx_64 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_60 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_58 = i + 0; - _offset_121 = _sigIdx_64 + ctx->field->toInt(_v_58)*_sigSizes_60[1] + 6*_sigSizes_60[2]; - ctx->getSignal(ctx->cIdx, _offset_121, _sigValue_53); - _sigIdx_65 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_61 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_59 = i + 0; - _offset_123 = _sigIdx_65 + ctx->field->toInt(_v_59)*_sigSizes_61[1] + 4*_sigSizes_61[2]; - ctx->getSignal(ctx->cIdx, _offset_123, _sigValue_54); - ctx->field->sub(_tmp_45,_sigValue_53,_sigValue_54); - _sigIdx_66 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_62 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_60 = i + 0; - _offset_125 = _sigIdx_66 + ctx->field->toInt(_v_60)*_sigSizes_62[1] + 2*_sigSizes_62[2]; - ctx->getSignal(ctx->cIdx, _offset_125, _sigValue_55); - ctx->field->sub(_tmp_46,_tmp_45,_sigValue_55); - _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_63 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_61 = i + 0; - _offset_127 = _sigIdx_67 + ctx->field->toInt(_v_61)*_sigSizes_63[1] + 0*_sigSizes_63[2]; - ctx->getSignal(ctx->cIdx, _offset_127, _sigValue_56); - ctx->field->add(_tmp_47,_tmp_46,_sigValue_56); - _sigIdx_68 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_64 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_128 = _sigIdx_68 + 1*_sigSizes_64[1]; - ctx->getSignal(ctx->cIdx, _offset_128, _sigValue_57); - ctx->field->mul(_tmp_48,_tmp_47,_sigValue_57); - _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_65 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _v_62 = i + 0; - _offset_130 = _sigIdx_69 + ctx->field->toInt(_v_62)*_sigSizes_65[1]; - ctx->setSignal(ctx->cIdx, _offset_130, _tmp_48); - - /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s[0] */ - _sigIdx_70 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_66 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_63 = i + 0; - _offset_132 = _sigIdx_70 + ctx->field->toInt(_v_63)*_sigSizes_66[1] + 5*_sigSizes_66[2]; - ctx->getSignal(ctx->cIdx, _offset_132, _sigValue_58); - _sigIdx_71 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_64 = i + 0; - _offset_134 = _sigIdx_71 + ctx->field->toInt(_v_64)*_sigSizes_67[1] + 4*_sigSizes_67[2]; - ctx->getSignal(ctx->cIdx, _offset_134, _sigValue_59); - ctx->field->sub(_tmp_49,_sigValue_58,_sigValue_59); - _sigIdx_72 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_68 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_65 = i + 0; - _offset_136 = _sigIdx_72 + ctx->field->toInt(_v_65)*_sigSizes_68[1] + 1*_sigSizes_68[2]; - ctx->getSignal(ctx->cIdx, _offset_136, _sigValue_60); - ctx->field->sub(_tmp_50,_tmp_49,_sigValue_60); - _sigIdx_73 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_66 = i + 0; - _offset_138 = _sigIdx_73 + ctx->field->toInt(_v_66)*_sigSizes_69[1] + 0*_sigSizes_69[2]; - ctx->getSignal(ctx->cIdx, _offset_138, _sigValue_61); - ctx->field->add(_tmp_51,_tmp_50,_sigValue_61); - _sigIdx_74 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_70 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_139 = _sigIdx_74 + 0*_sigSizes_70[1]; - ctx->getSignal(ctx->cIdx, _offset_139, _sigValue_62); - ctx->field->mul(_tmp_52,_tmp_51,_sigValue_62); - _sigIdx_75 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_71 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _v_67 = i + 0; - _offset_141 = _sigIdx_75 + ctx->field->toInt(_v_67)*_sigSizes_71[1]; - ctx->setSignal(ctx->cIdx, _offset_141, _tmp_52); - - /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) */ - _sigIdx_76 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_72 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_68 = i + 0; - _offset_143 = _sigIdx_76 + ctx->field->toInt(_v_68)*_sigSizes_72[1] + 4*_sigSizes_72[2]; - ctx->getSignal(ctx->cIdx, _offset_143, _sigValue_63); - _sigIdx_77 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_73 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_69 = i + 0; - _offset_145 = _sigIdx_77 + ctx->field->toInt(_v_69)*_sigSizes_73[1] + 0*_sigSizes_73[2]; - ctx->getSignal(ctx->cIdx, _offset_145, _sigValue_64); - ctx->field->sub(_tmp_53,_sigValue_63,_sigValue_64); - _sigIdx_78 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_74 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _v_70 = i + 0; - _offset_147 = _sigIdx_78 + ctx->field->toInt(_v_70)*_sigSizes_74[1]; - ctx->setSignal(ctx->cIdx, _offset_147, _tmp_53); - - /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ - _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_75 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_71 = i + 0; - _offset_149 = _sigIdx_79 + ctx->field->toInt(_v_71)*_sigSizes_75[1] + 3*_sigSizes_75[2]; - ctx->getSignal(ctx->cIdx, _offset_149, _sigValue_65); - _sigIdx_80 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_76 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_72 = i + 0; - _offset_151 = _sigIdx_80 + ctx->field->toInt(_v_72)*_sigSizes_76[1] + 2*_sigSizes_76[2]; - ctx->getSignal(ctx->cIdx, _offset_151, _sigValue_66); - ctx->field->sub(_tmp_54,_sigValue_65,_sigValue_66); - _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_77 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_73 = i + 0; - _offset_153 = _sigIdx_81 + ctx->field->toInt(_v_73)*_sigSizes_77[1] + 1*_sigSizes_77[2]; - ctx->getSignal(ctx->cIdx, _offset_153, _sigValue_67); - ctx->field->sub(_tmp_55,_tmp_54,_sigValue_67); - _sigIdx_82 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_78 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_74 = i + 0; - _offset_155 = _sigIdx_82 + ctx->field->toInt(_v_74)*_sigSizes_78[1] + 0*_sigSizes_78[2]; - ctx->getSignal(ctx->cIdx, _offset_155, _sigValue_68); - ctx->field->add(_tmp_56,_tmp_55,_sigValue_68); - _sigIdx_83 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_83, _sigValue_69); - ctx->field->mul(_tmp_57,_tmp_56,_sigValue_69); - _sigIdx_84 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _v_75 = i + 0; - _offset_157 = _sigIdx_84 + ctx->field->toInt(_v_75)*_sigSizes_79[1]; - ctx->setSignal(ctx->cIdx, _offset_157, _tmp_57); - - /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ - _sigIdx_85 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_80 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_76 = i + 0; - _offset_159 = _sigIdx_85 + ctx->field->toInt(_v_76)*_sigSizes_80[1] + 2*_sigSizes_80[2]; - ctx->getSignal(ctx->cIdx, _offset_159, _sigValue_70); - _sigIdx_86 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_77 = i + 0; - _offset_161 = _sigIdx_86 + ctx->field->toInt(_v_77)*_sigSizes_81[1] + 0*_sigSizes_81[2]; - ctx->getSignal(ctx->cIdx, _offset_161, _sigValue_71); - ctx->field->sub(_tmp_58,_sigValue_70,_sigValue_71); - _sigIdx_87 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_82 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_162 = _sigIdx_87 + 1*_sigSizes_82[1]; - ctx->getSignal(ctx->cIdx, _offset_162, _sigValue_72); - ctx->field->mul(_tmp_59,_tmp_58,_sigValue_72); - _sigIdx_88 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_83 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _v_78 = i + 0; - _offset_164 = _sigIdx_88 + ctx->field->toInt(_v_78)*_sigSizes_83[1]; - ctx->setSignal(ctx->cIdx, _offset_164, _tmp_59); - - /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ - _sigIdx_89 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_84 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_79 = i + 0; - _offset_166 = _sigIdx_89 + ctx->field->toInt(_v_79)*_sigSizes_84[1] + 1*_sigSizes_84[2]; - ctx->getSignal(ctx->cIdx, _offset_166, _sigValue_73); - _sigIdx_90 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_85 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_80 = i + 0; - _offset_168 = _sigIdx_90 + ctx->field->toInt(_v_80)*_sigSizes_85[1] + 0*_sigSizes_85[2]; - ctx->getSignal(ctx->cIdx, _offset_168, _sigValue_74); - ctx->field->sub(_tmp_60,_sigValue_73,_sigValue_74); - _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_86 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_169 = _sigIdx_91 + 0*_sigSizes_86[1]; - ctx->getSignal(ctx->cIdx, _offset_169, _sigValue_75); - ctx->field->mul(_tmp_61,_tmp_60,_sigValue_75); - _sigIdx_92 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_87 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _v_81 = i + 0; - _offset_171 = _sigIdx_92 + ctx->field->toInt(_v_81)*_sigSizes_87[1]; - ctx->setSignal(ctx->cIdx, _offset_171, _tmp_61); - - /* a[i] <== ( c[i][ 0] ) */ - _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_88 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_82 = i + 0; - _offset_173 = _sigIdx_93 + ctx->field->toInt(_v_82)*_sigSizes_88[1] + 0*_sigSizes_88[2]; - ctx->getSignal(ctx->cIdx, _offset_173, _sigValue_76); - _sigIdx_94 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_89 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _v_83 = i + 0; - _offset_175 = _sigIdx_94 + ctx->field->toInt(_v_83)*_sigSizes_89[1]; - ctx->setSignal(ctx->cIdx, _offset_175, _sigValue_76); - - /* out[i] <== ( a210[i] + a21[i] + a20[i] + a2[i] ) * s[2] + - ( a10[i] + a1[i] + a0[i] + a[i] ) */ - _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_90 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _v_84 = i + 0; - _offset_177 = _sigIdx_95 + ctx->field->toInt(_v_84)*_sigSizes_90[1]; - ctx->getSignal(ctx->cIdx, _offset_177, _sigValue_77); - _sigIdx_96 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _v_85 = i + 0; - _offset_179 = _sigIdx_96 + ctx->field->toInt(_v_85)*_sigSizes_91[1]; - ctx->getSignal(ctx->cIdx, _offset_179, _sigValue_78); - ctx->field->add(_tmp_62,_sigValue_77,_sigValue_78); - _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_92 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _v_86 = i + 0; - _offset_181 = _sigIdx_97 + ctx->field->toInt(_v_86)*_sigSizes_92[1]; - ctx->getSignal(ctx->cIdx, _offset_181, _sigValue_79); - ctx->field->add(_tmp_63,_tmp_62,_sigValue_79); - _sigIdx_98 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _v_87 = i + 0; - _offset_183 = _sigIdx_98 + ctx->field->toInt(_v_87)*_sigSizes_93[1]; - ctx->getSignal(ctx->cIdx, _offset_183, _sigValue_80); - ctx->field->add(_tmp_64,_tmp_63,_sigValue_80); - _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_94 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_184 = _sigIdx_99 + 2*_sigSizes_94[1]; - ctx->getSignal(ctx->cIdx, _offset_184, _sigValue_81); - ctx->field->mul(_tmp_65,_tmp_64,_sigValue_81); - _sigIdx_100 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _v_88 = i + 0; - _offset_186 = _sigIdx_100 + ctx->field->toInt(_v_88)*_sigSizes_95[1]; - ctx->getSignal(ctx->cIdx, _offset_186, _sigValue_82); - _sigIdx_101 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_96 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _v_89 = i + 0; - _offset_188 = _sigIdx_101 + ctx->field->toInt(_v_89)*_sigSizes_96[1]; - ctx->getSignal(ctx->cIdx, _offset_188, _sigValue_83); - ctx->field->add(_tmp_66,_sigValue_82,_sigValue_83); - _sigIdx_102 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _v_90 = i + 0; - _offset_190 = _sigIdx_102 + ctx->field->toInt(_v_90)*_sigSizes_97[1]; - ctx->getSignal(ctx->cIdx, _offset_190, _sigValue_84); - ctx->field->add(_tmp_67,_tmp_66,_sigValue_84); - _sigIdx_103 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_98 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _v_91 = i + 0; - _offset_192 = _sigIdx_103 + ctx->field->toInt(_v_91)*_sigSizes_98[1]; - ctx->getSignal(ctx->cIdx, _offset_192, _sigValue_85); - ctx->field->add(_tmp_68,_tmp_67,_sigValue_85); - ctx->field->add(_tmp_69,_tmp_65,_tmp_68); - _sigIdx_104 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_92 = i + 0; - _offset_194 = _sigIdx_104 + ctx->field->toInt(_v_92)*_sigSizes_99[1]; - ctx->setSignal(ctx->cIdx, _offset_194, _tmp_69); - _v_93 = i + 0; - ctx->field->add(_tmp_70, _v_93, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_70, 1); - _v_94 = i + 0; - ctx->field->lt(_tmp_71,_v_94,_const); - _cond = ctx->field->isTrue(_tmp_71); - } - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_sigValue_25, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_sigValue_26, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_27, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_sigValue_28, 1); - ctx->freeBigInts(_sigValue_29, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_30, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_sigValue_31, 1); - ctx->freeBigInts(_sigValue_32, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_33, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_34, 1); - ctx->freeBigInts(_sigValue_35, 1); - ctx->freeBigInts(_sigValue_36, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_sigValue_37, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_sigValue_38, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_sigValue_39, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_sigValue_40, 1); - ctx->freeBigInts(_sigValue_41, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_sigValue_42, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(_sigValue_43, 1); - ctx->freeBigInts(_tmp_33, 1); - ctx->freeBigInts(_tmp_34, 1); - ctx->freeBigInts(_tmp_36, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_44, 1); - ctx->freeBigInts(_sigValue_45, 1); - ctx->freeBigInts(_tmp_37, 1); - ctx->freeBigInts(_sigValue_46, 1); - ctx->freeBigInts(_tmp_38, 1); - ctx->freeBigInts(_sigValue_47, 1); - ctx->freeBigInts(_tmp_39, 1); - ctx->freeBigInts(_sigValue_48, 1); - ctx->freeBigInts(_tmp_40, 1); - ctx->freeBigInts(_sigValue_49, 1); - ctx->freeBigInts(_tmp_41, 1); - ctx->freeBigInts(_sigValue_50, 1); - ctx->freeBigInts(_tmp_42, 1); - ctx->freeBigInts(_sigValue_51, 1); - ctx->freeBigInts(_tmp_43, 1); - ctx->freeBigInts(_sigValue_52, 1); - ctx->freeBigInts(_tmp_44, 1); - ctx->freeBigInts(_sigValue_53, 1); - ctx->freeBigInts(_sigValue_54, 1); - ctx->freeBigInts(_tmp_45, 1); - ctx->freeBigInts(_sigValue_55, 1); - ctx->freeBigInts(_tmp_46, 1); - ctx->freeBigInts(_sigValue_56, 1); - ctx->freeBigInts(_tmp_47, 1); - ctx->freeBigInts(_sigValue_57, 1); - ctx->freeBigInts(_tmp_48, 1); - ctx->freeBigInts(_sigValue_58, 1); - ctx->freeBigInts(_sigValue_59, 1); - ctx->freeBigInts(_tmp_49, 1); - ctx->freeBigInts(_sigValue_60, 1); - ctx->freeBigInts(_tmp_50, 1); - ctx->freeBigInts(_sigValue_61, 1); - ctx->freeBigInts(_tmp_51, 1); - ctx->freeBigInts(_sigValue_62, 1); - ctx->freeBigInts(_tmp_52, 1); - ctx->freeBigInts(_sigValue_63, 1); - ctx->freeBigInts(_sigValue_64, 1); - ctx->freeBigInts(_tmp_53, 1); - ctx->freeBigInts(_sigValue_65, 1); - ctx->freeBigInts(_sigValue_66, 1); - ctx->freeBigInts(_tmp_54, 1); - ctx->freeBigInts(_sigValue_67, 1); - ctx->freeBigInts(_tmp_55, 1); - ctx->freeBigInts(_sigValue_68, 1); - ctx->freeBigInts(_tmp_56, 1); - ctx->freeBigInts(_sigValue_69, 1); - ctx->freeBigInts(_tmp_57, 1); - ctx->freeBigInts(_sigValue_70, 1); - ctx->freeBigInts(_sigValue_71, 1); - ctx->freeBigInts(_tmp_58, 1); - ctx->freeBigInts(_sigValue_72, 1); - ctx->freeBigInts(_tmp_59, 1); - ctx->freeBigInts(_sigValue_73, 1); - ctx->freeBigInts(_sigValue_74, 1); - ctx->freeBigInts(_tmp_60, 1); - ctx->freeBigInts(_sigValue_75, 1); - ctx->freeBigInts(_tmp_61, 1); - ctx->freeBigInts(_sigValue_76, 1); - ctx->freeBigInts(_sigValue_77, 1); - ctx->freeBigInts(_sigValue_78, 1); - ctx->freeBigInts(_tmp_62, 1); - ctx->freeBigInts(_sigValue_79, 1); - ctx->freeBigInts(_tmp_63, 1); - ctx->freeBigInts(_sigValue_80, 1); - ctx->freeBigInts(_tmp_64, 1); - ctx->freeBigInts(_sigValue_81, 1); - ctx->freeBigInts(_tmp_65, 1); - ctx->freeBigInts(_sigValue_82, 1); - ctx->freeBigInts(_sigValue_83, 1); - ctx->freeBigInts(_tmp_66, 1); - ctx->freeBigInts(_sigValue_84, 1); - ctx->freeBigInts(_tmp_67, 1); - ctx->freeBigInts(_sigValue_85, 1); - ctx->freeBigInts(_tmp_68, 1); - ctx->freeBigInts(_tmp_69, 1); - ctx->freeBigInts(_tmp_70, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_71, 1); -} - -/* -Montgomery2Edwards -*/ -void Montgomery2Edwards_f4648cd1308b7594(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - int _offset_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "1", 10); - PBigInt _tmp_1 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_4; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "1", 10); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_5; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - int _offset_6; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - int _offset_7; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_8; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_9; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_10; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_11; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - - - /* signal input in[2] */ - - /* signal output out[2] */ - - /* out[0] <-- in[0] / in[1] */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset = _sigIdx + 0*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_1 = _sigIdx_1 + 1*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); - ctx->field->div(_tmp,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_2 = _sigIdx_2 + 0*_sigSizes_2[1]; - ctx->setSignal(ctx->cIdx, _offset_2, _tmp); - - /* out[1] <-- (in[0] - 1) / (in[0] + 1) */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_3 = _sigIdx_3 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_2); - ctx->field->sub(_tmp_1,_sigValue_2,_const); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_4 = _sigIdx_4 + 0*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_3); - ctx->field->add(_tmp_2,_sigValue_3,_const_1); - ctx->field->div(_tmp_3,_tmp_1,_tmp_2); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_5 = _sigIdx_5 + 1*_sigSizes_5[1]; - ctx->setSignal(ctx->cIdx, _offset_5, _tmp_3); - - /* out[0] * in[1] === in[0] */ - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_6 = _sigIdx_6 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_4); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_7 = _sigIdx_7 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_7, _sigValue_5); - ctx->field->mul(_tmp_4,_sigValue_4,_sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_8 = _sigIdx_8 + 0*_sigSizes_8[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_6); - ctx->checkConstraint(_tmp_4, _sigValue_6, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:55:4"); - /* out[1] * (in[0] + 1) === in[0] - 1 */ - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_9 = _sigIdx_9 + 1*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_9, _sigValue_7); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_10 = _sigIdx_10 + 0*_sigSizes_10[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_8); - ctx->field->add(_tmp_5,_sigValue_8,_const_2); - ctx->field->mul(_tmp_6,_sigValue_7,_tmp_5); - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_11 = _sigIdx_11 + 0*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_9); - ctx->field->sub(_tmp_7,_sigValue_9,_const_3); - ctx->checkConstraint(_tmp_6, _tmp_7, "/Users/jbaylina/git/iden3/circomlib/circuits/montgomery.circom:56:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_7, 1); -} - -/* -BabyAdd -*/ -void BabyAdd_4d10bd4b8f5eb590(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_2; - int _sigIdx_3; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_4; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_1 = ctx->allocBigInts(1); - int _sigIdx_5; - int _sigIdx_6; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "21888242871839275222246405745257275088548364400416034343698204186575808326917", 10); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_7; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - int _sigIdx_8; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_9; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _tmp_5 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_10; - int _sigIdx_11; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _sigIdx_12; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_13; - int _sigIdx_14; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - int _sigIdx_15; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _sigIdx_16; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "168696", 10); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_17; - int _sigIdx_18; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "168696", 10); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "1", 10); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _sigIdx_19; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_20; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - int _sigIdx_21; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _sigIdx_22; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - int _sigIdx_23; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "168700", 10); - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _sigIdx_24; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_25; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "168696", 10); - PBigInt _tmp_19 = ctx->allocBigInts(1); - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_20 = ctx->allocBigInts(1); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _sigIdx_26; - int _sigIdx_27; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "168696", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "1", 10); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _sigIdx_28; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _sigIdx_29; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _sigIdx_30; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "168700", 10); - PBigInt _tmp_25 = ctx->allocBigInts(1); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _sigIdx_31; - PBigInt _sigValue_25 = ctx->allocBigInts(1); - PBigInt _tmp_27 = ctx->allocBigInts(1); - - - /* signal input x1 */ - - /* signal input y1 */ - - /* signal input x2 */ - - /* signal input y2 */ - - /* signal output xout */ - - /* signal output yout */ - - /* signal beta */ - - /* signal gamma */ - - /* signal delta */ - - /* signal tau */ - - /* var a = 168700 */ - - /* var d = 168696 */ - - /* beta <== x1*y2 */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); - ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue_1); - ctx->field->mul(_tmp,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); - - /* gamma <== y1*x2 */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_4, _sigValue_3); - ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); - - /* delta <== (-a*x1+y1)*(x2 + y2) */ - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_6, _sigValue_4); - ctx->field->mul(_tmp_3,_const,_sigValue_4); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); - ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_8, _sigValue_6); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); - ctx->field->add(_tmp_5,_sigValue_6,_sigValue_7); - ctx->field->mul(_tmp_6,_tmp_4,_tmp_5); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->setSignal(ctx->cIdx, _sigIdx_10, _tmp_6); - - /* tau <== beta * gamma */ - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_8); - _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_9); - ctx->field->mul(_tmp_7,_sigValue_8,_sigValue_9); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->setSignal(ctx->cIdx, _sigIdx_13, _tmp_7); - - /* xout <-- (beta + gamma) / (1+ d*tau) */ - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_14, _sigValue_10); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_11); - ctx->field->add(_tmp_8,_sigValue_10,_sigValue_11); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_16, _sigValue_12); - ctx->field->mul(_tmp_9,_const_1,_sigValue_12); - ctx->field->add(_tmp_10,_const_2,_tmp_9); - ctx->field->div(_tmp_11,_tmp_8,_tmp_10); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); - ctx->setSignal(ctx->cIdx, _sigIdx_17, _tmp_11); - - /* (1+ d*tau) * xout === (beta + gamma) */ - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_18, _sigValue_13); - ctx->field->mul(_tmp_12,_const_3,_sigValue_13); - ctx->field->add(_tmp_13,_const_4,_tmp_12); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(ctx->cIdx, _sigIdx_19, _sigValue_14); - ctx->field->mul(_tmp_14,_tmp_13,_sigValue_14); - _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_20, _sigValue_15); - _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_21, _sigValue_16); - ctx->field->add(_tmp_15,_sigValue_15,_sigValue_16); - ctx->checkConstraint(_tmp_14, _tmp_15, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:45:4"); - /* yout <-- (delta + a*beta - gamma) / (1-d*tau) */ - _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->getSignal(ctx->cIdx, _sigIdx_22, _sigValue_17); - _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_23, _sigValue_18); - ctx->field->mul(_tmp_16,_const_5,_sigValue_18); - ctx->field->add(_tmp_17,_sigValue_17,_tmp_16); - _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_24, _sigValue_19); - ctx->field->sub(_tmp_18,_tmp_17,_sigValue_19); - _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_25, _sigValue_20); - ctx->field->mul(_tmp_19,_const_6,_sigValue_20); - ctx->field->sub(_tmp_20,_const_7,_tmp_19); - ctx->field->div(_tmp_21,_tmp_18,_tmp_20); - _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); - ctx->setSignal(ctx->cIdx, _sigIdx_26, _tmp_21); - - /* (1-d*tau)*yout === (delta + a*beta - gamma) */ - _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_27, _sigValue_21); - ctx->field->mul(_tmp_22,_const_8,_sigValue_21); - ctx->field->sub(_tmp_23,_const_9,_tmp_22); - _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_22); - ctx->field->mul(_tmp_24,_tmp_23,_sigValue_22); - _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->getSignal(ctx->cIdx, _sigIdx_29, _sigValue_23); - _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_30, _sigValue_24); - ctx->field->mul(_tmp_25,_const_10,_sigValue_24); - ctx->field->add(_tmp_26,_sigValue_23,_tmp_25); - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_31, _sigValue_25); - ctx->field->sub(_tmp_27,_tmp_26,_sigValue_25); - ctx->checkConstraint(_tmp_24, _tmp_27, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:48:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_25, 1); - ctx->freeBigInts(_tmp_27, 1); -} - -/* -Num2Bits -n=253 -*/ -void Num2Bits_615abb7f710c8a84(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_1 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "1", 10); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_2; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _sigIdx_3; - Circom_Sizes _sigSizes_2; - int _offset_10; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_3; - int _offset_13; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "0", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - PBigInt lc1 = ctx->allocBigInts(1); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _sigIdx_5; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _v_12; - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - PBigInt _v_13; - int _offset_22; - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - PBigInt _v_14; - int _offset_24; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_6; - PBigInt _v_15; - int _offset_26; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "1", 10); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt _num_8 = ctx->allocBigInts(1); - PBigInt _v_16; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - PBigInt _v_17; - int _offset_29; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _v_18; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "2", 10); - PBigInt _tmp_14 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _tmp_17 = ctx->allocBigInts(1); - PBigInt _v_20; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "253", 10); - PBigInt _tmp_18 = ctx->allocBigInts(1); - PBigInt _v_22; - int _sigIdx_10; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - - - /* signal input in */ - - /* signal output out[n] */ - - /* var lc1=0 */ - - /* for (var i = 0,i> i) & 1 */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); - ctx->field->shr(_tmp_1,_sigValue,_const); - ctx->field->band(_tmp_2,_tmp_1,_const_1); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_6 = _sigIdx_1 + 0*_sigSizes[1]; - ctx->setSignal(ctx->cIdx, _offset_6, _tmp_2); - - /* out[i] * (out[i] -1 ) === 0 */ - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_8 = _sigIdx_2 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_1); - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_10 = _sigIdx_3 + 0*_sigSizes_2[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_2); - ctx->field->sub(_tmp_3,_sigValue_2,_const_2); - ctx->field->mul(_tmp_4,_sigValue_1,_tmp_3); - ctx->checkConstraint(_tmp_4, _num_4, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); - /* lc1 += out[i] * 2**i */ - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_13 = _sigIdx_4 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); - ctx->field->mul(_tmp_6,_sigValue_3,_const_3); - ctx->field->add(_tmp_7,_const_4,_tmp_6); - ctx->field->copyn(lc1, _tmp_7, 1); - mpz_set_str(_tmp_9[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_9); - while (_cond) { - - /* out[i] <-- (in >> i) & 1 */ - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); - _v_12 = i + 0; - ctx->field->shr(_tmp_10,_sigValue_4,_v_12); - ctx->field->band(_tmp_11,_tmp_10,_const_5); - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_13 = i + 0; - _offset_22 = _sigIdx_6 + ctx->field->toInt(_v_13)*_sigSizes_4[1]; - ctx->setSignal(ctx->cIdx, _offset_22, _tmp_11); - - /* out[i] * (out[i] -1 ) === 0 */ - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_14 = i + 0; - _offset_24 = _sigIdx_7 + ctx->field->toInt(_v_14)*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_15 = i + 0; - _offset_26 = _sigIdx_8 + ctx->field->toInt(_v_15)*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_6); - ctx->field->sub(_tmp_12,_sigValue_6,_const_6); - ctx->field->mul(_tmp_13,_sigValue_5,_tmp_12); - ctx->checkConstraint(_tmp_13, _num_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); - /* lc1 += out[i] * 2**i */ - _v_16 = lc1 + 0; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_17 = i + 0; - _offset_29 = _sigIdx_9 + ctx->field->toInt(_v_17)*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_7); - _v_18 = i + 0; - ctx->field->pow(_tmp_14,_const_7,_v_18); - ctx->field->mul(_tmp_15,_sigValue_7,_tmp_14); - ctx->field->add(_tmp_16,_v_16,_tmp_15); - ctx->field->copyn(lc1, _tmp_16, 1); - _v_19 = i + 0; - ctx->field->add(_tmp_17, _v_19, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_17, 1); - _v_20 = i + 0; - ctx->field->lt(_tmp_18,_v_20,_const_8); - _cond = ctx->field->isTrue(_tmp_18); - } - - /* lc1 === in */ - _v_22 = lc1 + 0; - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_8); - ctx->checkConstraint(_v_22, _sigValue_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:35:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(lc1, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_num_8, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_8, 1); -} - -// Components -Circom_Component _components[772] = { - {_htMain,_entryTableMain,Main_49e763aed00877a8, 1} - ,{_htPedersen,_entryTablePedersen,Pedersen_3a5f42b6d718ae32, 256} - ,{_htSegment,_entryTableSegment,Segment_a5b1c16b0dc672ca, 202} - ,{_htSegment,_entryTableSegment_1,Segment_a5bfbd6b0dd2a95a, 58} - ,{_htEdwards2Montgomery,_entryTableEdwards2Montgomery,Edwards2Montgomery_1322d6544b8b5e68, 2} - ,{_htWindow4,_entryTableWindow4,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_1,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_2,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_3,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_4,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_5,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_6,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_7,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_8,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_9,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_10,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_11,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_12,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_13,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_14,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_15,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_16,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_17,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_18,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_19,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_20,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_21,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_22,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_23,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_24,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_25,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_26,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_27,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_28,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_29,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_30,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_31,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_32,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_33,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_34,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_35,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_36,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_37,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_38,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_39,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_40,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_41,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_42,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_43,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_44,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_45,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_46,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_47,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_48,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_49,Window4_2d34837f67f5f72b, 6} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_1,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_2,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_3,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_4,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_5,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_6,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_7,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_8,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_9,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_10,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_11,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_12,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_13,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_14,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_15,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_16,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_17,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_18,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_19,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_20,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_21,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_22,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_23,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_24,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_25,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_26,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_27,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_28,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_29,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_30,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_31,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_32,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_33,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_34,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_35,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_36,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_37,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_38,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_39,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_40,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_41,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_42,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_43,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_44,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_45,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_46,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_47,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_48,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_49,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_50,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_51,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_52,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_53,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_54,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_55,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_56,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_57,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_58,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_59,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_60,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_61,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_62,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_63,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_64,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_65,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_66,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_67,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_68,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_69,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_70,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_71,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_72,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_73,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_74,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_75,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_76,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_77,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_78,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_79,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_80,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_81,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_82,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_83,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_84,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_85,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_86,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_87,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_88,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_89,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_90,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_91,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_92,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_93,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_94,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_95,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_96,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_97,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_1,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_2,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_3,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_4,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_5,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_6,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_7,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_8,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_9,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_10,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_11,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_12,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_13,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_14,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_15,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_16,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_17,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_18,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_19,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_20,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_21,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_22,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_23,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_24,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_25,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_26,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_27,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_28,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_29,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_30,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_31,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_32,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_33,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_34,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_35,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_36,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_37,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_38,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_39,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_40,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_41,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_42,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_43,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_44,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_45,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_46,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_47,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_48,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_98,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_49,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_50,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_51,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_52,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_53,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_54,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_1,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_99,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_55,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_56,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_57,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_58,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_59,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_60,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_2,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_100,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_61,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_62,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_63,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_64,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_65,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_66,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_3,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_101,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_67,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_68,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_69,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_70,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_71,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_72,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_4,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_102,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_73,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_74,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_75,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_76,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_77,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_78,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_5,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_103,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_79,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_80,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_81,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_82,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_83,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_84,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_6,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_104,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_85,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_86,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_87,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_88,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_89,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_90,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_7,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_105,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_91,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_92,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_93,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_94,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_95,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_96,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_8,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_106,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_97,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_98,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_99,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_100,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_101,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_102,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_9,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_107,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_103,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_104,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_105,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_106,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_107,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_108,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_10,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_108,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_109,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_110,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_111,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_112,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_113,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_114,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_11,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_109,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_115,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_116,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_117,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_118,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_119,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_120,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_12,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_110,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_121,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_122,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_123,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_124,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_125,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_126,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_13,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_111,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_127,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_128,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_129,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_130,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_131,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_132,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_14,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_112,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_133,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_134,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_135,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_136,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_137,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_138,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_15,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_113,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_139,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_140,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_141,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_142,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_143,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_144,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_16,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_114,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_145,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_146,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_147,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_148,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_149,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_150,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_17,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_115,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_151,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_152,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_153,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_154,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_155,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_156,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_18,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_116,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_157,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_158,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_159,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_160,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_161,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_162,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_19,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_117,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_163,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_164,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_165,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_166,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_167,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_168,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_20,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_118,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_169,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_170,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_171,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_172,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_173,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_174,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_21,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_119,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_175,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_176,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_177,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_178,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_179,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_180,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_22,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_120,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_181,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_182,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_183,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_184,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_185,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_186,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_23,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_121,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_187,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_188,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_189,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_190,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_191,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_192,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_24,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_122,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_193,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_194,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_195,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_196,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_197,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_198,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_25,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_123,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_199,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_200,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_201,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_202,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_203,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_204,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_26,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_124,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_205,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_206,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_207,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_208,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_209,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_210,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_27,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_125,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_211,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_212,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_213,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_214,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_215,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_216,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_28,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_126,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_217,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_218,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_219,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_220,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_221,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_222,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_29,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_127,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_223,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_224,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_225,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_226,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_227,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_228,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_30,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_128,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_229,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_230,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_231,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_232,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_233,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_234,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_31,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_129,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_235,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_236,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_237,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_238,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_239,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_240,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_32,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_130,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_241,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_242,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_243,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_244,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_245,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_246,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_33,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_131,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_247,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_248,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_249,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_250,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_251,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_252,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_34,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_132,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_253,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_254,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_255,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_256,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_257,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_258,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_35,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_133,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_259,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_260,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_261,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_262,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_263,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_264,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_36,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_134,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_265,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_266,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_267,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_268,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_269,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_270,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_37,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_135,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_271,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_272,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_273,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_274,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_275,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_276,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_38,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_136,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_277,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_278,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_279,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_280,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_281,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_282,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_39,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_137,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_283,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_284,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_285,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_286,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_287,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_288,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_40,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_138,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_289,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_290,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_291,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_292,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_293,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_294,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_41,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_139,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_295,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_296,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_297,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_298,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_299,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_300,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_42,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_140,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_301,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_302,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_303,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_304,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_305,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_306,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_43,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_141,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_307,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_308,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_309,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_310,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_311,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_312,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_44,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_142,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_313,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_314,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_315,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_316,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_317,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_318,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_45,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_143,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_319,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_320,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_321,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_322,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_323,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_324,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_46,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_144,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_325,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_326,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_327,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_328,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_329,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_330,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_47,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_145,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_331,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_332,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_333,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_334,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_335,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_336,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_48,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_146,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_337,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_338,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_339,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_340,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_341,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_342,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_49,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_147,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_343,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_344,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_345,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_346,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_347,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_348,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htEdwards2Montgomery,_entryTableMontgomery2Edwards,Montgomery2Edwards_f4648cd1308b7594, 2} - ,{_htEdwards2Montgomery,_entryTableEdwards2Montgomery_1,Edwards2Montgomery_1322d6544b8b5e68, 2} - ,{_htWindow4,_entryTableWindow4_50,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_51,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_52,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_53,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_54,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_55,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_56,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_57,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_58,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_59,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_60,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_61,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_62,Window4_2d34837f67f5f72b, 6} - ,{_htWindow4,_entryTableWindow4_63,Window4_2d34837f67f5f72b, 6} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_148,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_149,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_150,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_151,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_152,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_153,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_154,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_155,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_156,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_157,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_158,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_159,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_160,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_161,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_162,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_163,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_164,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_165,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_166,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_167,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_168,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_169,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_170,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_171,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_172,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_173,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_349,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_350,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_351,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_352,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_353,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_354,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_355,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_356,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_357,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_358,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_359,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_360,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_361,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_50,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_174,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_362,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_363,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_364,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_365,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_366,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_367,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_51,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_175,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_368,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_369,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_370,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_371,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_372,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_373,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_52,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_176,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_374,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_375,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_376,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_377,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_378,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_379,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_53,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_177,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_380,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_381,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_382,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_383,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_384,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_385,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_54,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_178,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_386,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_387,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_388,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_389,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_390,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_391,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_55,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_179,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_392,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_393,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_394,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_395,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_396,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_397,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_56,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_180,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_398,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_399,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_400,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_401,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_402,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_403,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_57,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_181,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_404,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_405,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_406,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_407,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_408,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_409,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_58,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_182,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_410,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_411,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_412,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_413,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_414,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_415,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_59,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_183,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_416,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_417,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_418,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_419,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_420,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_421,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_60,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_184,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_422,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_423,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_424,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_425,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_426,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_427,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_61,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_185,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_428,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_429,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_430,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_431,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_432,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_433,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_62,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_186,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_434,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_435,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_436,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_437,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_438,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_439,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMultiMux3,_entryTableMultiMux3_63,MultiMux3_af32615da3b0d5ce, 19} - ,{_htMontgomeryDouble,_entryTableMontgomeryDouble_187,MontgomeryDouble_90f61203260940df, 2} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_440,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_441,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_442,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_443,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_444,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htMontgomeryAdd,_entryTableMontgomeryAdd_445,MontgomeryAdd_6479fdda8bf6c089, 4} - ,{_htEdwards2Montgomery,_entryTableMontgomery2Edwards_1,Montgomery2Edwards_f4648cd1308b7594, 2} - ,{_htBabyAdd,_entryTableBabyAdd,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htEdwards2Montgomery,_entryTableNum2Bits,Num2Bits_615abb7f710c8a84, 1} -}; - - -// mapIsArray -u32 _mapIsInput[254] = { - 0xFFFFFFF2,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFCF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x0FCCFFFF,0x0007FFFF,0x3C78F0C0,0x0FC78F1E,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0xC3F1E186,0x0001FFFF,0x8F1E3C30,0x0C31E3C7,0xFFFE1F8F,0xE180000F,0x1E3C78F1,0xFC78618F,0x007FFFF0,0xC78F0C00,0x0C78F1E3 -,0xFF87E3C3,0x600003FF,0x8F1E3C78,0x1E1863C7,0x1FFFFC3F,0xE3C30000,0x1E3C78F1,0xE1F8F0C3,0x0000FFFF,0xC78F1E18,0x8618F1E3,0xFFFF0FC7,0xF0C00007,0x8F1E3C78,0x7E3C30C7,0x003FFFF8,0xE3C78600,0x863C78F1,0xFFC3F1E1,0x300001FF,0xC78F1E3C,0x8F0C31E3,0x0FFFFE1F,0xF1E18000,0x8F1E3C78,0xF0FC7861,0x00007FFF,0xE3C78F0C,0xC30C78F1,0xFFFF87E3,0x78600003,0xC78F1E3C,0x3F1E1863,0x001FFFFC,0xF1E3C300,0xC31E3C78,0xFFE1F8F0,0x180000FF,0xE3C78F1E,0xC78618F1,0x07FFFF0F,0x78F0C000,0xC78F1E3C,0xF87E3C30,0x00003FFF,0xF1E3C786,0xE1863C78,0xFFFFC3F1,0x3C300001,0xE3C78F1E,0x1F8F0C31,0x000FFFFE,0x78F1E180,0x618F1E3C,0xFFF0FC78,0x0C00007F,0xF1E3C78F,0xE3C30C78,0x03FFFF87,0x3C786000,0x63C78F1E,0xFC3F1E18,0x00001FFF,0x78F1E3C3 -,0xF0C31E3C,0xFFFFE1F8,0x1E180000,0xF1E3C78F,0x0FC78618,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0xC3F1E186,0x0001FFFF,0x8F1E3C30,0x0C31E3C7,0xFFFE1F8F,0xE180000F,0x1E3C78F1,0xFC78618F,0x007FFFF0,0xC78F0C00,0x0C78F1E3,0xFF87E3C3,0x600003FF,0x8F1E3C78,0x1E1863C7,0x1FFFFC3F,0xE3C30000,0x1E3C78F1,0xE1F8F0C3,0x0000FFFF,0xC78F1E18,0x8618F1E3,0xFFFF0FC7,0xF0C00007 -,0x8F1E3C78,0xE63C30C7,0xFFFFFFFF,0xE67FFFFF,0x03FFFF87,0x3C786000,0xE3C78F1E,0x03FFFF87,0x3C786000,0x63C78F1E,0xFC3F1E18,0x00001FFF,0x78F1E3C3,0xF0C31E3C,0xFFFFE1F8,0x1E180000,0xF1E3C78F,0x0FC78618,0x0007FFFF,0x3C78F0C0,0x30C78F1E,0xFFF87E3C,0x8600003F,0x78F1E3C7,0xF1E1863C,0x01FFFFC3,0x1E3C3000,0x31E3C78F,0xFE1F8F0C,0x80000FFF,0x3C78F1E1,0x78618F1E,0x7FFFF0FC,0x8F0C0000,0x78F1E3C7,0x87E3C30C,0x0003FFFF,0x1E3C7860,0x1863C78F,0xFFFC3F1E,0xC300001F,0x3C78F1E3,0xF8F0C31E,0x00FFFFE1,0x8F1E1800,0x18F1E3C7,0xFF0FC786,0xC00007FF,0x1E3C78F0,0x3C30C78F,0x3FFFF87E,0xC7860000,0x3C78F1E3,0x0F31E186,0x00000004,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 -}; - -// Signal Table -int _wit2sig[3382] = { - 0,7868,7869,1,7876,7877,7878,7879,7880,7881,7882,7883,7884,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7899,7900,7901,7902,7903,7904,7905,7906,7907,7908,7909,7910,7911,7912,7913,7914,7915,7916,7917,7918,7919,7920,7921,7922,7923,7924,7925,7926,7927,7928,7929,7930,7931,7932,7933,7934,7935,7936 -,7937,7938,7939,7940,7941,7942,7943,7944,7945,7946,7947,7948,7949,7950,7951,7952,7953,7954,7955,7956,7957,7958,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974,7975,7976,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7991,7992,7993,7994,7995,7996,7997,7998,7999,8000 -,8001,8002,8003,8004,8005,8006,8007,8008,8009,8010,8011,8012,8013,8014,8015,8016,8017,8018,8019,8020,8021,8022,8023,8024,8025,8026,8027,8028,8029,8030,8031,8032,8033,8034,8035,8036,8037,8038,8039,8040,8041,8042,8043,8044,8045,8046,8047,8048,8049,8050,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064 -,8065,8066,8067,8068,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8083,8084,8085,8086,8087,8088,8089,8090,8091,8092,8093,8094,8095,8096,8097,8098,8099,8100,8101,8102,8103,8104,8105,8106,8107,8108,8109,8110,8111,8112,8113,8114,8115,8116,8117,8118,8119,8120,8121,8122,8123,8124,8125,8126,8127,6203 -,6204,499,477,563,564,520,528,535,542,549,556,521,529,536,543,550,557,500,501,502,503,504,505,506,507,508,509,510,511,512,513,514,517,522,523,530,537,544,551,558,565,670,671,595,573,659,660,616,624,631,638,645,652,617,625,632,639,646,653,596,597,598,599,600 -,601,602,605,606,607,608,609,610,613,618,619,626,633,640,647,654,661,664,665,666,667,672,673,678,679,680,785,786,710,688,774,775,731,739,746,753,760,767,732,740,747,754,761,768,711,712,713,714,715,716,717,720,721,722,723,724,725,728,733,734,741,748,755,762 -,769,776,779,780,781,782,787,788,793,794,795,900,901,825,803,889,890,846,854,861,868,875,882,847,855,862,869,876,883,826,827,828,829,830,831,832,835,836,837,838,839,840,843,848,849,856,863,870,877,884,891,894,895,896,897,902,903,908,909,910,1015,1016,940,918 -,1004,1005,961,969,976,983,990,997,962,970,977,984,991,998,941,942,943,944,945,946,947,950,951,952,953,954,955,958,963,964,971,978,985,992,999,1006,1009,1010,1011,1012,1017,1018,1023,1024,1025,1130,1131,1055,1033,1119,1120,1076,1084,1091,1098,1105,1112,1077,1085,1092,1099,1106,1113,1056 -,1057,1058,1059,1060,1061,1062,1065,1066,1067,1068,1069,1070,1073,1078,1079,1086,1093,1100,1107,1114,1121,1124,1125,1126,1127,1132,1133,1138,1139,1140,1245,1246,1170,1148,1234,1235,1191,1199,1206,1213,1220,1227,1192,1200,1207,1214,1221,1228,1171,1172,1173,1174,1175,1176,1177,1180,1181,1182,1183,1184,1185,1188,1193,1194 -,1201,1208,1215,1222,1229,1236,1239,1240,1241,1242,1247,1248,1253,1254,1255,1360,1361,1285,1263,1349,1350,1306,1314,1321,1328,1335,1342,1307,1315,1322,1329,1336,1343,1286,1287,1288,1289,1290,1291,1292,1295,1296,1297,1298,1299,1300,1303,1308,1309,1316,1323,1330,1337,1344,1351,1354,1355,1356,1357,1362,1363,1368,1369,1370 -,1475,1476,1400,1378,1464,1465,1421,1429,1436,1443,1450,1457,1422,1430,1437,1444,1451,1458,1401,1402,1403,1404,1405,1406,1407,1410,1411,1412,1413,1414,1415,1418,1423,1424,1431,1438,1445,1452,1459,1466,1469,1470,1471,1472,1477,1478,1483,1484,1485,1590,1591,1515,1493,1579,1580,1536,1544,1551,1558,1565,1572,1537,1545,1552 -,1559,1566,1573,1516,1517,1518,1519,1520,1521,1522,1525,1526,1527,1528,1529,1530,1533,1538,1539,1546,1553,1560,1567,1574,1581,1584,1585,1586,1587,1592,1593,1598,1599,1600,1705,1706,1630,1608,1694,1695,1651,1659,1666,1673,1680,1687,1652,1660,1667,1674,1681,1688,1631,1632,1633,1634,1635,1636,1637,1640,1641,1642,1643,1644 -,1645,1648,1653,1654,1661,1668,1675,1682,1689,1696,1699,1700,1701,1702,1707,1708,1713,1714,1715,1820,1821,1745,1723,1809,1810,1766,1774,1781,1788,1795,1802,1767,1775,1782,1789,1796,1803,1746,1747,1748,1749,1750,1751,1752,1755,1756,1757,1758,1759,1760,1763,1768,1769,1776,1783,1790,1797,1804,1811,1814,1815,1816,1817,1822 -,1823,1828,1829,1830,1935,1936,1860,1838,1924,1925,1881,1889,1896,1903,1910,1917,1882,1890,1897,1904,1911,1918,1861,1862,1863,1864,1865,1866,1867,1870,1871,1872,1873,1874,1875,1878,1883,1884,1891,1898,1905,1912,1919,1926,1929,1930,1931,1932,1937,1938,1943,1944,1945,2050,2051,1975,1953,2039,2040,1996,2004,2011,2018,2025 -,2032,1997,2005,2012,2019,2026,2033,1976,1977,1978,1979,1980,1981,1982,1985,1986,1987,1988,1989,1990,1993,1998,1999,2006,2013,2020,2027,2034,2041,2044,2045,2046,2047,2052,2053,2058,2059,2060,2165,2166,2090,2068,2154,2155,2111,2119,2126,2133,2140,2147,2112,2120,2127,2134,2141,2148,2091,2092,2093,2094,2095,2096,2097,2100 -,2101,2102,2103,2104,2105,2108,2113,2114,2121,2128,2135,2142,2149,2156,2159,2160,2161,2162,2167,2168,2173,2174,2175,2280,2281,2205,2183,2269,2270,2226,2234,2241,2248,2255,2262,2227,2235,2242,2249,2256,2263,2206,2207,2208,2209,2210,2211,2212,2215,2216,2217,2218,2219,2220,2223,2228,2229,2236,2243,2250,2257,2264,2271,2274 -,2275,2276,2277,2282,2283,2288,2289,2290,2395,2396,2320,2298,2384,2385,2341,2349,2356,2363,2370,2377,2342,2350,2357,2364,2371,2378,2321,2322,2323,2324,2325,2326,2327,2330,2331,2332,2333,2334,2335,2338,2343,2344,2351,2358,2365,2372,2379,2386,2389,2390,2391,2392,2397,2398,2403,2404,2405,2510,2511,2435,2413,2499,2500,2456 -,2464,2471,2478,2485,2492,2457,2465,2472,2479,2486,2493,2436,2437,2438,2439,2440,2441,2442,2445,2446,2447,2448,2449,2450,2453,2458,2459,2466,2473,2480,2487,2494,2501,2504,2505,2506,2507,2512,2513,2518,2519,2520,2625,2626,2550,2528,2614,2615,2571,2579,2586,2593,2600,2607,2572,2580,2587,2594,2601,2608,2551,2552,2553,2554 -,2555,2556,2557,2560,2561,2562,2563,2564,2565,2568,2573,2574,2581,2588,2595,2602,2609,2616,2619,2620,2621,2622,2627,2628,2633,2634,2635,2740,2741,2665,2643,2729,2730,2686,2694,2701,2708,2715,2722,2687,2695,2702,2709,2716,2723,2666,2667,2668,2669,2670,2671,2672,2675,2676,2677,2678,2679,2680,2683,2688,2689,2696,2703,2710 -,2717,2724,2731,2734,2735,2736,2737,2742,2743,2748,2749,2750,2855,2856,2780,2758,2844,2845,2801,2809,2816,2823,2830,2837,2802,2810,2817,2824,2831,2838,2781,2782,2783,2784,2785,2786,2787,2790,2791,2792,2793,2794,2795,2798,2803,2804,2811,2818,2825,2832,2839,2846,2849,2850,2851,2852,2857,2858,2863,2864,2865,2970,2971,2895 -,2873,2959,2960,2916,2924,2931,2938,2945,2952,2917,2925,2932,2939,2946,2953,2896,2897,2898,2899,2900,2901,2902,2905,2906,2907,2908,2909,2910,2913,2918,2919,2926,2933,2940,2947,2954,2961,2964,2965,2966,2967,2972,2973,2978,2979,2980,3085,3086,3010,2988,3074,3075,3031,3039,3046,3053,3060,3067,3032,3040,3047,3054,3061,3068 -,3011,3012,3013,3014,3015,3016,3017,3020,3021,3022,3023,3024,3025,3028,3033,3034,3041,3048,3055,3062,3069,3076,3079,3080,3081,3082,3087,3088,3093,3094,3095,3200,3201,3125,3103,3189,3190,3146,3154,3161,3168,3175,3182,3147,3155,3162,3169,3176,3183,3126,3127,3128,3129,3130,3131,3132,3135,3136,3137,3138,3139,3140,3143,3148 -,3149,3156,3163,3170,3177,3184,3191,3194,3195,3196,3197,3202,3203,3208,3209,3210,3315,3316,3240,3218,3304,3305,3261,3269,3276,3283,3290,3297,3262,3270,3277,3284,3291,3298,3241,3242,3243,3244,3245,3246,3247,3250,3251,3252,3253,3254,3255,3258,3263,3264,3271,3278,3285,3292,3299,3306,3309,3310,3311,3312,3317,3318,3323,3324 -,3325,3430,3431,3355,3333,3419,3420,3376,3384,3391,3398,3405,3412,3377,3385,3392,3399,3406,3413,3356,3357,3358,3359,3360,3361,3362,3365,3366,3367,3368,3369,3370,3373,3378,3379,3386,3393,3400,3407,3414,3421,3424,3425,3426,3427,3432,3433,3438,3439,3440,3545,3546,3470,3448,3534,3535,3491,3499,3506,3513,3520,3527,3492,3500 -,3507,3514,3521,3528,3471,3472,3473,3474,3475,3476,3477,3480,3481,3482,3483,3484,3485,3488,3493,3494,3501,3508,3515,3522,3529,3536,3539,3540,3541,3542,3547,3548,3553,3554,3555,3660,3661,3585,3563,3649,3650,3606,3614,3621,3628,3635,3642,3607,3615,3622,3629,3636,3643,3586,3587,3588,3589,3590,3591,3592,3595,3596,3597,3598 -,3599,3600,3603,3608,3609,3616,3623,3630,3637,3644,3651,3654,3655,3656,3657,3662,3663,3668,3669,3670,3775,3776,3700,3678,3764,3765,3721,3729,3736,3743,3750,3757,3722,3730,3737,3744,3751,3758,3701,3702,3703,3704,3705,3706,3707,3710,3711,3712,3713,3714,3715,3718,3723,3724,3731,3738,3745,3752,3759,3766,3769,3770,3771,3772 -,3777,3778,3783,3784,3785,3890,3891,3815,3793,3879,3880,3836,3844,3851,3858,3865,3872,3837,3845,3852,3859,3866,3873,3816,3817,3818,3819,3820,3821,3822,3825,3826,3827,3828,3829,3830,3833,3838,3839,3846,3853,3860,3867,3874,3881,3884,3885,3886,3887,3892,3893,3898,3899,3900,4005,4006,3930,3908,3994,3995,3951,3959,3966,3973 -,3980,3987,3952,3960,3967,3974,3981,3988,3931,3932,3933,3934,3935,3936,3937,3940,3941,3942,3943,3944,3945,3948,3953,3954,3961,3968,3975,3982,3989,3996,3999,4000,4001,4002,4007,4008,4013,4014,4015,4120,4121,4045,4023,4109,4110,4066,4074,4081,4088,4095,4102,4067,4075,4082,4089,4096,4103,4046,4047,4048,4049,4050,4051,4052 -,4055,4056,4057,4058,4059,4060,4063,4068,4069,4076,4083,4090,4097,4104,4111,4114,4115,4116,4117,4122,4123,4128,4129,4130,4235,4236,4160,4138,4224,4225,4181,4189,4196,4203,4210,4217,4182,4190,4197,4204,4211,4218,4161,4162,4163,4164,4165,4166,4167,4170,4171,4172,4173,4174,4175,4178,4183,4184,4191,4198,4205,4212,4219,4226 -,4229,4230,4231,4232,4237,4238,4243,4244,4245,4350,4351,4275,4253,4339,4340,4296,4304,4311,4318,4325,4332,4297,4305,4312,4319,4326,4333,4276,4277,4278,4279,4280,4281,4282,4285,4286,4287,4288,4289,4290,4293,4298,4299,4306,4313,4320,4327,4334,4341,4344,4345,4346,4347,4352,4353,4358,4359,4360,4465,4466,4390,4368,4454,4455 -,4411,4419,4426,4433,4440,4447,4412,4420,4427,4434,4441,4448,4391,4392,4393,4394,4395,4396,4397,4400,4401,4402,4403,4404,4405,4408,4413,4414,4421,4428,4435,4442,4449,4456,4459,4460,4461,4462,4467,4468,4473,4474,4475,4580,4581,4505,4483,4569,4570,4526,4534,4541,4548,4555,4562,4527,4535,4542,4549,4556,4563,4506,4507,4508 -,4509,4510,4511,4512,4515,4516,4517,4518,4519,4520,4523,4528,4529,4536,4543,4550,4557,4564,4571,4574,4575,4576,4577,4582,4583,4588,4589,4590,4695,4696,4620,4598,4684,4685,4641,4649,4656,4663,4670,4677,4642,4650,4657,4664,4671,4678,4621,4622,4623,4624,4625,4626,4627,4630,4631,4632,4633,4634,4635,4638,4643,4644,4651,4658 -,4665,4672,4679,4686,4689,4690,4691,4692,4697,4698,4703,4704,4705,4810,4811,4735,4713,4799,4800,4756,4764,4771,4778,4785,4792,4757,4765,4772,4779,4786,4793,4736,4737,4738,4739,4740,4741,4742,4745,4746,4747,4748,4749,4750,4753,4758,4759,4766,4773,4780,4787,4794,4801,4804,4805,4806,4807,4812,4813,4818,4819,4820,4925,4926 -,4850,4828,4914,4915,4871,4879,4886,4893,4900,4907,4872,4880,4887,4894,4901,4908,4851,4852,4853,4854,4855,4856,4857,4860,4861,4862,4863,4864,4865,4868,4873,4874,4881,4888,4895,4902,4909,4916,4919,4920,4921,4922,4927,4928,4933,4934,4935,5040,5041,4965,4943,5029,5030,4986,4994,5001,5008,5015,5022,4987,4995,5002,5009,5016 -,5023,4966,4967,4968,4969,4970,4971,4972,4975,4976,4977,4978,4979,4980,4983,4988,4989,4996,5003,5010,5017,5024,5031,5034,5035,5036,5037,5042,5043,5048,5049,5050,5155,5156,5080,5058,5144,5145,5101,5109,5116,5123,5130,5137,5102,5110,5117,5124,5131,5138,5081,5082,5083,5084,5085,5086,5087,5090,5091,5092,5093,5094,5095,5098 -,5103,5104,5111,5118,5125,5132,5139,5146,5149,5150,5151,5152,5157,5158,5163,5164,5165,5270,5271,5195,5173,5259,5260,5216,5224,5231,5238,5245,5252,5217,5225,5232,5239,5246,5253,5196,5197,5198,5199,5200,5201,5202,5205,5206,5207,5208,5209,5210,5213,5218,5219,5226,5233,5240,5247,5254,5261,5264,5265,5266,5267,5272,5273,5278 -,5279,5280,5385,5386,5310,5288,5374,5375,5331,5339,5346,5353,5360,5367,5332,5340,5347,5354,5361,5368,5311,5312,5313,5314,5315,5316,5317,5320,5321,5322,5323,5324,5325,5328,5333,5334,5341,5348,5355,5362,5369,5376,5379,5380,5381,5382,5387,5388,5393,5394,5395,5500,5501,5425,5403,5489,5490,5446,5454,5461,5468,5475,5482,5447 -,5455,5462,5469,5476,5483,5426,5427,5428,5429,5430,5431,5432,5435,5436,5437,5438,5439,5440,5443,5448,5449,5456,5463,5470,5477,5484,5491,5494,5495,5496,5497,5502,5503,5508,5509,5510,5615,5616,5540,5518,5604,5605,5561,5569,5576,5583,5590,5597,5562,5570,5577,5584,5591,5598,5541,5542,5543,5544,5545,5546,5547,5550,5551,5552 -,5553,5554,5555,5558,5563,5564,5571,5578,5585,5592,5599,5606,5609,5610,5611,5612,5617,5618,5623,5624,5625,5730,5731,5655,5633,5719,5720,5676,5684,5691,5698,5705,5712,5677,5685,5692,5699,5706,5713,5656,5657,5658,5659,5660,5661,5662,5665,5666,5667,5668,5669,5670,5673,5678,5679,5686,5693,5700,5707,5714,5721,5724,5725,5726 -,5727,5732,5733,5738,5739,5740,5845,5846,5770,5748,5834,5835,5791,5799,5806,5813,5820,5827,5792,5800,5807,5814,5821,5828,5771,5772,5773,5774,5775,5776,5777,5780,5781,5782,5783,5784,5785,5788,5793,5794,5801,5808,5815,5822,5829,5836,5839,5840,5841,5842,5847,5848,5853,5854,5855,5960,5961,5885,5863,5949,5950,5906,5914,5921 -,5928,5935,5942,5907,5915,5922,5929,5936,5943,5886,5887,5888,5889,5890,5891,5892,5895,5896,5897,5898,5899,5900,5903,5908,5909,5916,5923,5930,5937,5944,5951,5954,5955,5956,5957,5962,5963,5968,5969,5970,6075,6076,6000,5978,6064,6065,6021,6029,6036,6043,6050,6057,6022,6030,6037,6044,6051,6058,6001,6002,6003,6004,6005,6006 -,6007,6010,6011,6012,6013,6014,6015,6018,6023,6024,6031,6038,6045,6052,6059,6066,6069,6070,6071,6072,6077,6078,6083,6084,6085,6190,6191,6115,6093,6179,6180,6136,6144,6151,6158,6165,6172,6137,6145,6152,6159,6166,6173,6116,6117,6118,6119,6120,6121,6122,6125,6126,6127,6128,6129,6130,6133,6138,6139,6146,6153,6160,6167,6174 -,6181,6184,6185,6186,6187,6192,6193,6198,6199,6200,7862,7863,6298,6276,6362,6363,6319,6327,6334,6341,6348,6355,6320,6328,6335,6342,6349,6356,6299,6300,6301,6302,6303,6304,6305,6306,6307,6308,6309,6310,6311,6312,6313,6316,6321,6322,6329,6336,6343,6350,6357,6364,6469,6470,6394,6372,6458,6459,6415,6423,6430,6437,6444,6451 -,6416,6424,6431,6438,6445,6452,6395,6396,6397,6398,6399,6400,6401,6404,6405,6406,6407,6408,6409,6412,6417,6418,6425,6432,6439,6446,6453,6460,6463,6464,6465,6466,6471,6472,6477,6478,6479,6584,6585,6509,6487,6573,6574,6530,6538,6545,6552,6559,6566,6531,6539,6546,6553,6560,6567,6510,6511,6512,6513,6514,6515,6516,6519,6520 -,6521,6522,6523,6524,6527,6532,6533,6540,6547,6554,6561,6568,6575,6578,6579,6580,6581,6586,6587,6592,6593,6594,6699,6700,6624,6602,6688,6689,6645,6653,6660,6667,6674,6681,6646,6654,6661,6668,6675,6682,6625,6626,6627,6628,6629,6630,6631,6634,6635,6636,6637,6638,6639,6642,6647,6648,6655,6662,6669,6676,6683,6690,6693,6694 -,6695,6696,6701,6702,6707,6708,6709,6814,6815,6739,6717,6803,6804,6760,6768,6775,6782,6789,6796,6761,6769,6776,6783,6790,6797,6740,6741,6742,6743,6744,6745,6746,6749,6750,6751,6752,6753,6754,6757,6762,6763,6770,6777,6784,6791,6798,6805,6808,6809,6810,6811,6816,6817,6822,6823,6824,6929,6930,6854,6832,6918,6919,6875,6883 -,6890,6897,6904,6911,6876,6884,6891,6898,6905,6912,6855,6856,6857,6858,6859,6860,6861,6864,6865,6866,6867,6868,6869,6872,6877,6878,6885,6892,6899,6906,6913,6920,6923,6924,6925,6926,6931,6932,6937,6938,6939,7044,7045,6969,6947,7033,7034,6990,6998,7005,7012,7019,7026,6991,6999,7006,7013,7020,7027,6970,6971,6972,6973,6974 -,6975,6976,6979,6980,6981,6982,6983,6984,6987,6992,6993,7000,7007,7014,7021,7028,7035,7038,7039,7040,7041,7046,7047,7052,7053,7054,7159,7160,7084,7062,7148,7149,7105,7113,7120,7127,7134,7141,7106,7114,7121,7128,7135,7142,7085,7086,7087,7088,7089,7090,7091,7094,7095,7096,7097,7098,7099,7102,7107,7108,7115,7122,7129,7136 -,7143,7150,7153,7154,7155,7156,7161,7162,7167,7168,7169,7274,7275,7199,7177,7263,7264,7220,7228,7235,7242,7249,7256,7221,7229,7236,7243,7250,7257,7200,7201,7202,7203,7204,7205,7206,7209,7210,7211,7212,7213,7214,7217,7222,7223,7230,7237,7244,7251,7258,7265,7268,7269,7270,7271,7276,7277,7282,7283,7284,7389,7390,7314,7292 -,7378,7379,7335,7343,7350,7357,7364,7371,7336,7344,7351,7358,7365,7372,7315,7316,7317,7318,7319,7320,7321,7324,7325,7326,7327,7328,7329,7332,7337,7338,7345,7352,7359,7366,7373,7380,7383,7384,7385,7386,7391,7392,7397,7398,7399,7504,7505,7429,7407,7493,7494,7450,7458,7465,7472,7479,7486,7451,7459,7466,7473,7480,7487,7430 -,7431,7432,7433,7434,7435,7436,7439,7440,7441,7442,7443,7444,7447,7452,7453,7460,7467,7474,7481,7488,7495,7498,7499,7500,7501,7506,7507,7512,7513,7514,7619,7620,7544,7522,7608,7609,7565,7573,7580,7587,7594,7601,7566,7574,7581,7588,7595,7602,7545,7546,7547,7548,7549,7550,7551,7554,7555,7556,7557,7558,7559,7562,7567,7568 -,7575,7582,7589,7596,7603,7610,7613,7614,7615,7616,7621,7622,7627,7628,7629,7734,7735,7659,7637,7723,7724,7680,7688,7695,7702,7709,7716,7681,7689,7696,7703,7710,7717,7660,7661,7662,7663,7664,7665,7666,7669,7670,7671,7672,7673,7674,7677,7682,7683,7690,7697,7704,7711,7718,7725,7728,7729,7730,7731,7736,7737,7742,7743,7744 -,7849,7850,7774,7752,7838,7839,7795,7803,7810,7817,7824,7831,7796,7804,7811,7818,7825,7832,7775,7776,7777,7778,7779,7780,7781,7784,7785,7786,7787,7788,7789,7792,7797,7798,7805,7812,7819,7826,7833,7840,7843,7844,7845,7846,7851,7852,7857,7858,7859,7870,7871,7872,7873 -}; - -Circom_Circuit _circuit = { - NSignals, - NComponents, - NInputs, - NOutputs, - NVars, - _wit2sig, - _components, - _mapIsInput, - __P__ -}; diff --git a/test/circuits/pedersen2_test.sym b/test/circuits/pedersen2_test.sym deleted file mode 100644 index 933e8de..0000000 --- a/test/circuits/pedersen2_test.sym +++ /dev/null @@ -1,8127 +0,0 @@ -1,3,main.in -2,1,main.out[0] -3,2,main.out[1] -4,3382,main.pedersen.in[0] -5,4,main.pedersen.in[1] -6,5,main.pedersen.in[2] -7,6,main.pedersen.in[3] -8,7,main.pedersen.in[4] -9,8,main.pedersen.in[5] -10,9,main.pedersen.in[6] -11,10,main.pedersen.in[7] -12,11,main.pedersen.in[8] -13,12,main.pedersen.in[9] -14,13,main.pedersen.in[10] -15,14,main.pedersen.in[11] -16,15,main.pedersen.in[12] -17,16,main.pedersen.in[13] -18,17,main.pedersen.in[14] -19,18,main.pedersen.in[15] -20,19,main.pedersen.in[16] -21,20,main.pedersen.in[17] -22,21,main.pedersen.in[18] -23,22,main.pedersen.in[19] -24,23,main.pedersen.in[20] -25,24,main.pedersen.in[21] -26,25,main.pedersen.in[22] -27,26,main.pedersen.in[23] -28,27,main.pedersen.in[24] -29,28,main.pedersen.in[25] -30,29,main.pedersen.in[26] -31,30,main.pedersen.in[27] -32,31,main.pedersen.in[28] -33,32,main.pedersen.in[29] -34,33,main.pedersen.in[30] -35,34,main.pedersen.in[31] -36,35,main.pedersen.in[32] -37,36,main.pedersen.in[33] -38,37,main.pedersen.in[34] -39,38,main.pedersen.in[35] -40,39,main.pedersen.in[36] -41,40,main.pedersen.in[37] -42,41,main.pedersen.in[38] -43,42,main.pedersen.in[39] -44,43,main.pedersen.in[40] -45,44,main.pedersen.in[41] -46,45,main.pedersen.in[42] -47,46,main.pedersen.in[43] -48,47,main.pedersen.in[44] -49,48,main.pedersen.in[45] -50,49,main.pedersen.in[46] -51,50,main.pedersen.in[47] -52,51,main.pedersen.in[48] -53,52,main.pedersen.in[49] -54,53,main.pedersen.in[50] -55,54,main.pedersen.in[51] -56,55,main.pedersen.in[52] -57,56,main.pedersen.in[53] -58,57,main.pedersen.in[54] -59,58,main.pedersen.in[55] -60,59,main.pedersen.in[56] -61,60,main.pedersen.in[57] -62,61,main.pedersen.in[58] -63,62,main.pedersen.in[59] -64,63,main.pedersen.in[60] -65,64,main.pedersen.in[61] -66,65,main.pedersen.in[62] -67,66,main.pedersen.in[63] -68,67,main.pedersen.in[64] -69,68,main.pedersen.in[65] -70,69,main.pedersen.in[66] -71,70,main.pedersen.in[67] -72,71,main.pedersen.in[68] -73,72,main.pedersen.in[69] -74,73,main.pedersen.in[70] -75,74,main.pedersen.in[71] -76,75,main.pedersen.in[72] -77,76,main.pedersen.in[73] -78,77,main.pedersen.in[74] -79,78,main.pedersen.in[75] -80,79,main.pedersen.in[76] -81,80,main.pedersen.in[77] -82,81,main.pedersen.in[78] -83,82,main.pedersen.in[79] -84,83,main.pedersen.in[80] -85,84,main.pedersen.in[81] -86,85,main.pedersen.in[82] -87,86,main.pedersen.in[83] -88,87,main.pedersen.in[84] -89,88,main.pedersen.in[85] -90,89,main.pedersen.in[86] -91,90,main.pedersen.in[87] -92,91,main.pedersen.in[88] -93,92,main.pedersen.in[89] -94,93,main.pedersen.in[90] -95,94,main.pedersen.in[91] -96,95,main.pedersen.in[92] -97,96,main.pedersen.in[93] -98,97,main.pedersen.in[94] -99,98,main.pedersen.in[95] -100,99,main.pedersen.in[96] -101,100,main.pedersen.in[97] -102,101,main.pedersen.in[98] -103,102,main.pedersen.in[99] -104,103,main.pedersen.in[100] -105,104,main.pedersen.in[101] -106,105,main.pedersen.in[102] -107,106,main.pedersen.in[103] -108,107,main.pedersen.in[104] -109,108,main.pedersen.in[105] -110,109,main.pedersen.in[106] -111,110,main.pedersen.in[107] -112,111,main.pedersen.in[108] -113,112,main.pedersen.in[109] -114,113,main.pedersen.in[110] -115,114,main.pedersen.in[111] -116,115,main.pedersen.in[112] -117,116,main.pedersen.in[113] -118,117,main.pedersen.in[114] -119,118,main.pedersen.in[115] -120,119,main.pedersen.in[116] -121,120,main.pedersen.in[117] -122,121,main.pedersen.in[118] -123,122,main.pedersen.in[119] -124,123,main.pedersen.in[120] -125,124,main.pedersen.in[121] -126,125,main.pedersen.in[122] -127,126,main.pedersen.in[123] -128,127,main.pedersen.in[124] -129,128,main.pedersen.in[125] -130,129,main.pedersen.in[126] -131,130,main.pedersen.in[127] -132,131,main.pedersen.in[128] -133,132,main.pedersen.in[129] -134,133,main.pedersen.in[130] -135,134,main.pedersen.in[131] -136,135,main.pedersen.in[132] -137,136,main.pedersen.in[133] -138,137,main.pedersen.in[134] -139,138,main.pedersen.in[135] -140,139,main.pedersen.in[136] -141,140,main.pedersen.in[137] -142,141,main.pedersen.in[138] -143,142,main.pedersen.in[139] -144,143,main.pedersen.in[140] -145,144,main.pedersen.in[141] -146,145,main.pedersen.in[142] -147,146,main.pedersen.in[143] -148,147,main.pedersen.in[144] -149,148,main.pedersen.in[145] -150,149,main.pedersen.in[146] -151,150,main.pedersen.in[147] -152,151,main.pedersen.in[148] -153,152,main.pedersen.in[149] -154,153,main.pedersen.in[150] -155,154,main.pedersen.in[151] -156,155,main.pedersen.in[152] -157,156,main.pedersen.in[153] -158,157,main.pedersen.in[154] -159,158,main.pedersen.in[155] -160,159,main.pedersen.in[156] -161,160,main.pedersen.in[157] -162,161,main.pedersen.in[158] -163,162,main.pedersen.in[159] -164,163,main.pedersen.in[160] -165,164,main.pedersen.in[161] -166,165,main.pedersen.in[162] -167,166,main.pedersen.in[163] -168,167,main.pedersen.in[164] -169,168,main.pedersen.in[165] -170,169,main.pedersen.in[166] -171,170,main.pedersen.in[167] -172,171,main.pedersen.in[168] -173,172,main.pedersen.in[169] -174,173,main.pedersen.in[170] -175,174,main.pedersen.in[171] -176,175,main.pedersen.in[172] -177,176,main.pedersen.in[173] -178,177,main.pedersen.in[174] -179,178,main.pedersen.in[175] -180,179,main.pedersen.in[176] -181,180,main.pedersen.in[177] -182,181,main.pedersen.in[178] -183,182,main.pedersen.in[179] -184,183,main.pedersen.in[180] -185,184,main.pedersen.in[181] -186,185,main.pedersen.in[182] -187,186,main.pedersen.in[183] -188,187,main.pedersen.in[184] -189,188,main.pedersen.in[185] -190,189,main.pedersen.in[186] -191,190,main.pedersen.in[187] -192,191,main.pedersen.in[188] -193,192,main.pedersen.in[189] -194,193,main.pedersen.in[190] -195,194,main.pedersen.in[191] -196,195,main.pedersen.in[192] -197,196,main.pedersen.in[193] -198,197,main.pedersen.in[194] -199,198,main.pedersen.in[195] -200,199,main.pedersen.in[196] -201,200,main.pedersen.in[197] -202,201,main.pedersen.in[198] -203,202,main.pedersen.in[199] -204,203,main.pedersen.in[200] -205,204,main.pedersen.in[201] -206,205,main.pedersen.in[202] -207,206,main.pedersen.in[203] -208,207,main.pedersen.in[204] -209,208,main.pedersen.in[205] -210,209,main.pedersen.in[206] -211,210,main.pedersen.in[207] -212,211,main.pedersen.in[208] -213,212,main.pedersen.in[209] -214,213,main.pedersen.in[210] -215,214,main.pedersen.in[211] -216,215,main.pedersen.in[212] -217,216,main.pedersen.in[213] -218,217,main.pedersen.in[214] -219,218,main.pedersen.in[215] -220,219,main.pedersen.in[216] -221,220,main.pedersen.in[217] -222,221,main.pedersen.in[218] -223,222,main.pedersen.in[219] -224,223,main.pedersen.in[220] -225,224,main.pedersen.in[221] -226,225,main.pedersen.in[222] -227,226,main.pedersen.in[223] -228,227,main.pedersen.in[224] -229,228,main.pedersen.in[225] -230,229,main.pedersen.in[226] -231,230,main.pedersen.in[227] -232,231,main.pedersen.in[228] -233,232,main.pedersen.in[229] -234,233,main.pedersen.in[230] -235,234,main.pedersen.in[231] -236,235,main.pedersen.in[232] -237,236,main.pedersen.in[233] -238,237,main.pedersen.in[234] -239,238,main.pedersen.in[235] -240,239,main.pedersen.in[236] -241,240,main.pedersen.in[237] -242,241,main.pedersen.in[238] -243,242,main.pedersen.in[239] -244,243,main.pedersen.in[240] -245,244,main.pedersen.in[241] -246,245,main.pedersen.in[242] -247,246,main.pedersen.in[243] -248,247,main.pedersen.in[244] -249,248,main.pedersen.in[245] -250,249,main.pedersen.in[246] -251,250,main.pedersen.in[247] -252,251,main.pedersen.in[248] -253,252,main.pedersen.in[249] -254,253,main.pedersen.in[250] -255,254,main.pedersen.in[251] -256,255,main.pedersen.in[252] -257,3511,main.pedersen.in[253] -258,3512,main.pedersen.in[254] -259,3513,main.pedersen.in[255] -260,1,main.pedersen.out[0] -261,2,main.pedersen.out[1] -262,3382,main.pedersen.segments[0].in[0] -263,4,main.pedersen.segments[0].in[1] -264,5,main.pedersen.segments[0].in[2] -265,6,main.pedersen.segments[0].in[3] -266,7,main.pedersen.segments[0].in[4] -267,8,main.pedersen.segments[0].in[5] -268,9,main.pedersen.segments[0].in[6] -269,10,main.pedersen.segments[0].in[7] -270,11,main.pedersen.segments[0].in[8] -271,12,main.pedersen.segments[0].in[9] -272,13,main.pedersen.segments[0].in[10] -273,14,main.pedersen.segments[0].in[11] -274,15,main.pedersen.segments[0].in[12] -275,16,main.pedersen.segments[0].in[13] -276,17,main.pedersen.segments[0].in[14] -277,18,main.pedersen.segments[0].in[15] -278,19,main.pedersen.segments[0].in[16] -279,20,main.pedersen.segments[0].in[17] -280,21,main.pedersen.segments[0].in[18] -281,22,main.pedersen.segments[0].in[19] -282,23,main.pedersen.segments[0].in[20] -283,24,main.pedersen.segments[0].in[21] -284,25,main.pedersen.segments[0].in[22] -285,26,main.pedersen.segments[0].in[23] -286,27,main.pedersen.segments[0].in[24] -287,28,main.pedersen.segments[0].in[25] -288,29,main.pedersen.segments[0].in[26] -289,30,main.pedersen.segments[0].in[27] -290,31,main.pedersen.segments[0].in[28] -291,32,main.pedersen.segments[0].in[29] -292,33,main.pedersen.segments[0].in[30] -293,34,main.pedersen.segments[0].in[31] -294,35,main.pedersen.segments[0].in[32] -295,36,main.pedersen.segments[0].in[33] -296,37,main.pedersen.segments[0].in[34] -297,38,main.pedersen.segments[0].in[35] -298,39,main.pedersen.segments[0].in[36] -299,40,main.pedersen.segments[0].in[37] -300,41,main.pedersen.segments[0].in[38] -301,42,main.pedersen.segments[0].in[39] -302,43,main.pedersen.segments[0].in[40] -303,44,main.pedersen.segments[0].in[41] -304,45,main.pedersen.segments[0].in[42] -305,46,main.pedersen.segments[0].in[43] -306,47,main.pedersen.segments[0].in[44] -307,48,main.pedersen.segments[0].in[45] -308,49,main.pedersen.segments[0].in[46] -309,50,main.pedersen.segments[0].in[47] -310,51,main.pedersen.segments[0].in[48] -311,52,main.pedersen.segments[0].in[49] -312,53,main.pedersen.segments[0].in[50] -313,54,main.pedersen.segments[0].in[51] -314,55,main.pedersen.segments[0].in[52] -315,56,main.pedersen.segments[0].in[53] -316,57,main.pedersen.segments[0].in[54] -317,58,main.pedersen.segments[0].in[55] -318,59,main.pedersen.segments[0].in[56] -319,60,main.pedersen.segments[0].in[57] -320,61,main.pedersen.segments[0].in[58] -321,62,main.pedersen.segments[0].in[59] -322,63,main.pedersen.segments[0].in[60] -323,64,main.pedersen.segments[0].in[61] -324,65,main.pedersen.segments[0].in[62] -325,66,main.pedersen.segments[0].in[63] -326,67,main.pedersen.segments[0].in[64] -327,68,main.pedersen.segments[0].in[65] -328,69,main.pedersen.segments[0].in[66] -329,70,main.pedersen.segments[0].in[67] -330,71,main.pedersen.segments[0].in[68] -331,72,main.pedersen.segments[0].in[69] -332,73,main.pedersen.segments[0].in[70] -333,74,main.pedersen.segments[0].in[71] -334,75,main.pedersen.segments[0].in[72] -335,76,main.pedersen.segments[0].in[73] -336,77,main.pedersen.segments[0].in[74] -337,78,main.pedersen.segments[0].in[75] -338,79,main.pedersen.segments[0].in[76] -339,80,main.pedersen.segments[0].in[77] -340,81,main.pedersen.segments[0].in[78] -341,82,main.pedersen.segments[0].in[79] -342,83,main.pedersen.segments[0].in[80] -343,84,main.pedersen.segments[0].in[81] -344,85,main.pedersen.segments[0].in[82] -345,86,main.pedersen.segments[0].in[83] -346,87,main.pedersen.segments[0].in[84] -347,88,main.pedersen.segments[0].in[85] -348,89,main.pedersen.segments[0].in[86] -349,90,main.pedersen.segments[0].in[87] -350,91,main.pedersen.segments[0].in[88] -351,92,main.pedersen.segments[0].in[89] -352,93,main.pedersen.segments[0].in[90] -353,94,main.pedersen.segments[0].in[91] -354,95,main.pedersen.segments[0].in[92] -355,96,main.pedersen.segments[0].in[93] -356,97,main.pedersen.segments[0].in[94] -357,98,main.pedersen.segments[0].in[95] -358,99,main.pedersen.segments[0].in[96] -359,100,main.pedersen.segments[0].in[97] -360,101,main.pedersen.segments[0].in[98] -361,102,main.pedersen.segments[0].in[99] -362,103,main.pedersen.segments[0].in[100] -363,104,main.pedersen.segments[0].in[101] -364,105,main.pedersen.segments[0].in[102] -365,106,main.pedersen.segments[0].in[103] -366,107,main.pedersen.segments[0].in[104] -367,108,main.pedersen.segments[0].in[105] -368,109,main.pedersen.segments[0].in[106] -369,110,main.pedersen.segments[0].in[107] -370,111,main.pedersen.segments[0].in[108] -371,112,main.pedersen.segments[0].in[109] -372,113,main.pedersen.segments[0].in[110] -373,114,main.pedersen.segments[0].in[111] -374,115,main.pedersen.segments[0].in[112] -375,116,main.pedersen.segments[0].in[113] -376,117,main.pedersen.segments[0].in[114] -377,118,main.pedersen.segments[0].in[115] -378,119,main.pedersen.segments[0].in[116] -379,120,main.pedersen.segments[0].in[117] -380,121,main.pedersen.segments[0].in[118] -381,122,main.pedersen.segments[0].in[119] -382,123,main.pedersen.segments[0].in[120] -383,124,main.pedersen.segments[0].in[121] -384,125,main.pedersen.segments[0].in[122] -385,126,main.pedersen.segments[0].in[123] -386,127,main.pedersen.segments[0].in[124] -387,128,main.pedersen.segments[0].in[125] -388,129,main.pedersen.segments[0].in[126] -389,130,main.pedersen.segments[0].in[127] -390,131,main.pedersen.segments[0].in[128] -391,132,main.pedersen.segments[0].in[129] -392,133,main.pedersen.segments[0].in[130] -393,134,main.pedersen.segments[0].in[131] -394,135,main.pedersen.segments[0].in[132] -395,136,main.pedersen.segments[0].in[133] -396,137,main.pedersen.segments[0].in[134] -397,138,main.pedersen.segments[0].in[135] -398,139,main.pedersen.segments[0].in[136] -399,140,main.pedersen.segments[0].in[137] -400,141,main.pedersen.segments[0].in[138] -401,142,main.pedersen.segments[0].in[139] -402,143,main.pedersen.segments[0].in[140] -403,144,main.pedersen.segments[0].in[141] -404,145,main.pedersen.segments[0].in[142] -405,146,main.pedersen.segments[0].in[143] -406,147,main.pedersen.segments[0].in[144] -407,148,main.pedersen.segments[0].in[145] -408,149,main.pedersen.segments[0].in[146] -409,150,main.pedersen.segments[0].in[147] -410,151,main.pedersen.segments[0].in[148] -411,152,main.pedersen.segments[0].in[149] -412,153,main.pedersen.segments[0].in[150] -413,154,main.pedersen.segments[0].in[151] -414,155,main.pedersen.segments[0].in[152] -415,156,main.pedersen.segments[0].in[153] -416,157,main.pedersen.segments[0].in[154] -417,158,main.pedersen.segments[0].in[155] -418,159,main.pedersen.segments[0].in[156] -419,160,main.pedersen.segments[0].in[157] -420,161,main.pedersen.segments[0].in[158] -421,162,main.pedersen.segments[0].in[159] -422,163,main.pedersen.segments[0].in[160] -423,164,main.pedersen.segments[0].in[161] -424,165,main.pedersen.segments[0].in[162] -425,166,main.pedersen.segments[0].in[163] -426,167,main.pedersen.segments[0].in[164] -427,168,main.pedersen.segments[0].in[165] -428,169,main.pedersen.segments[0].in[166] -429,170,main.pedersen.segments[0].in[167] -430,171,main.pedersen.segments[0].in[168] -431,172,main.pedersen.segments[0].in[169] -432,173,main.pedersen.segments[0].in[170] -433,174,main.pedersen.segments[0].in[171] -434,175,main.pedersen.segments[0].in[172] -435,176,main.pedersen.segments[0].in[173] -436,177,main.pedersen.segments[0].in[174] -437,178,main.pedersen.segments[0].in[175] -438,179,main.pedersen.segments[0].in[176] -439,180,main.pedersen.segments[0].in[177] -440,181,main.pedersen.segments[0].in[178] -441,182,main.pedersen.segments[0].in[179] -442,183,main.pedersen.segments[0].in[180] -443,184,main.pedersen.segments[0].in[181] -444,185,main.pedersen.segments[0].in[182] -445,186,main.pedersen.segments[0].in[183] -446,187,main.pedersen.segments[0].in[184] -447,188,main.pedersen.segments[0].in[185] -448,189,main.pedersen.segments[0].in[186] -449,190,main.pedersen.segments[0].in[187] -450,191,main.pedersen.segments[0].in[188] -451,192,main.pedersen.segments[0].in[189] -452,193,main.pedersen.segments[0].in[190] -453,194,main.pedersen.segments[0].in[191] -454,195,main.pedersen.segments[0].in[192] -455,196,main.pedersen.segments[0].in[193] -456,197,main.pedersen.segments[0].in[194] -457,198,main.pedersen.segments[0].in[195] -458,199,main.pedersen.segments[0].in[196] -459,200,main.pedersen.segments[0].in[197] -460,201,main.pedersen.segments[0].in[198] -461,202,main.pedersen.segments[0].in[199] -462,3514,main.pedersen.segments[0].base[0] -463,3515,main.pedersen.segments[0].base[1] -464,256,main.pedersen.segments[0].out[0] -465,257,main.pedersen.segments[0].out[1] -466,3514,main.pedersen.segments[0].e2m.in[0] -467,3515,main.pedersen.segments[0].e2m.in[1] -468,3383,main.pedersen.segments[0].e2m.out[0] -469,3384,main.pedersen.segments[0].e2m.out[1] -470,3382,main.pedersen.segments[0].windows[0].in[0] -471,4,main.pedersen.segments[0].windows[0].in[1] -472,5,main.pedersen.segments[0].windows[0].in[2] -473,6,main.pedersen.segments[0].windows[0].in[3] -474,3383,main.pedersen.segments[0].windows[0].base[0] -475,3384,main.pedersen.segments[0].windows[0].base[1] -476,258,main.pedersen.segments[0].windows[0].out[0] -477,259,main.pedersen.segments[0].windows[0].out[1] -478,260,main.pedersen.segments[0].windows[0].out8[0] -479,261,main.pedersen.segments[0].windows[0].out8[1] -480,3383,main.pedersen.segments[0].windows[0].mux.c[0][0] -481,262,main.pedersen.segments[0].windows[0].mux.c[0][1] -482,263,main.pedersen.segments[0].windows[0].mux.c[0][2] -483,264,main.pedersen.segments[0].windows[0].mux.c[0][3] -484,265,main.pedersen.segments[0].windows[0].mux.c[0][4] -485,266,main.pedersen.segments[0].windows[0].mux.c[0][5] -486,267,main.pedersen.segments[0].windows[0].mux.c[0][6] -487,260,main.pedersen.segments[0].windows[0].mux.c[0][7] -488,3384,main.pedersen.segments[0].windows[0].mux.c[1][0] -489,268,main.pedersen.segments[0].windows[0].mux.c[1][1] -490,269,main.pedersen.segments[0].windows[0].mux.c[1][2] -491,270,main.pedersen.segments[0].windows[0].mux.c[1][3] -492,271,main.pedersen.segments[0].windows[0].mux.c[1][4] -493,272,main.pedersen.segments[0].windows[0].mux.c[1][5] -494,273,main.pedersen.segments[0].windows[0].mux.c[1][6] -495,261,main.pedersen.segments[0].windows[0].mux.c[1][7] -496,3382,main.pedersen.segments[0].windows[0].mux.s[0] -497,4,main.pedersen.segments[0].windows[0].mux.s[1] -498,5,main.pedersen.segments[0].windows[0].mux.s[2] -499,258,main.pedersen.segments[0].windows[0].mux.out[0] -500,274,main.pedersen.segments[0].windows[0].mux.out[1] -501,275,main.pedersen.segments[0].windows[0].mux.a210[0] -502,276,main.pedersen.segments[0].windows[0].mux.a210[1] -503,277,main.pedersen.segments[0].windows[0].mux.a21[0] -504,278,main.pedersen.segments[0].windows[0].mux.a21[1] -505,279,main.pedersen.segments[0].windows[0].mux.a20[0] -506,280,main.pedersen.segments[0].windows[0].mux.a20[1] -507,281,main.pedersen.segments[0].windows[0].mux.a2[0] -508,282,main.pedersen.segments[0].windows[0].mux.a2[1] -509,283,main.pedersen.segments[0].windows[0].mux.a10[0] -510,284,main.pedersen.segments[0].windows[0].mux.a10[1] -511,285,main.pedersen.segments[0].windows[0].mux.a1[0] -512,286,main.pedersen.segments[0].windows[0].mux.a1[1] -513,287,main.pedersen.segments[0].windows[0].mux.a0[0] -514,288,main.pedersen.segments[0].windows[0].mux.a0[1] -515,3383,main.pedersen.segments[0].windows[0].mux.a[0] -516,3384,main.pedersen.segments[0].windows[0].mux.a[1] -517,289,main.pedersen.segments[0].windows[0].mux.s10 -518,3383,main.pedersen.segments[0].windows[0].dbl2.in[0] -519,3384,main.pedersen.segments[0].windows[0].dbl2.in[1] -520,262,main.pedersen.segments[0].windows[0].dbl2.out[0] -521,268,main.pedersen.segments[0].windows[0].dbl2.out[1] -522,290,main.pedersen.segments[0].windows[0].dbl2.lamda -523,291,main.pedersen.segments[0].windows[0].dbl2.x1_2 -524,3383,main.pedersen.segments[0].windows[0].adr3.in1[0] -525,3384,main.pedersen.segments[0].windows[0].adr3.in1[1] -526,262,main.pedersen.segments[0].windows[0].adr3.in2[0] -527,268,main.pedersen.segments[0].windows[0].adr3.in2[1] -528,263,main.pedersen.segments[0].windows[0].adr3.out[0] -529,269,main.pedersen.segments[0].windows[0].adr3.out[1] -530,292,main.pedersen.segments[0].windows[0].adr3.lamda -531,3383,main.pedersen.segments[0].windows[0].adr4.in1[0] -532,3384,main.pedersen.segments[0].windows[0].adr4.in1[1] -533,263,main.pedersen.segments[0].windows[0].adr4.in2[0] -534,269,main.pedersen.segments[0].windows[0].adr4.in2[1] -535,264,main.pedersen.segments[0].windows[0].adr4.out[0] -536,270,main.pedersen.segments[0].windows[0].adr4.out[1] -537,293,main.pedersen.segments[0].windows[0].adr4.lamda -538,3383,main.pedersen.segments[0].windows[0].adr5.in1[0] -539,3384,main.pedersen.segments[0].windows[0].adr5.in1[1] -540,264,main.pedersen.segments[0].windows[0].adr5.in2[0] -541,270,main.pedersen.segments[0].windows[0].adr5.in2[1] -542,265,main.pedersen.segments[0].windows[0].adr5.out[0] -543,271,main.pedersen.segments[0].windows[0].adr5.out[1] -544,294,main.pedersen.segments[0].windows[0].adr5.lamda -545,3383,main.pedersen.segments[0].windows[0].adr6.in1[0] -546,3384,main.pedersen.segments[0].windows[0].adr6.in1[1] -547,265,main.pedersen.segments[0].windows[0].adr6.in2[0] -548,271,main.pedersen.segments[0].windows[0].adr6.in2[1] -549,266,main.pedersen.segments[0].windows[0].adr6.out[0] -550,272,main.pedersen.segments[0].windows[0].adr6.out[1] -551,295,main.pedersen.segments[0].windows[0].adr6.lamda -552,3383,main.pedersen.segments[0].windows[0].adr7.in1[0] -553,3384,main.pedersen.segments[0].windows[0].adr7.in1[1] -554,266,main.pedersen.segments[0].windows[0].adr7.in2[0] -555,272,main.pedersen.segments[0].windows[0].adr7.in2[1] -556,267,main.pedersen.segments[0].windows[0].adr7.out[0] -557,273,main.pedersen.segments[0].windows[0].adr7.out[1] -558,296,main.pedersen.segments[0].windows[0].adr7.lamda -559,3383,main.pedersen.segments[0].windows[0].adr8.in1[0] -560,3384,main.pedersen.segments[0].windows[0].adr8.in1[1] -561,267,main.pedersen.segments[0].windows[0].adr8.in2[0] -562,273,main.pedersen.segments[0].windows[0].adr8.in2[1] -563,260,main.pedersen.segments[0].windows[0].adr8.out[0] -564,261,main.pedersen.segments[0].windows[0].adr8.out[1] -565,297,main.pedersen.segments[0].windows[0].adr8.lamda -566,7,main.pedersen.segments[0].windows[1].in[0] -567,8,main.pedersen.segments[0].windows[1].in[1] -568,9,main.pedersen.segments[0].windows[1].in[2] -569,10,main.pedersen.segments[0].windows[1].in[3] -570,298,main.pedersen.segments[0].windows[1].base[0] -571,299,main.pedersen.segments[0].windows[1].base[1] -572,300,main.pedersen.segments[0].windows[1].out[0] -573,301,main.pedersen.segments[0].windows[1].out[1] -574,302,main.pedersen.segments[0].windows[1].out8[0] -575,303,main.pedersen.segments[0].windows[1].out8[1] -576,298,main.pedersen.segments[0].windows[1].mux.c[0][0] -577,304,main.pedersen.segments[0].windows[1].mux.c[0][1] -578,305,main.pedersen.segments[0].windows[1].mux.c[0][2] -579,306,main.pedersen.segments[0].windows[1].mux.c[0][3] -580,307,main.pedersen.segments[0].windows[1].mux.c[0][4] -581,308,main.pedersen.segments[0].windows[1].mux.c[0][5] -582,309,main.pedersen.segments[0].windows[1].mux.c[0][6] -583,302,main.pedersen.segments[0].windows[1].mux.c[0][7] -584,299,main.pedersen.segments[0].windows[1].mux.c[1][0] -585,310,main.pedersen.segments[0].windows[1].mux.c[1][1] -586,311,main.pedersen.segments[0].windows[1].mux.c[1][2] -587,312,main.pedersen.segments[0].windows[1].mux.c[1][3] -588,313,main.pedersen.segments[0].windows[1].mux.c[1][4] -589,314,main.pedersen.segments[0].windows[1].mux.c[1][5] -590,315,main.pedersen.segments[0].windows[1].mux.c[1][6] -591,303,main.pedersen.segments[0].windows[1].mux.c[1][7] -592,7,main.pedersen.segments[0].windows[1].mux.s[0] -593,8,main.pedersen.segments[0].windows[1].mux.s[1] -594,9,main.pedersen.segments[0].windows[1].mux.s[2] -595,300,main.pedersen.segments[0].windows[1].mux.out[0] -596,316,main.pedersen.segments[0].windows[1].mux.out[1] -597,317,main.pedersen.segments[0].windows[1].mux.a210[0] -598,318,main.pedersen.segments[0].windows[1].mux.a210[1] -599,319,main.pedersen.segments[0].windows[1].mux.a21[0] -600,320,main.pedersen.segments[0].windows[1].mux.a21[1] -601,321,main.pedersen.segments[0].windows[1].mux.a20[0] -602,322,main.pedersen.segments[0].windows[1].mux.a20[1] -603,3385,main.pedersen.segments[0].windows[1].mux.a2[0] -604,3386,main.pedersen.segments[0].windows[1].mux.a2[1] -605,323,main.pedersen.segments[0].windows[1].mux.a10[0] -606,324,main.pedersen.segments[0].windows[1].mux.a10[1] -607,325,main.pedersen.segments[0].windows[1].mux.a1[0] -608,326,main.pedersen.segments[0].windows[1].mux.a1[1] -609,327,main.pedersen.segments[0].windows[1].mux.a0[0] -610,328,main.pedersen.segments[0].windows[1].mux.a0[1] -611,298,main.pedersen.segments[0].windows[1].mux.a[0] -612,299,main.pedersen.segments[0].windows[1].mux.a[1] -613,329,main.pedersen.segments[0].windows[1].mux.s10 -614,298,main.pedersen.segments[0].windows[1].dbl2.in[0] -615,299,main.pedersen.segments[0].windows[1].dbl2.in[1] -616,304,main.pedersen.segments[0].windows[1].dbl2.out[0] -617,310,main.pedersen.segments[0].windows[1].dbl2.out[1] -618,330,main.pedersen.segments[0].windows[1].dbl2.lamda -619,331,main.pedersen.segments[0].windows[1].dbl2.x1_2 -620,298,main.pedersen.segments[0].windows[1].adr3.in1[0] -621,299,main.pedersen.segments[0].windows[1].adr3.in1[1] -622,304,main.pedersen.segments[0].windows[1].adr3.in2[0] -623,310,main.pedersen.segments[0].windows[1].adr3.in2[1] -624,305,main.pedersen.segments[0].windows[1].adr3.out[0] -625,311,main.pedersen.segments[0].windows[1].adr3.out[1] -626,332,main.pedersen.segments[0].windows[1].adr3.lamda -627,298,main.pedersen.segments[0].windows[1].adr4.in1[0] -628,299,main.pedersen.segments[0].windows[1].adr4.in1[1] -629,305,main.pedersen.segments[0].windows[1].adr4.in2[0] -630,311,main.pedersen.segments[0].windows[1].adr4.in2[1] -631,306,main.pedersen.segments[0].windows[1].adr4.out[0] -632,312,main.pedersen.segments[0].windows[1].adr4.out[1] -633,333,main.pedersen.segments[0].windows[1].adr4.lamda -634,298,main.pedersen.segments[0].windows[1].adr5.in1[0] -635,299,main.pedersen.segments[0].windows[1].adr5.in1[1] -636,306,main.pedersen.segments[0].windows[1].adr5.in2[0] -637,312,main.pedersen.segments[0].windows[1].adr5.in2[1] -638,307,main.pedersen.segments[0].windows[1].adr5.out[0] -639,313,main.pedersen.segments[0].windows[1].adr5.out[1] -640,334,main.pedersen.segments[0].windows[1].adr5.lamda -641,298,main.pedersen.segments[0].windows[1].adr6.in1[0] -642,299,main.pedersen.segments[0].windows[1].adr6.in1[1] -643,307,main.pedersen.segments[0].windows[1].adr6.in2[0] -644,313,main.pedersen.segments[0].windows[1].adr6.in2[1] -645,308,main.pedersen.segments[0].windows[1].adr6.out[0] -646,314,main.pedersen.segments[0].windows[1].adr6.out[1] -647,335,main.pedersen.segments[0].windows[1].adr6.lamda -648,298,main.pedersen.segments[0].windows[1].adr7.in1[0] -649,299,main.pedersen.segments[0].windows[1].adr7.in1[1] -650,308,main.pedersen.segments[0].windows[1].adr7.in2[0] -651,314,main.pedersen.segments[0].windows[1].adr7.in2[1] -652,309,main.pedersen.segments[0].windows[1].adr7.out[0] -653,315,main.pedersen.segments[0].windows[1].adr7.out[1] -654,336,main.pedersen.segments[0].windows[1].adr7.lamda -655,298,main.pedersen.segments[0].windows[1].adr8.in1[0] -656,299,main.pedersen.segments[0].windows[1].adr8.in1[1] -657,309,main.pedersen.segments[0].windows[1].adr8.in2[0] -658,315,main.pedersen.segments[0].windows[1].adr8.in2[1] -659,302,main.pedersen.segments[0].windows[1].adr8.out[0] -660,303,main.pedersen.segments[0].windows[1].adr8.out[1] -661,337,main.pedersen.segments[0].windows[1].adr8.lamda -681,11,main.pedersen.segments[0].windows[2].in[0] -682,12,main.pedersen.segments[0].windows[2].in[1] -683,13,main.pedersen.segments[0].windows[2].in[2] -684,14,main.pedersen.segments[0].windows[2].in[3] -685,347,main.pedersen.segments[0].windows[2].base[0] -686,348,main.pedersen.segments[0].windows[2].base[1] -687,349,main.pedersen.segments[0].windows[2].out[0] -688,350,main.pedersen.segments[0].windows[2].out[1] -689,351,main.pedersen.segments[0].windows[2].out8[0] -690,352,main.pedersen.segments[0].windows[2].out8[1] -691,347,main.pedersen.segments[0].windows[2].mux.c[0][0] -692,353,main.pedersen.segments[0].windows[2].mux.c[0][1] -693,354,main.pedersen.segments[0].windows[2].mux.c[0][2] -694,355,main.pedersen.segments[0].windows[2].mux.c[0][3] -695,356,main.pedersen.segments[0].windows[2].mux.c[0][4] -696,357,main.pedersen.segments[0].windows[2].mux.c[0][5] -697,358,main.pedersen.segments[0].windows[2].mux.c[0][6] -698,351,main.pedersen.segments[0].windows[2].mux.c[0][7] -699,348,main.pedersen.segments[0].windows[2].mux.c[1][0] -700,359,main.pedersen.segments[0].windows[2].mux.c[1][1] -701,360,main.pedersen.segments[0].windows[2].mux.c[1][2] -702,361,main.pedersen.segments[0].windows[2].mux.c[1][3] -703,362,main.pedersen.segments[0].windows[2].mux.c[1][4] -704,363,main.pedersen.segments[0].windows[2].mux.c[1][5] -705,364,main.pedersen.segments[0].windows[2].mux.c[1][6] -706,352,main.pedersen.segments[0].windows[2].mux.c[1][7] -707,11,main.pedersen.segments[0].windows[2].mux.s[0] -708,12,main.pedersen.segments[0].windows[2].mux.s[1] -709,13,main.pedersen.segments[0].windows[2].mux.s[2] -710,349,main.pedersen.segments[0].windows[2].mux.out[0] -711,365,main.pedersen.segments[0].windows[2].mux.out[1] -712,366,main.pedersen.segments[0].windows[2].mux.a210[0] -713,367,main.pedersen.segments[0].windows[2].mux.a210[1] -714,368,main.pedersen.segments[0].windows[2].mux.a21[0] -715,369,main.pedersen.segments[0].windows[2].mux.a21[1] -716,370,main.pedersen.segments[0].windows[2].mux.a20[0] -717,371,main.pedersen.segments[0].windows[2].mux.a20[1] -718,3387,main.pedersen.segments[0].windows[2].mux.a2[0] -719,3388,main.pedersen.segments[0].windows[2].mux.a2[1] -720,372,main.pedersen.segments[0].windows[2].mux.a10[0] -721,373,main.pedersen.segments[0].windows[2].mux.a10[1] -722,374,main.pedersen.segments[0].windows[2].mux.a1[0] -723,375,main.pedersen.segments[0].windows[2].mux.a1[1] -724,376,main.pedersen.segments[0].windows[2].mux.a0[0] -725,377,main.pedersen.segments[0].windows[2].mux.a0[1] -726,347,main.pedersen.segments[0].windows[2].mux.a[0] -727,348,main.pedersen.segments[0].windows[2].mux.a[1] -728,378,main.pedersen.segments[0].windows[2].mux.s10 -729,347,main.pedersen.segments[0].windows[2].dbl2.in[0] -730,348,main.pedersen.segments[0].windows[2].dbl2.in[1] -731,353,main.pedersen.segments[0].windows[2].dbl2.out[0] -732,359,main.pedersen.segments[0].windows[2].dbl2.out[1] -733,379,main.pedersen.segments[0].windows[2].dbl2.lamda -734,380,main.pedersen.segments[0].windows[2].dbl2.x1_2 -735,347,main.pedersen.segments[0].windows[2].adr3.in1[0] -736,348,main.pedersen.segments[0].windows[2].adr3.in1[1] -737,353,main.pedersen.segments[0].windows[2].adr3.in2[0] -738,359,main.pedersen.segments[0].windows[2].adr3.in2[1] -739,354,main.pedersen.segments[0].windows[2].adr3.out[0] -740,360,main.pedersen.segments[0].windows[2].adr3.out[1] -741,381,main.pedersen.segments[0].windows[2].adr3.lamda -742,347,main.pedersen.segments[0].windows[2].adr4.in1[0] -743,348,main.pedersen.segments[0].windows[2].adr4.in1[1] -744,354,main.pedersen.segments[0].windows[2].adr4.in2[0] -745,360,main.pedersen.segments[0].windows[2].adr4.in2[1] -746,355,main.pedersen.segments[0].windows[2].adr4.out[0] -747,361,main.pedersen.segments[0].windows[2].adr4.out[1] -748,382,main.pedersen.segments[0].windows[2].adr4.lamda -749,347,main.pedersen.segments[0].windows[2].adr5.in1[0] -750,348,main.pedersen.segments[0].windows[2].adr5.in1[1] -751,355,main.pedersen.segments[0].windows[2].adr5.in2[0] -752,361,main.pedersen.segments[0].windows[2].adr5.in2[1] -753,356,main.pedersen.segments[0].windows[2].adr5.out[0] -754,362,main.pedersen.segments[0].windows[2].adr5.out[1] -755,383,main.pedersen.segments[0].windows[2].adr5.lamda -756,347,main.pedersen.segments[0].windows[2].adr6.in1[0] -757,348,main.pedersen.segments[0].windows[2].adr6.in1[1] -758,356,main.pedersen.segments[0].windows[2].adr6.in2[0] -759,362,main.pedersen.segments[0].windows[2].adr6.in2[1] -760,357,main.pedersen.segments[0].windows[2].adr6.out[0] -761,363,main.pedersen.segments[0].windows[2].adr6.out[1] -762,384,main.pedersen.segments[0].windows[2].adr6.lamda -763,347,main.pedersen.segments[0].windows[2].adr7.in1[0] -764,348,main.pedersen.segments[0].windows[2].adr7.in1[1] -765,357,main.pedersen.segments[0].windows[2].adr7.in2[0] -766,363,main.pedersen.segments[0].windows[2].adr7.in2[1] -767,358,main.pedersen.segments[0].windows[2].adr7.out[0] -768,364,main.pedersen.segments[0].windows[2].adr7.out[1] -769,385,main.pedersen.segments[0].windows[2].adr7.lamda -770,347,main.pedersen.segments[0].windows[2].adr8.in1[0] -771,348,main.pedersen.segments[0].windows[2].adr8.in1[1] -772,358,main.pedersen.segments[0].windows[2].adr8.in2[0] -773,364,main.pedersen.segments[0].windows[2].adr8.in2[1] -774,351,main.pedersen.segments[0].windows[2].adr8.out[0] -775,352,main.pedersen.segments[0].windows[2].adr8.out[1] -776,386,main.pedersen.segments[0].windows[2].adr8.lamda -796,15,main.pedersen.segments[0].windows[3].in[0] -797,16,main.pedersen.segments[0].windows[3].in[1] -798,17,main.pedersen.segments[0].windows[3].in[2] -799,18,main.pedersen.segments[0].windows[3].in[3] -800,396,main.pedersen.segments[0].windows[3].base[0] -801,397,main.pedersen.segments[0].windows[3].base[1] -802,398,main.pedersen.segments[0].windows[3].out[0] -803,399,main.pedersen.segments[0].windows[3].out[1] -804,400,main.pedersen.segments[0].windows[3].out8[0] -805,401,main.pedersen.segments[0].windows[3].out8[1] -806,396,main.pedersen.segments[0].windows[3].mux.c[0][0] -807,402,main.pedersen.segments[0].windows[3].mux.c[0][1] -808,403,main.pedersen.segments[0].windows[3].mux.c[0][2] -809,404,main.pedersen.segments[0].windows[3].mux.c[0][3] -810,405,main.pedersen.segments[0].windows[3].mux.c[0][4] -811,406,main.pedersen.segments[0].windows[3].mux.c[0][5] -812,407,main.pedersen.segments[0].windows[3].mux.c[0][6] -813,400,main.pedersen.segments[0].windows[3].mux.c[0][7] -814,397,main.pedersen.segments[0].windows[3].mux.c[1][0] -815,408,main.pedersen.segments[0].windows[3].mux.c[1][1] -816,409,main.pedersen.segments[0].windows[3].mux.c[1][2] -817,410,main.pedersen.segments[0].windows[3].mux.c[1][3] -818,411,main.pedersen.segments[0].windows[3].mux.c[1][4] -819,412,main.pedersen.segments[0].windows[3].mux.c[1][5] -820,413,main.pedersen.segments[0].windows[3].mux.c[1][6] -821,401,main.pedersen.segments[0].windows[3].mux.c[1][7] -822,15,main.pedersen.segments[0].windows[3].mux.s[0] -823,16,main.pedersen.segments[0].windows[3].mux.s[1] -824,17,main.pedersen.segments[0].windows[3].mux.s[2] -825,398,main.pedersen.segments[0].windows[3].mux.out[0] -826,414,main.pedersen.segments[0].windows[3].mux.out[1] -827,415,main.pedersen.segments[0].windows[3].mux.a210[0] -828,416,main.pedersen.segments[0].windows[3].mux.a210[1] -829,417,main.pedersen.segments[0].windows[3].mux.a21[0] -830,418,main.pedersen.segments[0].windows[3].mux.a21[1] -831,419,main.pedersen.segments[0].windows[3].mux.a20[0] -832,420,main.pedersen.segments[0].windows[3].mux.a20[1] -833,3389,main.pedersen.segments[0].windows[3].mux.a2[0] -834,3390,main.pedersen.segments[0].windows[3].mux.a2[1] -835,421,main.pedersen.segments[0].windows[3].mux.a10[0] -836,422,main.pedersen.segments[0].windows[3].mux.a10[1] -837,423,main.pedersen.segments[0].windows[3].mux.a1[0] -838,424,main.pedersen.segments[0].windows[3].mux.a1[1] -839,425,main.pedersen.segments[0].windows[3].mux.a0[0] -840,426,main.pedersen.segments[0].windows[3].mux.a0[1] -841,396,main.pedersen.segments[0].windows[3].mux.a[0] -842,397,main.pedersen.segments[0].windows[3].mux.a[1] -843,427,main.pedersen.segments[0].windows[3].mux.s10 -844,396,main.pedersen.segments[0].windows[3].dbl2.in[0] -845,397,main.pedersen.segments[0].windows[3].dbl2.in[1] -846,402,main.pedersen.segments[0].windows[3].dbl2.out[0] -847,408,main.pedersen.segments[0].windows[3].dbl2.out[1] -848,428,main.pedersen.segments[0].windows[3].dbl2.lamda -849,429,main.pedersen.segments[0].windows[3].dbl2.x1_2 -850,396,main.pedersen.segments[0].windows[3].adr3.in1[0] -851,397,main.pedersen.segments[0].windows[3].adr3.in1[1] -852,402,main.pedersen.segments[0].windows[3].adr3.in2[0] -853,408,main.pedersen.segments[0].windows[3].adr3.in2[1] -854,403,main.pedersen.segments[0].windows[3].adr3.out[0] -855,409,main.pedersen.segments[0].windows[3].adr3.out[1] -856,430,main.pedersen.segments[0].windows[3].adr3.lamda -857,396,main.pedersen.segments[0].windows[3].adr4.in1[0] -858,397,main.pedersen.segments[0].windows[3].adr4.in1[1] -859,403,main.pedersen.segments[0].windows[3].adr4.in2[0] -860,409,main.pedersen.segments[0].windows[3].adr4.in2[1] -861,404,main.pedersen.segments[0].windows[3].adr4.out[0] -862,410,main.pedersen.segments[0].windows[3].adr4.out[1] -863,431,main.pedersen.segments[0].windows[3].adr4.lamda -864,396,main.pedersen.segments[0].windows[3].adr5.in1[0] -865,397,main.pedersen.segments[0].windows[3].adr5.in1[1] -866,404,main.pedersen.segments[0].windows[3].adr5.in2[0] -867,410,main.pedersen.segments[0].windows[3].adr5.in2[1] -868,405,main.pedersen.segments[0].windows[3].adr5.out[0] -869,411,main.pedersen.segments[0].windows[3].adr5.out[1] -870,432,main.pedersen.segments[0].windows[3].adr5.lamda -871,396,main.pedersen.segments[0].windows[3].adr6.in1[0] -872,397,main.pedersen.segments[0].windows[3].adr6.in1[1] -873,405,main.pedersen.segments[0].windows[3].adr6.in2[0] -874,411,main.pedersen.segments[0].windows[3].adr6.in2[1] -875,406,main.pedersen.segments[0].windows[3].adr6.out[0] -876,412,main.pedersen.segments[0].windows[3].adr6.out[1] -877,433,main.pedersen.segments[0].windows[3].adr6.lamda -878,396,main.pedersen.segments[0].windows[3].adr7.in1[0] -879,397,main.pedersen.segments[0].windows[3].adr7.in1[1] -880,406,main.pedersen.segments[0].windows[3].adr7.in2[0] -881,412,main.pedersen.segments[0].windows[3].adr7.in2[1] -882,407,main.pedersen.segments[0].windows[3].adr7.out[0] -883,413,main.pedersen.segments[0].windows[3].adr7.out[1] -884,434,main.pedersen.segments[0].windows[3].adr7.lamda -885,396,main.pedersen.segments[0].windows[3].adr8.in1[0] -886,397,main.pedersen.segments[0].windows[3].adr8.in1[1] -887,407,main.pedersen.segments[0].windows[3].adr8.in2[0] -888,413,main.pedersen.segments[0].windows[3].adr8.in2[1] -889,400,main.pedersen.segments[0].windows[3].adr8.out[0] -890,401,main.pedersen.segments[0].windows[3].adr8.out[1] -891,435,main.pedersen.segments[0].windows[3].adr8.lamda -911,19,main.pedersen.segments[0].windows[4].in[0] -912,20,main.pedersen.segments[0].windows[4].in[1] -913,21,main.pedersen.segments[0].windows[4].in[2] -914,22,main.pedersen.segments[0].windows[4].in[3] -915,445,main.pedersen.segments[0].windows[4].base[0] -916,446,main.pedersen.segments[0].windows[4].base[1] -917,447,main.pedersen.segments[0].windows[4].out[0] -918,448,main.pedersen.segments[0].windows[4].out[1] -919,449,main.pedersen.segments[0].windows[4].out8[0] -920,450,main.pedersen.segments[0].windows[4].out8[1] -921,445,main.pedersen.segments[0].windows[4].mux.c[0][0] -922,451,main.pedersen.segments[0].windows[4].mux.c[0][1] -923,452,main.pedersen.segments[0].windows[4].mux.c[0][2] -924,453,main.pedersen.segments[0].windows[4].mux.c[0][3] -925,454,main.pedersen.segments[0].windows[4].mux.c[0][4] -926,455,main.pedersen.segments[0].windows[4].mux.c[0][5] -927,456,main.pedersen.segments[0].windows[4].mux.c[0][6] -928,449,main.pedersen.segments[0].windows[4].mux.c[0][7] -929,446,main.pedersen.segments[0].windows[4].mux.c[1][0] -930,457,main.pedersen.segments[0].windows[4].mux.c[1][1] -931,458,main.pedersen.segments[0].windows[4].mux.c[1][2] -932,459,main.pedersen.segments[0].windows[4].mux.c[1][3] -933,460,main.pedersen.segments[0].windows[4].mux.c[1][4] -934,461,main.pedersen.segments[0].windows[4].mux.c[1][5] -935,462,main.pedersen.segments[0].windows[4].mux.c[1][6] -936,450,main.pedersen.segments[0].windows[4].mux.c[1][7] -937,19,main.pedersen.segments[0].windows[4].mux.s[0] -938,20,main.pedersen.segments[0].windows[4].mux.s[1] -939,21,main.pedersen.segments[0].windows[4].mux.s[2] -940,447,main.pedersen.segments[0].windows[4].mux.out[0] -941,463,main.pedersen.segments[0].windows[4].mux.out[1] -942,464,main.pedersen.segments[0].windows[4].mux.a210[0] -943,465,main.pedersen.segments[0].windows[4].mux.a210[1] -944,466,main.pedersen.segments[0].windows[4].mux.a21[0] -945,467,main.pedersen.segments[0].windows[4].mux.a21[1] -946,468,main.pedersen.segments[0].windows[4].mux.a20[0] -947,469,main.pedersen.segments[0].windows[4].mux.a20[1] -948,3391,main.pedersen.segments[0].windows[4].mux.a2[0] -949,3392,main.pedersen.segments[0].windows[4].mux.a2[1] -950,470,main.pedersen.segments[0].windows[4].mux.a10[0] -951,471,main.pedersen.segments[0].windows[4].mux.a10[1] -952,472,main.pedersen.segments[0].windows[4].mux.a1[0] -953,473,main.pedersen.segments[0].windows[4].mux.a1[1] -954,474,main.pedersen.segments[0].windows[4].mux.a0[0] -955,475,main.pedersen.segments[0].windows[4].mux.a0[1] -956,445,main.pedersen.segments[0].windows[4].mux.a[0] -957,446,main.pedersen.segments[0].windows[4].mux.a[1] -958,476,main.pedersen.segments[0].windows[4].mux.s10 -959,445,main.pedersen.segments[0].windows[4].dbl2.in[0] -960,446,main.pedersen.segments[0].windows[4].dbl2.in[1] -961,451,main.pedersen.segments[0].windows[4].dbl2.out[0] -962,457,main.pedersen.segments[0].windows[4].dbl2.out[1] -963,477,main.pedersen.segments[0].windows[4].dbl2.lamda -964,478,main.pedersen.segments[0].windows[4].dbl2.x1_2 -965,445,main.pedersen.segments[0].windows[4].adr3.in1[0] -966,446,main.pedersen.segments[0].windows[4].adr3.in1[1] -967,451,main.pedersen.segments[0].windows[4].adr3.in2[0] -968,457,main.pedersen.segments[0].windows[4].adr3.in2[1] -969,452,main.pedersen.segments[0].windows[4].adr3.out[0] -970,458,main.pedersen.segments[0].windows[4].adr3.out[1] -971,479,main.pedersen.segments[0].windows[4].adr3.lamda -972,445,main.pedersen.segments[0].windows[4].adr4.in1[0] -973,446,main.pedersen.segments[0].windows[4].adr4.in1[1] -974,452,main.pedersen.segments[0].windows[4].adr4.in2[0] -975,458,main.pedersen.segments[0].windows[4].adr4.in2[1] -976,453,main.pedersen.segments[0].windows[4].adr4.out[0] -977,459,main.pedersen.segments[0].windows[4].adr4.out[1] -978,480,main.pedersen.segments[0].windows[4].adr4.lamda -979,445,main.pedersen.segments[0].windows[4].adr5.in1[0] -980,446,main.pedersen.segments[0].windows[4].adr5.in1[1] -981,453,main.pedersen.segments[0].windows[4].adr5.in2[0] -982,459,main.pedersen.segments[0].windows[4].adr5.in2[1] -983,454,main.pedersen.segments[0].windows[4].adr5.out[0] -984,460,main.pedersen.segments[0].windows[4].adr5.out[1] -985,481,main.pedersen.segments[0].windows[4].adr5.lamda -986,445,main.pedersen.segments[0].windows[4].adr6.in1[0] -987,446,main.pedersen.segments[0].windows[4].adr6.in1[1] -988,454,main.pedersen.segments[0].windows[4].adr6.in2[0] -989,460,main.pedersen.segments[0].windows[4].adr6.in2[1] -990,455,main.pedersen.segments[0].windows[4].adr6.out[0] -991,461,main.pedersen.segments[0].windows[4].adr6.out[1] -992,482,main.pedersen.segments[0].windows[4].adr6.lamda -993,445,main.pedersen.segments[0].windows[4].adr7.in1[0] -994,446,main.pedersen.segments[0].windows[4].adr7.in1[1] -995,455,main.pedersen.segments[0].windows[4].adr7.in2[0] -996,461,main.pedersen.segments[0].windows[4].adr7.in2[1] -997,456,main.pedersen.segments[0].windows[4].adr7.out[0] -998,462,main.pedersen.segments[0].windows[4].adr7.out[1] -999,483,main.pedersen.segments[0].windows[4].adr7.lamda -1000,445,main.pedersen.segments[0].windows[4].adr8.in1[0] -1001,446,main.pedersen.segments[0].windows[4].adr8.in1[1] -1002,456,main.pedersen.segments[0].windows[4].adr8.in2[0] -1003,462,main.pedersen.segments[0].windows[4].adr8.in2[1] -1004,449,main.pedersen.segments[0].windows[4].adr8.out[0] -1005,450,main.pedersen.segments[0].windows[4].adr8.out[1] -1006,484,main.pedersen.segments[0].windows[4].adr8.lamda -1026,23,main.pedersen.segments[0].windows[5].in[0] -1027,24,main.pedersen.segments[0].windows[5].in[1] -1028,25,main.pedersen.segments[0].windows[5].in[2] -1029,26,main.pedersen.segments[0].windows[5].in[3] -1030,494,main.pedersen.segments[0].windows[5].base[0] -1031,495,main.pedersen.segments[0].windows[5].base[1] -1032,496,main.pedersen.segments[0].windows[5].out[0] -1033,497,main.pedersen.segments[0].windows[5].out[1] -1034,498,main.pedersen.segments[0].windows[5].out8[0] -1035,499,main.pedersen.segments[0].windows[5].out8[1] -1036,494,main.pedersen.segments[0].windows[5].mux.c[0][0] -1037,500,main.pedersen.segments[0].windows[5].mux.c[0][1] -1038,501,main.pedersen.segments[0].windows[5].mux.c[0][2] -1039,502,main.pedersen.segments[0].windows[5].mux.c[0][3] -1040,503,main.pedersen.segments[0].windows[5].mux.c[0][4] -1041,504,main.pedersen.segments[0].windows[5].mux.c[0][5] -1042,505,main.pedersen.segments[0].windows[5].mux.c[0][6] -1043,498,main.pedersen.segments[0].windows[5].mux.c[0][7] -1044,495,main.pedersen.segments[0].windows[5].mux.c[1][0] -1045,506,main.pedersen.segments[0].windows[5].mux.c[1][1] -1046,507,main.pedersen.segments[0].windows[5].mux.c[1][2] -1047,508,main.pedersen.segments[0].windows[5].mux.c[1][3] -1048,509,main.pedersen.segments[0].windows[5].mux.c[1][4] -1049,510,main.pedersen.segments[0].windows[5].mux.c[1][5] -1050,511,main.pedersen.segments[0].windows[5].mux.c[1][6] -1051,499,main.pedersen.segments[0].windows[5].mux.c[1][7] -1052,23,main.pedersen.segments[0].windows[5].mux.s[0] -1053,24,main.pedersen.segments[0].windows[5].mux.s[1] -1054,25,main.pedersen.segments[0].windows[5].mux.s[2] -1055,496,main.pedersen.segments[0].windows[5].mux.out[0] -1056,512,main.pedersen.segments[0].windows[5].mux.out[1] -1057,513,main.pedersen.segments[0].windows[5].mux.a210[0] -1058,514,main.pedersen.segments[0].windows[5].mux.a210[1] -1059,515,main.pedersen.segments[0].windows[5].mux.a21[0] -1060,516,main.pedersen.segments[0].windows[5].mux.a21[1] -1061,517,main.pedersen.segments[0].windows[5].mux.a20[0] -1062,518,main.pedersen.segments[0].windows[5].mux.a20[1] -1063,3393,main.pedersen.segments[0].windows[5].mux.a2[0] -1064,3394,main.pedersen.segments[0].windows[5].mux.a2[1] -1065,519,main.pedersen.segments[0].windows[5].mux.a10[0] -1066,520,main.pedersen.segments[0].windows[5].mux.a10[1] -1067,521,main.pedersen.segments[0].windows[5].mux.a1[0] -1068,522,main.pedersen.segments[0].windows[5].mux.a1[1] -1069,523,main.pedersen.segments[0].windows[5].mux.a0[0] -1070,524,main.pedersen.segments[0].windows[5].mux.a0[1] -1071,494,main.pedersen.segments[0].windows[5].mux.a[0] -1072,495,main.pedersen.segments[0].windows[5].mux.a[1] -1073,525,main.pedersen.segments[0].windows[5].mux.s10 -1074,494,main.pedersen.segments[0].windows[5].dbl2.in[0] -1075,495,main.pedersen.segments[0].windows[5].dbl2.in[1] -1076,500,main.pedersen.segments[0].windows[5].dbl2.out[0] -1077,506,main.pedersen.segments[0].windows[5].dbl2.out[1] -1078,526,main.pedersen.segments[0].windows[5].dbl2.lamda -1079,527,main.pedersen.segments[0].windows[5].dbl2.x1_2 -1080,494,main.pedersen.segments[0].windows[5].adr3.in1[0] -1081,495,main.pedersen.segments[0].windows[5].adr3.in1[1] -1082,500,main.pedersen.segments[0].windows[5].adr3.in2[0] -1083,506,main.pedersen.segments[0].windows[5].adr3.in2[1] -1084,501,main.pedersen.segments[0].windows[5].adr3.out[0] -1085,507,main.pedersen.segments[0].windows[5].adr3.out[1] -1086,528,main.pedersen.segments[0].windows[5].adr3.lamda -1087,494,main.pedersen.segments[0].windows[5].adr4.in1[0] -1088,495,main.pedersen.segments[0].windows[5].adr4.in1[1] -1089,501,main.pedersen.segments[0].windows[5].adr4.in2[0] -1090,507,main.pedersen.segments[0].windows[5].adr4.in2[1] -1091,502,main.pedersen.segments[0].windows[5].adr4.out[0] -1092,508,main.pedersen.segments[0].windows[5].adr4.out[1] -1093,529,main.pedersen.segments[0].windows[5].adr4.lamda -1094,494,main.pedersen.segments[0].windows[5].adr5.in1[0] -1095,495,main.pedersen.segments[0].windows[5].adr5.in1[1] -1096,502,main.pedersen.segments[0].windows[5].adr5.in2[0] -1097,508,main.pedersen.segments[0].windows[5].adr5.in2[1] -1098,503,main.pedersen.segments[0].windows[5].adr5.out[0] -1099,509,main.pedersen.segments[0].windows[5].adr5.out[1] -1100,530,main.pedersen.segments[0].windows[5].adr5.lamda -1101,494,main.pedersen.segments[0].windows[5].adr6.in1[0] -1102,495,main.pedersen.segments[0].windows[5].adr6.in1[1] -1103,503,main.pedersen.segments[0].windows[5].adr6.in2[0] -1104,509,main.pedersen.segments[0].windows[5].adr6.in2[1] -1105,504,main.pedersen.segments[0].windows[5].adr6.out[0] -1106,510,main.pedersen.segments[0].windows[5].adr6.out[1] -1107,531,main.pedersen.segments[0].windows[5].adr6.lamda -1108,494,main.pedersen.segments[0].windows[5].adr7.in1[0] -1109,495,main.pedersen.segments[0].windows[5].adr7.in1[1] -1110,504,main.pedersen.segments[0].windows[5].adr7.in2[0] -1111,510,main.pedersen.segments[0].windows[5].adr7.in2[1] -1112,505,main.pedersen.segments[0].windows[5].adr7.out[0] -1113,511,main.pedersen.segments[0].windows[5].adr7.out[1] -1114,532,main.pedersen.segments[0].windows[5].adr7.lamda -1115,494,main.pedersen.segments[0].windows[5].adr8.in1[0] -1116,495,main.pedersen.segments[0].windows[5].adr8.in1[1] -1117,505,main.pedersen.segments[0].windows[5].adr8.in2[0] -1118,511,main.pedersen.segments[0].windows[5].adr8.in2[1] -1119,498,main.pedersen.segments[0].windows[5].adr8.out[0] -1120,499,main.pedersen.segments[0].windows[5].adr8.out[1] -1121,533,main.pedersen.segments[0].windows[5].adr8.lamda -1141,27,main.pedersen.segments[0].windows[6].in[0] -1142,28,main.pedersen.segments[0].windows[6].in[1] -1143,29,main.pedersen.segments[0].windows[6].in[2] -1144,30,main.pedersen.segments[0].windows[6].in[3] -1145,543,main.pedersen.segments[0].windows[6].base[0] -1146,544,main.pedersen.segments[0].windows[6].base[1] -1147,545,main.pedersen.segments[0].windows[6].out[0] -1148,546,main.pedersen.segments[0].windows[6].out[1] -1149,547,main.pedersen.segments[0].windows[6].out8[0] -1150,548,main.pedersen.segments[0].windows[6].out8[1] -1151,543,main.pedersen.segments[0].windows[6].mux.c[0][0] -1152,549,main.pedersen.segments[0].windows[6].mux.c[0][1] -1153,550,main.pedersen.segments[0].windows[6].mux.c[0][2] -1154,551,main.pedersen.segments[0].windows[6].mux.c[0][3] -1155,552,main.pedersen.segments[0].windows[6].mux.c[0][4] -1156,553,main.pedersen.segments[0].windows[6].mux.c[0][5] -1157,554,main.pedersen.segments[0].windows[6].mux.c[0][6] -1158,547,main.pedersen.segments[0].windows[6].mux.c[0][7] -1159,544,main.pedersen.segments[0].windows[6].mux.c[1][0] -1160,555,main.pedersen.segments[0].windows[6].mux.c[1][1] -1161,556,main.pedersen.segments[0].windows[6].mux.c[1][2] -1162,557,main.pedersen.segments[0].windows[6].mux.c[1][3] -1163,558,main.pedersen.segments[0].windows[6].mux.c[1][4] -1164,559,main.pedersen.segments[0].windows[6].mux.c[1][5] -1165,560,main.pedersen.segments[0].windows[6].mux.c[1][6] -1166,548,main.pedersen.segments[0].windows[6].mux.c[1][7] -1167,27,main.pedersen.segments[0].windows[6].mux.s[0] -1168,28,main.pedersen.segments[0].windows[6].mux.s[1] -1169,29,main.pedersen.segments[0].windows[6].mux.s[2] -1170,545,main.pedersen.segments[0].windows[6].mux.out[0] -1171,561,main.pedersen.segments[0].windows[6].mux.out[1] -1172,562,main.pedersen.segments[0].windows[6].mux.a210[0] -1173,563,main.pedersen.segments[0].windows[6].mux.a210[1] -1174,564,main.pedersen.segments[0].windows[6].mux.a21[0] -1175,565,main.pedersen.segments[0].windows[6].mux.a21[1] -1176,566,main.pedersen.segments[0].windows[6].mux.a20[0] -1177,567,main.pedersen.segments[0].windows[6].mux.a20[1] -1178,3395,main.pedersen.segments[0].windows[6].mux.a2[0] -1179,3396,main.pedersen.segments[0].windows[6].mux.a2[1] -1180,568,main.pedersen.segments[0].windows[6].mux.a10[0] -1181,569,main.pedersen.segments[0].windows[6].mux.a10[1] -1182,570,main.pedersen.segments[0].windows[6].mux.a1[0] -1183,571,main.pedersen.segments[0].windows[6].mux.a1[1] -1184,572,main.pedersen.segments[0].windows[6].mux.a0[0] -1185,573,main.pedersen.segments[0].windows[6].mux.a0[1] -1186,543,main.pedersen.segments[0].windows[6].mux.a[0] -1187,544,main.pedersen.segments[0].windows[6].mux.a[1] -1188,574,main.pedersen.segments[0].windows[6].mux.s10 -1189,543,main.pedersen.segments[0].windows[6].dbl2.in[0] -1190,544,main.pedersen.segments[0].windows[6].dbl2.in[1] -1191,549,main.pedersen.segments[0].windows[6].dbl2.out[0] -1192,555,main.pedersen.segments[0].windows[6].dbl2.out[1] -1193,575,main.pedersen.segments[0].windows[6].dbl2.lamda -1194,576,main.pedersen.segments[0].windows[6].dbl2.x1_2 -1195,543,main.pedersen.segments[0].windows[6].adr3.in1[0] -1196,544,main.pedersen.segments[0].windows[6].adr3.in1[1] -1197,549,main.pedersen.segments[0].windows[6].adr3.in2[0] -1198,555,main.pedersen.segments[0].windows[6].adr3.in2[1] -1199,550,main.pedersen.segments[0].windows[6].adr3.out[0] -1200,556,main.pedersen.segments[0].windows[6].adr3.out[1] -1201,577,main.pedersen.segments[0].windows[6].adr3.lamda -1202,543,main.pedersen.segments[0].windows[6].adr4.in1[0] -1203,544,main.pedersen.segments[0].windows[6].adr4.in1[1] -1204,550,main.pedersen.segments[0].windows[6].adr4.in2[0] -1205,556,main.pedersen.segments[0].windows[6].adr4.in2[1] -1206,551,main.pedersen.segments[0].windows[6].adr4.out[0] -1207,557,main.pedersen.segments[0].windows[6].adr4.out[1] -1208,578,main.pedersen.segments[0].windows[6].adr4.lamda -1209,543,main.pedersen.segments[0].windows[6].adr5.in1[0] -1210,544,main.pedersen.segments[0].windows[6].adr5.in1[1] -1211,551,main.pedersen.segments[0].windows[6].adr5.in2[0] -1212,557,main.pedersen.segments[0].windows[6].adr5.in2[1] -1213,552,main.pedersen.segments[0].windows[6].adr5.out[0] -1214,558,main.pedersen.segments[0].windows[6].adr5.out[1] -1215,579,main.pedersen.segments[0].windows[6].adr5.lamda -1216,543,main.pedersen.segments[0].windows[6].adr6.in1[0] -1217,544,main.pedersen.segments[0].windows[6].adr6.in1[1] -1218,552,main.pedersen.segments[0].windows[6].adr6.in2[0] -1219,558,main.pedersen.segments[0].windows[6].adr6.in2[1] -1220,553,main.pedersen.segments[0].windows[6].adr6.out[0] -1221,559,main.pedersen.segments[0].windows[6].adr6.out[1] -1222,580,main.pedersen.segments[0].windows[6].adr6.lamda -1223,543,main.pedersen.segments[0].windows[6].adr7.in1[0] -1224,544,main.pedersen.segments[0].windows[6].adr7.in1[1] -1225,553,main.pedersen.segments[0].windows[6].adr7.in2[0] -1226,559,main.pedersen.segments[0].windows[6].adr7.in2[1] -1227,554,main.pedersen.segments[0].windows[6].adr7.out[0] -1228,560,main.pedersen.segments[0].windows[6].adr7.out[1] -1229,581,main.pedersen.segments[0].windows[6].adr7.lamda -1230,543,main.pedersen.segments[0].windows[6].adr8.in1[0] -1231,544,main.pedersen.segments[0].windows[6].adr8.in1[1] -1232,554,main.pedersen.segments[0].windows[6].adr8.in2[0] -1233,560,main.pedersen.segments[0].windows[6].adr8.in2[1] -1234,547,main.pedersen.segments[0].windows[6].adr8.out[0] -1235,548,main.pedersen.segments[0].windows[6].adr8.out[1] -1236,582,main.pedersen.segments[0].windows[6].adr8.lamda -1256,31,main.pedersen.segments[0].windows[7].in[0] -1257,32,main.pedersen.segments[0].windows[7].in[1] -1258,33,main.pedersen.segments[0].windows[7].in[2] -1259,34,main.pedersen.segments[0].windows[7].in[3] -1260,592,main.pedersen.segments[0].windows[7].base[0] -1261,593,main.pedersen.segments[0].windows[7].base[1] -1262,594,main.pedersen.segments[0].windows[7].out[0] -1263,595,main.pedersen.segments[0].windows[7].out[1] -1264,596,main.pedersen.segments[0].windows[7].out8[0] -1265,597,main.pedersen.segments[0].windows[7].out8[1] -1266,592,main.pedersen.segments[0].windows[7].mux.c[0][0] -1267,598,main.pedersen.segments[0].windows[7].mux.c[0][1] -1268,599,main.pedersen.segments[0].windows[7].mux.c[0][2] -1269,600,main.pedersen.segments[0].windows[7].mux.c[0][3] -1270,601,main.pedersen.segments[0].windows[7].mux.c[0][4] -1271,602,main.pedersen.segments[0].windows[7].mux.c[0][5] -1272,603,main.pedersen.segments[0].windows[7].mux.c[0][6] -1273,596,main.pedersen.segments[0].windows[7].mux.c[0][7] -1274,593,main.pedersen.segments[0].windows[7].mux.c[1][0] -1275,604,main.pedersen.segments[0].windows[7].mux.c[1][1] -1276,605,main.pedersen.segments[0].windows[7].mux.c[1][2] -1277,606,main.pedersen.segments[0].windows[7].mux.c[1][3] -1278,607,main.pedersen.segments[0].windows[7].mux.c[1][4] -1279,608,main.pedersen.segments[0].windows[7].mux.c[1][5] -1280,609,main.pedersen.segments[0].windows[7].mux.c[1][6] -1281,597,main.pedersen.segments[0].windows[7].mux.c[1][7] -1282,31,main.pedersen.segments[0].windows[7].mux.s[0] -1283,32,main.pedersen.segments[0].windows[7].mux.s[1] -1284,33,main.pedersen.segments[0].windows[7].mux.s[2] -1285,594,main.pedersen.segments[0].windows[7].mux.out[0] -1286,610,main.pedersen.segments[0].windows[7].mux.out[1] -1287,611,main.pedersen.segments[0].windows[7].mux.a210[0] -1288,612,main.pedersen.segments[0].windows[7].mux.a210[1] -1289,613,main.pedersen.segments[0].windows[7].mux.a21[0] -1290,614,main.pedersen.segments[0].windows[7].mux.a21[1] -1291,615,main.pedersen.segments[0].windows[7].mux.a20[0] -1292,616,main.pedersen.segments[0].windows[7].mux.a20[1] -1293,3397,main.pedersen.segments[0].windows[7].mux.a2[0] -1294,3398,main.pedersen.segments[0].windows[7].mux.a2[1] -1295,617,main.pedersen.segments[0].windows[7].mux.a10[0] -1296,618,main.pedersen.segments[0].windows[7].mux.a10[1] -1297,619,main.pedersen.segments[0].windows[7].mux.a1[0] -1298,620,main.pedersen.segments[0].windows[7].mux.a1[1] -1299,621,main.pedersen.segments[0].windows[7].mux.a0[0] -1300,622,main.pedersen.segments[0].windows[7].mux.a0[1] -1301,592,main.pedersen.segments[0].windows[7].mux.a[0] -1302,593,main.pedersen.segments[0].windows[7].mux.a[1] -1303,623,main.pedersen.segments[0].windows[7].mux.s10 -1304,592,main.pedersen.segments[0].windows[7].dbl2.in[0] -1305,593,main.pedersen.segments[0].windows[7].dbl2.in[1] -1306,598,main.pedersen.segments[0].windows[7].dbl2.out[0] -1307,604,main.pedersen.segments[0].windows[7].dbl2.out[1] -1308,624,main.pedersen.segments[0].windows[7].dbl2.lamda -1309,625,main.pedersen.segments[0].windows[7].dbl2.x1_2 -1310,592,main.pedersen.segments[0].windows[7].adr3.in1[0] -1311,593,main.pedersen.segments[0].windows[7].adr3.in1[1] -1312,598,main.pedersen.segments[0].windows[7].adr3.in2[0] -1313,604,main.pedersen.segments[0].windows[7].adr3.in2[1] -1314,599,main.pedersen.segments[0].windows[7].adr3.out[0] -1315,605,main.pedersen.segments[0].windows[7].adr3.out[1] -1316,626,main.pedersen.segments[0].windows[7].adr3.lamda -1317,592,main.pedersen.segments[0].windows[7].adr4.in1[0] -1318,593,main.pedersen.segments[0].windows[7].adr4.in1[1] -1319,599,main.pedersen.segments[0].windows[7].adr4.in2[0] -1320,605,main.pedersen.segments[0].windows[7].adr4.in2[1] -1321,600,main.pedersen.segments[0].windows[7].adr4.out[0] -1322,606,main.pedersen.segments[0].windows[7].adr4.out[1] -1323,627,main.pedersen.segments[0].windows[7].adr4.lamda -1324,592,main.pedersen.segments[0].windows[7].adr5.in1[0] -1325,593,main.pedersen.segments[0].windows[7].adr5.in1[1] -1326,600,main.pedersen.segments[0].windows[7].adr5.in2[0] -1327,606,main.pedersen.segments[0].windows[7].adr5.in2[1] -1328,601,main.pedersen.segments[0].windows[7].adr5.out[0] -1329,607,main.pedersen.segments[0].windows[7].adr5.out[1] -1330,628,main.pedersen.segments[0].windows[7].adr5.lamda -1331,592,main.pedersen.segments[0].windows[7].adr6.in1[0] -1332,593,main.pedersen.segments[0].windows[7].adr6.in1[1] -1333,601,main.pedersen.segments[0].windows[7].adr6.in2[0] -1334,607,main.pedersen.segments[0].windows[7].adr6.in2[1] -1335,602,main.pedersen.segments[0].windows[7].adr6.out[0] -1336,608,main.pedersen.segments[0].windows[7].adr6.out[1] -1337,629,main.pedersen.segments[0].windows[7].adr6.lamda -1338,592,main.pedersen.segments[0].windows[7].adr7.in1[0] -1339,593,main.pedersen.segments[0].windows[7].adr7.in1[1] -1340,602,main.pedersen.segments[0].windows[7].adr7.in2[0] -1341,608,main.pedersen.segments[0].windows[7].adr7.in2[1] -1342,603,main.pedersen.segments[0].windows[7].adr7.out[0] -1343,609,main.pedersen.segments[0].windows[7].adr7.out[1] -1344,630,main.pedersen.segments[0].windows[7].adr7.lamda -1345,592,main.pedersen.segments[0].windows[7].adr8.in1[0] -1346,593,main.pedersen.segments[0].windows[7].adr8.in1[1] -1347,603,main.pedersen.segments[0].windows[7].adr8.in2[0] -1348,609,main.pedersen.segments[0].windows[7].adr8.in2[1] -1349,596,main.pedersen.segments[0].windows[7].adr8.out[0] -1350,597,main.pedersen.segments[0].windows[7].adr8.out[1] -1351,631,main.pedersen.segments[0].windows[7].adr8.lamda -1371,35,main.pedersen.segments[0].windows[8].in[0] -1372,36,main.pedersen.segments[0].windows[8].in[1] -1373,37,main.pedersen.segments[0].windows[8].in[2] -1374,38,main.pedersen.segments[0].windows[8].in[3] -1375,641,main.pedersen.segments[0].windows[8].base[0] -1376,642,main.pedersen.segments[0].windows[8].base[1] -1377,643,main.pedersen.segments[0].windows[8].out[0] -1378,644,main.pedersen.segments[0].windows[8].out[1] -1379,645,main.pedersen.segments[0].windows[8].out8[0] -1380,646,main.pedersen.segments[0].windows[8].out8[1] -1381,641,main.pedersen.segments[0].windows[8].mux.c[0][0] -1382,647,main.pedersen.segments[0].windows[8].mux.c[0][1] -1383,648,main.pedersen.segments[0].windows[8].mux.c[0][2] -1384,649,main.pedersen.segments[0].windows[8].mux.c[0][3] -1385,650,main.pedersen.segments[0].windows[8].mux.c[0][4] -1386,651,main.pedersen.segments[0].windows[8].mux.c[0][5] -1387,652,main.pedersen.segments[0].windows[8].mux.c[0][6] -1388,645,main.pedersen.segments[0].windows[8].mux.c[0][7] -1389,642,main.pedersen.segments[0].windows[8].mux.c[1][0] -1390,653,main.pedersen.segments[0].windows[8].mux.c[1][1] -1391,654,main.pedersen.segments[0].windows[8].mux.c[1][2] -1392,655,main.pedersen.segments[0].windows[8].mux.c[1][3] -1393,656,main.pedersen.segments[0].windows[8].mux.c[1][4] -1394,657,main.pedersen.segments[0].windows[8].mux.c[1][5] -1395,658,main.pedersen.segments[0].windows[8].mux.c[1][6] -1396,646,main.pedersen.segments[0].windows[8].mux.c[1][7] -1397,35,main.pedersen.segments[0].windows[8].mux.s[0] -1398,36,main.pedersen.segments[0].windows[8].mux.s[1] -1399,37,main.pedersen.segments[0].windows[8].mux.s[2] -1400,643,main.pedersen.segments[0].windows[8].mux.out[0] -1401,659,main.pedersen.segments[0].windows[8].mux.out[1] -1402,660,main.pedersen.segments[0].windows[8].mux.a210[0] -1403,661,main.pedersen.segments[0].windows[8].mux.a210[1] -1404,662,main.pedersen.segments[0].windows[8].mux.a21[0] -1405,663,main.pedersen.segments[0].windows[8].mux.a21[1] -1406,664,main.pedersen.segments[0].windows[8].mux.a20[0] -1407,665,main.pedersen.segments[0].windows[8].mux.a20[1] -1408,3399,main.pedersen.segments[0].windows[8].mux.a2[0] -1409,3400,main.pedersen.segments[0].windows[8].mux.a2[1] -1410,666,main.pedersen.segments[0].windows[8].mux.a10[0] -1411,667,main.pedersen.segments[0].windows[8].mux.a10[1] -1412,668,main.pedersen.segments[0].windows[8].mux.a1[0] -1413,669,main.pedersen.segments[0].windows[8].mux.a1[1] -1414,670,main.pedersen.segments[0].windows[8].mux.a0[0] -1415,671,main.pedersen.segments[0].windows[8].mux.a0[1] -1416,641,main.pedersen.segments[0].windows[8].mux.a[0] -1417,642,main.pedersen.segments[0].windows[8].mux.a[1] -1418,672,main.pedersen.segments[0].windows[8].mux.s10 -1419,641,main.pedersen.segments[0].windows[8].dbl2.in[0] -1420,642,main.pedersen.segments[0].windows[8].dbl2.in[1] -1421,647,main.pedersen.segments[0].windows[8].dbl2.out[0] -1422,653,main.pedersen.segments[0].windows[8].dbl2.out[1] -1423,673,main.pedersen.segments[0].windows[8].dbl2.lamda -1424,674,main.pedersen.segments[0].windows[8].dbl2.x1_2 -1425,641,main.pedersen.segments[0].windows[8].adr3.in1[0] -1426,642,main.pedersen.segments[0].windows[8].adr3.in1[1] -1427,647,main.pedersen.segments[0].windows[8].adr3.in2[0] -1428,653,main.pedersen.segments[0].windows[8].adr3.in2[1] -1429,648,main.pedersen.segments[0].windows[8].adr3.out[0] -1430,654,main.pedersen.segments[0].windows[8].adr3.out[1] -1431,675,main.pedersen.segments[0].windows[8].adr3.lamda -1432,641,main.pedersen.segments[0].windows[8].adr4.in1[0] -1433,642,main.pedersen.segments[0].windows[8].adr4.in1[1] -1434,648,main.pedersen.segments[0].windows[8].adr4.in2[0] -1435,654,main.pedersen.segments[0].windows[8].adr4.in2[1] -1436,649,main.pedersen.segments[0].windows[8].adr4.out[0] -1437,655,main.pedersen.segments[0].windows[8].adr4.out[1] -1438,676,main.pedersen.segments[0].windows[8].adr4.lamda -1439,641,main.pedersen.segments[0].windows[8].adr5.in1[0] -1440,642,main.pedersen.segments[0].windows[8].adr5.in1[1] -1441,649,main.pedersen.segments[0].windows[8].adr5.in2[0] -1442,655,main.pedersen.segments[0].windows[8].adr5.in2[1] -1443,650,main.pedersen.segments[0].windows[8].adr5.out[0] -1444,656,main.pedersen.segments[0].windows[8].adr5.out[1] -1445,677,main.pedersen.segments[0].windows[8].adr5.lamda -1446,641,main.pedersen.segments[0].windows[8].adr6.in1[0] -1447,642,main.pedersen.segments[0].windows[8].adr6.in1[1] -1448,650,main.pedersen.segments[0].windows[8].adr6.in2[0] -1449,656,main.pedersen.segments[0].windows[8].adr6.in2[1] -1450,651,main.pedersen.segments[0].windows[8].adr6.out[0] -1451,657,main.pedersen.segments[0].windows[8].adr6.out[1] -1452,678,main.pedersen.segments[0].windows[8].adr6.lamda -1453,641,main.pedersen.segments[0].windows[8].adr7.in1[0] -1454,642,main.pedersen.segments[0].windows[8].adr7.in1[1] -1455,651,main.pedersen.segments[0].windows[8].adr7.in2[0] -1456,657,main.pedersen.segments[0].windows[8].adr7.in2[1] -1457,652,main.pedersen.segments[0].windows[8].adr7.out[0] -1458,658,main.pedersen.segments[0].windows[8].adr7.out[1] -1459,679,main.pedersen.segments[0].windows[8].adr7.lamda -1460,641,main.pedersen.segments[0].windows[8].adr8.in1[0] -1461,642,main.pedersen.segments[0].windows[8].adr8.in1[1] -1462,652,main.pedersen.segments[0].windows[8].adr8.in2[0] -1463,658,main.pedersen.segments[0].windows[8].adr8.in2[1] -1464,645,main.pedersen.segments[0].windows[8].adr8.out[0] -1465,646,main.pedersen.segments[0].windows[8].adr8.out[1] -1466,680,main.pedersen.segments[0].windows[8].adr8.lamda -1486,39,main.pedersen.segments[0].windows[9].in[0] -1487,40,main.pedersen.segments[0].windows[9].in[1] -1488,41,main.pedersen.segments[0].windows[9].in[2] -1489,42,main.pedersen.segments[0].windows[9].in[3] -1490,690,main.pedersen.segments[0].windows[9].base[0] -1491,691,main.pedersen.segments[0].windows[9].base[1] -1492,692,main.pedersen.segments[0].windows[9].out[0] -1493,693,main.pedersen.segments[0].windows[9].out[1] -1494,694,main.pedersen.segments[0].windows[9].out8[0] -1495,695,main.pedersen.segments[0].windows[9].out8[1] -1496,690,main.pedersen.segments[0].windows[9].mux.c[0][0] -1497,696,main.pedersen.segments[0].windows[9].mux.c[0][1] -1498,697,main.pedersen.segments[0].windows[9].mux.c[0][2] -1499,698,main.pedersen.segments[0].windows[9].mux.c[0][3] -1500,699,main.pedersen.segments[0].windows[9].mux.c[0][4] -1501,700,main.pedersen.segments[0].windows[9].mux.c[0][5] -1502,701,main.pedersen.segments[0].windows[9].mux.c[0][6] -1503,694,main.pedersen.segments[0].windows[9].mux.c[0][7] -1504,691,main.pedersen.segments[0].windows[9].mux.c[1][0] -1505,702,main.pedersen.segments[0].windows[9].mux.c[1][1] -1506,703,main.pedersen.segments[0].windows[9].mux.c[1][2] -1507,704,main.pedersen.segments[0].windows[9].mux.c[1][3] -1508,705,main.pedersen.segments[0].windows[9].mux.c[1][4] -1509,706,main.pedersen.segments[0].windows[9].mux.c[1][5] -1510,707,main.pedersen.segments[0].windows[9].mux.c[1][6] -1511,695,main.pedersen.segments[0].windows[9].mux.c[1][7] -1512,39,main.pedersen.segments[0].windows[9].mux.s[0] -1513,40,main.pedersen.segments[0].windows[9].mux.s[1] -1514,41,main.pedersen.segments[0].windows[9].mux.s[2] -1515,692,main.pedersen.segments[0].windows[9].mux.out[0] -1516,708,main.pedersen.segments[0].windows[9].mux.out[1] -1517,709,main.pedersen.segments[0].windows[9].mux.a210[0] -1518,710,main.pedersen.segments[0].windows[9].mux.a210[1] -1519,711,main.pedersen.segments[0].windows[9].mux.a21[0] -1520,712,main.pedersen.segments[0].windows[9].mux.a21[1] -1521,713,main.pedersen.segments[0].windows[9].mux.a20[0] -1522,714,main.pedersen.segments[0].windows[9].mux.a20[1] -1523,3401,main.pedersen.segments[0].windows[9].mux.a2[0] -1524,3402,main.pedersen.segments[0].windows[9].mux.a2[1] -1525,715,main.pedersen.segments[0].windows[9].mux.a10[0] -1526,716,main.pedersen.segments[0].windows[9].mux.a10[1] -1527,717,main.pedersen.segments[0].windows[9].mux.a1[0] -1528,718,main.pedersen.segments[0].windows[9].mux.a1[1] -1529,719,main.pedersen.segments[0].windows[9].mux.a0[0] -1530,720,main.pedersen.segments[0].windows[9].mux.a0[1] -1531,690,main.pedersen.segments[0].windows[9].mux.a[0] -1532,691,main.pedersen.segments[0].windows[9].mux.a[1] -1533,721,main.pedersen.segments[0].windows[9].mux.s10 -1534,690,main.pedersen.segments[0].windows[9].dbl2.in[0] -1535,691,main.pedersen.segments[0].windows[9].dbl2.in[1] -1536,696,main.pedersen.segments[0].windows[9].dbl2.out[0] -1537,702,main.pedersen.segments[0].windows[9].dbl2.out[1] -1538,722,main.pedersen.segments[0].windows[9].dbl2.lamda -1539,723,main.pedersen.segments[0].windows[9].dbl2.x1_2 -1540,690,main.pedersen.segments[0].windows[9].adr3.in1[0] -1541,691,main.pedersen.segments[0].windows[9].adr3.in1[1] -1542,696,main.pedersen.segments[0].windows[9].adr3.in2[0] -1543,702,main.pedersen.segments[0].windows[9].adr3.in2[1] -1544,697,main.pedersen.segments[0].windows[9].adr3.out[0] -1545,703,main.pedersen.segments[0].windows[9].adr3.out[1] -1546,724,main.pedersen.segments[0].windows[9].adr3.lamda -1547,690,main.pedersen.segments[0].windows[9].adr4.in1[0] -1548,691,main.pedersen.segments[0].windows[9].adr4.in1[1] -1549,697,main.pedersen.segments[0].windows[9].adr4.in2[0] -1550,703,main.pedersen.segments[0].windows[9].adr4.in2[1] -1551,698,main.pedersen.segments[0].windows[9].adr4.out[0] -1552,704,main.pedersen.segments[0].windows[9].adr4.out[1] -1553,725,main.pedersen.segments[0].windows[9].adr4.lamda -1554,690,main.pedersen.segments[0].windows[9].adr5.in1[0] -1555,691,main.pedersen.segments[0].windows[9].adr5.in1[1] -1556,698,main.pedersen.segments[0].windows[9].adr5.in2[0] -1557,704,main.pedersen.segments[0].windows[9].adr5.in2[1] -1558,699,main.pedersen.segments[0].windows[9].adr5.out[0] -1559,705,main.pedersen.segments[0].windows[9].adr5.out[1] -1560,726,main.pedersen.segments[0].windows[9].adr5.lamda -1561,690,main.pedersen.segments[0].windows[9].adr6.in1[0] -1562,691,main.pedersen.segments[0].windows[9].adr6.in1[1] -1563,699,main.pedersen.segments[0].windows[9].adr6.in2[0] -1564,705,main.pedersen.segments[0].windows[9].adr6.in2[1] -1565,700,main.pedersen.segments[0].windows[9].adr6.out[0] -1566,706,main.pedersen.segments[0].windows[9].adr6.out[1] -1567,727,main.pedersen.segments[0].windows[9].adr6.lamda -1568,690,main.pedersen.segments[0].windows[9].adr7.in1[0] -1569,691,main.pedersen.segments[0].windows[9].adr7.in1[1] -1570,700,main.pedersen.segments[0].windows[9].adr7.in2[0] -1571,706,main.pedersen.segments[0].windows[9].adr7.in2[1] -1572,701,main.pedersen.segments[0].windows[9].adr7.out[0] -1573,707,main.pedersen.segments[0].windows[9].adr7.out[1] -1574,728,main.pedersen.segments[0].windows[9].adr7.lamda -1575,690,main.pedersen.segments[0].windows[9].adr8.in1[0] -1576,691,main.pedersen.segments[0].windows[9].adr8.in1[1] -1577,701,main.pedersen.segments[0].windows[9].adr8.in2[0] -1578,707,main.pedersen.segments[0].windows[9].adr8.in2[1] -1579,694,main.pedersen.segments[0].windows[9].adr8.out[0] -1580,695,main.pedersen.segments[0].windows[9].adr8.out[1] -1581,729,main.pedersen.segments[0].windows[9].adr8.lamda -1601,43,main.pedersen.segments[0].windows[10].in[0] -1602,44,main.pedersen.segments[0].windows[10].in[1] -1603,45,main.pedersen.segments[0].windows[10].in[2] -1604,46,main.pedersen.segments[0].windows[10].in[3] -1605,739,main.pedersen.segments[0].windows[10].base[0] -1606,740,main.pedersen.segments[0].windows[10].base[1] -1607,741,main.pedersen.segments[0].windows[10].out[0] -1608,742,main.pedersen.segments[0].windows[10].out[1] -1609,743,main.pedersen.segments[0].windows[10].out8[0] -1610,744,main.pedersen.segments[0].windows[10].out8[1] -1611,739,main.pedersen.segments[0].windows[10].mux.c[0][0] -1612,745,main.pedersen.segments[0].windows[10].mux.c[0][1] -1613,746,main.pedersen.segments[0].windows[10].mux.c[0][2] -1614,747,main.pedersen.segments[0].windows[10].mux.c[0][3] -1615,748,main.pedersen.segments[0].windows[10].mux.c[0][4] -1616,749,main.pedersen.segments[0].windows[10].mux.c[0][5] -1617,750,main.pedersen.segments[0].windows[10].mux.c[0][6] -1618,743,main.pedersen.segments[0].windows[10].mux.c[0][7] -1619,740,main.pedersen.segments[0].windows[10].mux.c[1][0] -1620,751,main.pedersen.segments[0].windows[10].mux.c[1][1] -1621,752,main.pedersen.segments[0].windows[10].mux.c[1][2] -1622,753,main.pedersen.segments[0].windows[10].mux.c[1][3] -1623,754,main.pedersen.segments[0].windows[10].mux.c[1][4] -1624,755,main.pedersen.segments[0].windows[10].mux.c[1][5] -1625,756,main.pedersen.segments[0].windows[10].mux.c[1][6] -1626,744,main.pedersen.segments[0].windows[10].mux.c[1][7] -1627,43,main.pedersen.segments[0].windows[10].mux.s[0] -1628,44,main.pedersen.segments[0].windows[10].mux.s[1] -1629,45,main.pedersen.segments[0].windows[10].mux.s[2] -1630,741,main.pedersen.segments[0].windows[10].mux.out[0] -1631,757,main.pedersen.segments[0].windows[10].mux.out[1] -1632,758,main.pedersen.segments[0].windows[10].mux.a210[0] -1633,759,main.pedersen.segments[0].windows[10].mux.a210[1] -1634,760,main.pedersen.segments[0].windows[10].mux.a21[0] -1635,761,main.pedersen.segments[0].windows[10].mux.a21[1] -1636,762,main.pedersen.segments[0].windows[10].mux.a20[0] -1637,763,main.pedersen.segments[0].windows[10].mux.a20[1] -1638,3403,main.pedersen.segments[0].windows[10].mux.a2[0] -1639,3404,main.pedersen.segments[0].windows[10].mux.a2[1] -1640,764,main.pedersen.segments[0].windows[10].mux.a10[0] -1641,765,main.pedersen.segments[0].windows[10].mux.a10[1] -1642,766,main.pedersen.segments[0].windows[10].mux.a1[0] -1643,767,main.pedersen.segments[0].windows[10].mux.a1[1] -1644,768,main.pedersen.segments[0].windows[10].mux.a0[0] -1645,769,main.pedersen.segments[0].windows[10].mux.a0[1] -1646,739,main.pedersen.segments[0].windows[10].mux.a[0] -1647,740,main.pedersen.segments[0].windows[10].mux.a[1] -1648,770,main.pedersen.segments[0].windows[10].mux.s10 -1649,739,main.pedersen.segments[0].windows[10].dbl2.in[0] -1650,740,main.pedersen.segments[0].windows[10].dbl2.in[1] -1651,745,main.pedersen.segments[0].windows[10].dbl2.out[0] -1652,751,main.pedersen.segments[0].windows[10].dbl2.out[1] -1653,771,main.pedersen.segments[0].windows[10].dbl2.lamda -1654,772,main.pedersen.segments[0].windows[10].dbl2.x1_2 -1655,739,main.pedersen.segments[0].windows[10].adr3.in1[0] -1656,740,main.pedersen.segments[0].windows[10].adr3.in1[1] -1657,745,main.pedersen.segments[0].windows[10].adr3.in2[0] -1658,751,main.pedersen.segments[0].windows[10].adr3.in2[1] -1659,746,main.pedersen.segments[0].windows[10].adr3.out[0] -1660,752,main.pedersen.segments[0].windows[10].adr3.out[1] -1661,773,main.pedersen.segments[0].windows[10].adr3.lamda -1662,739,main.pedersen.segments[0].windows[10].adr4.in1[0] -1663,740,main.pedersen.segments[0].windows[10].adr4.in1[1] -1664,746,main.pedersen.segments[0].windows[10].adr4.in2[0] -1665,752,main.pedersen.segments[0].windows[10].adr4.in2[1] -1666,747,main.pedersen.segments[0].windows[10].adr4.out[0] -1667,753,main.pedersen.segments[0].windows[10].adr4.out[1] -1668,774,main.pedersen.segments[0].windows[10].adr4.lamda -1669,739,main.pedersen.segments[0].windows[10].adr5.in1[0] -1670,740,main.pedersen.segments[0].windows[10].adr5.in1[1] -1671,747,main.pedersen.segments[0].windows[10].adr5.in2[0] -1672,753,main.pedersen.segments[0].windows[10].adr5.in2[1] -1673,748,main.pedersen.segments[0].windows[10].adr5.out[0] -1674,754,main.pedersen.segments[0].windows[10].adr5.out[1] -1675,775,main.pedersen.segments[0].windows[10].adr5.lamda -1676,739,main.pedersen.segments[0].windows[10].adr6.in1[0] -1677,740,main.pedersen.segments[0].windows[10].adr6.in1[1] -1678,748,main.pedersen.segments[0].windows[10].adr6.in2[0] -1679,754,main.pedersen.segments[0].windows[10].adr6.in2[1] -1680,749,main.pedersen.segments[0].windows[10].adr6.out[0] -1681,755,main.pedersen.segments[0].windows[10].adr6.out[1] -1682,776,main.pedersen.segments[0].windows[10].adr6.lamda -1683,739,main.pedersen.segments[0].windows[10].adr7.in1[0] -1684,740,main.pedersen.segments[0].windows[10].adr7.in1[1] -1685,749,main.pedersen.segments[0].windows[10].adr7.in2[0] -1686,755,main.pedersen.segments[0].windows[10].adr7.in2[1] -1687,750,main.pedersen.segments[0].windows[10].adr7.out[0] -1688,756,main.pedersen.segments[0].windows[10].adr7.out[1] -1689,777,main.pedersen.segments[0].windows[10].adr7.lamda -1690,739,main.pedersen.segments[0].windows[10].adr8.in1[0] -1691,740,main.pedersen.segments[0].windows[10].adr8.in1[1] -1692,750,main.pedersen.segments[0].windows[10].adr8.in2[0] -1693,756,main.pedersen.segments[0].windows[10].adr8.in2[1] -1694,743,main.pedersen.segments[0].windows[10].adr8.out[0] -1695,744,main.pedersen.segments[0].windows[10].adr8.out[1] -1696,778,main.pedersen.segments[0].windows[10].adr8.lamda -1716,47,main.pedersen.segments[0].windows[11].in[0] -1717,48,main.pedersen.segments[0].windows[11].in[1] -1718,49,main.pedersen.segments[0].windows[11].in[2] -1719,50,main.pedersen.segments[0].windows[11].in[3] -1720,788,main.pedersen.segments[0].windows[11].base[0] -1721,789,main.pedersen.segments[0].windows[11].base[1] -1722,790,main.pedersen.segments[0].windows[11].out[0] -1723,791,main.pedersen.segments[0].windows[11].out[1] -1724,792,main.pedersen.segments[0].windows[11].out8[0] -1725,793,main.pedersen.segments[0].windows[11].out8[1] -1726,788,main.pedersen.segments[0].windows[11].mux.c[0][0] -1727,794,main.pedersen.segments[0].windows[11].mux.c[0][1] -1728,795,main.pedersen.segments[0].windows[11].mux.c[0][2] -1729,796,main.pedersen.segments[0].windows[11].mux.c[0][3] -1730,797,main.pedersen.segments[0].windows[11].mux.c[0][4] -1731,798,main.pedersen.segments[0].windows[11].mux.c[0][5] -1732,799,main.pedersen.segments[0].windows[11].mux.c[0][6] -1733,792,main.pedersen.segments[0].windows[11].mux.c[0][7] -1734,789,main.pedersen.segments[0].windows[11].mux.c[1][0] -1735,800,main.pedersen.segments[0].windows[11].mux.c[1][1] -1736,801,main.pedersen.segments[0].windows[11].mux.c[1][2] -1737,802,main.pedersen.segments[0].windows[11].mux.c[1][3] -1738,803,main.pedersen.segments[0].windows[11].mux.c[1][4] -1739,804,main.pedersen.segments[0].windows[11].mux.c[1][5] -1740,805,main.pedersen.segments[0].windows[11].mux.c[1][6] -1741,793,main.pedersen.segments[0].windows[11].mux.c[1][7] -1742,47,main.pedersen.segments[0].windows[11].mux.s[0] -1743,48,main.pedersen.segments[0].windows[11].mux.s[1] -1744,49,main.pedersen.segments[0].windows[11].mux.s[2] -1745,790,main.pedersen.segments[0].windows[11].mux.out[0] -1746,806,main.pedersen.segments[0].windows[11].mux.out[1] -1747,807,main.pedersen.segments[0].windows[11].mux.a210[0] -1748,808,main.pedersen.segments[0].windows[11].mux.a210[1] -1749,809,main.pedersen.segments[0].windows[11].mux.a21[0] -1750,810,main.pedersen.segments[0].windows[11].mux.a21[1] -1751,811,main.pedersen.segments[0].windows[11].mux.a20[0] -1752,812,main.pedersen.segments[0].windows[11].mux.a20[1] -1753,3405,main.pedersen.segments[0].windows[11].mux.a2[0] -1754,3406,main.pedersen.segments[0].windows[11].mux.a2[1] -1755,813,main.pedersen.segments[0].windows[11].mux.a10[0] -1756,814,main.pedersen.segments[0].windows[11].mux.a10[1] -1757,815,main.pedersen.segments[0].windows[11].mux.a1[0] -1758,816,main.pedersen.segments[0].windows[11].mux.a1[1] -1759,817,main.pedersen.segments[0].windows[11].mux.a0[0] -1760,818,main.pedersen.segments[0].windows[11].mux.a0[1] -1761,788,main.pedersen.segments[0].windows[11].mux.a[0] -1762,789,main.pedersen.segments[0].windows[11].mux.a[1] -1763,819,main.pedersen.segments[0].windows[11].mux.s10 -1764,788,main.pedersen.segments[0].windows[11].dbl2.in[0] -1765,789,main.pedersen.segments[0].windows[11].dbl2.in[1] -1766,794,main.pedersen.segments[0].windows[11].dbl2.out[0] -1767,800,main.pedersen.segments[0].windows[11].dbl2.out[1] -1768,820,main.pedersen.segments[0].windows[11].dbl2.lamda -1769,821,main.pedersen.segments[0].windows[11].dbl2.x1_2 -1770,788,main.pedersen.segments[0].windows[11].adr3.in1[0] -1771,789,main.pedersen.segments[0].windows[11].adr3.in1[1] -1772,794,main.pedersen.segments[0].windows[11].adr3.in2[0] -1773,800,main.pedersen.segments[0].windows[11].adr3.in2[1] -1774,795,main.pedersen.segments[0].windows[11].adr3.out[0] -1775,801,main.pedersen.segments[0].windows[11].adr3.out[1] -1776,822,main.pedersen.segments[0].windows[11].adr3.lamda -1777,788,main.pedersen.segments[0].windows[11].adr4.in1[0] -1778,789,main.pedersen.segments[0].windows[11].adr4.in1[1] -1779,795,main.pedersen.segments[0].windows[11].adr4.in2[0] -1780,801,main.pedersen.segments[0].windows[11].adr4.in2[1] -1781,796,main.pedersen.segments[0].windows[11].adr4.out[0] -1782,802,main.pedersen.segments[0].windows[11].adr4.out[1] -1783,823,main.pedersen.segments[0].windows[11].adr4.lamda -1784,788,main.pedersen.segments[0].windows[11].adr5.in1[0] -1785,789,main.pedersen.segments[0].windows[11].adr5.in1[1] -1786,796,main.pedersen.segments[0].windows[11].adr5.in2[0] -1787,802,main.pedersen.segments[0].windows[11].adr5.in2[1] -1788,797,main.pedersen.segments[0].windows[11].adr5.out[0] -1789,803,main.pedersen.segments[0].windows[11].adr5.out[1] -1790,824,main.pedersen.segments[0].windows[11].adr5.lamda -1791,788,main.pedersen.segments[0].windows[11].adr6.in1[0] -1792,789,main.pedersen.segments[0].windows[11].adr6.in1[1] -1793,797,main.pedersen.segments[0].windows[11].adr6.in2[0] -1794,803,main.pedersen.segments[0].windows[11].adr6.in2[1] -1795,798,main.pedersen.segments[0].windows[11].adr6.out[0] -1796,804,main.pedersen.segments[0].windows[11].adr6.out[1] -1797,825,main.pedersen.segments[0].windows[11].adr6.lamda -1798,788,main.pedersen.segments[0].windows[11].adr7.in1[0] -1799,789,main.pedersen.segments[0].windows[11].adr7.in1[1] -1800,798,main.pedersen.segments[0].windows[11].adr7.in2[0] -1801,804,main.pedersen.segments[0].windows[11].adr7.in2[1] -1802,799,main.pedersen.segments[0].windows[11].adr7.out[0] -1803,805,main.pedersen.segments[0].windows[11].adr7.out[1] -1804,826,main.pedersen.segments[0].windows[11].adr7.lamda -1805,788,main.pedersen.segments[0].windows[11].adr8.in1[0] -1806,789,main.pedersen.segments[0].windows[11].adr8.in1[1] -1807,799,main.pedersen.segments[0].windows[11].adr8.in2[0] -1808,805,main.pedersen.segments[0].windows[11].adr8.in2[1] -1809,792,main.pedersen.segments[0].windows[11].adr8.out[0] -1810,793,main.pedersen.segments[0].windows[11].adr8.out[1] -1811,827,main.pedersen.segments[0].windows[11].adr8.lamda -1831,51,main.pedersen.segments[0].windows[12].in[0] -1832,52,main.pedersen.segments[0].windows[12].in[1] -1833,53,main.pedersen.segments[0].windows[12].in[2] -1834,54,main.pedersen.segments[0].windows[12].in[3] -1835,837,main.pedersen.segments[0].windows[12].base[0] -1836,838,main.pedersen.segments[0].windows[12].base[1] -1837,839,main.pedersen.segments[0].windows[12].out[0] -1838,840,main.pedersen.segments[0].windows[12].out[1] -1839,841,main.pedersen.segments[0].windows[12].out8[0] -1840,842,main.pedersen.segments[0].windows[12].out8[1] -1841,837,main.pedersen.segments[0].windows[12].mux.c[0][0] -1842,843,main.pedersen.segments[0].windows[12].mux.c[0][1] -1843,844,main.pedersen.segments[0].windows[12].mux.c[0][2] -1844,845,main.pedersen.segments[0].windows[12].mux.c[0][3] -1845,846,main.pedersen.segments[0].windows[12].mux.c[0][4] -1846,847,main.pedersen.segments[0].windows[12].mux.c[0][5] -1847,848,main.pedersen.segments[0].windows[12].mux.c[0][6] -1848,841,main.pedersen.segments[0].windows[12].mux.c[0][7] -1849,838,main.pedersen.segments[0].windows[12].mux.c[1][0] -1850,849,main.pedersen.segments[0].windows[12].mux.c[1][1] -1851,850,main.pedersen.segments[0].windows[12].mux.c[1][2] -1852,851,main.pedersen.segments[0].windows[12].mux.c[1][3] -1853,852,main.pedersen.segments[0].windows[12].mux.c[1][4] -1854,853,main.pedersen.segments[0].windows[12].mux.c[1][5] -1855,854,main.pedersen.segments[0].windows[12].mux.c[1][6] -1856,842,main.pedersen.segments[0].windows[12].mux.c[1][7] -1857,51,main.pedersen.segments[0].windows[12].mux.s[0] -1858,52,main.pedersen.segments[0].windows[12].mux.s[1] -1859,53,main.pedersen.segments[0].windows[12].mux.s[2] -1860,839,main.pedersen.segments[0].windows[12].mux.out[0] -1861,855,main.pedersen.segments[0].windows[12].mux.out[1] -1862,856,main.pedersen.segments[0].windows[12].mux.a210[0] -1863,857,main.pedersen.segments[0].windows[12].mux.a210[1] -1864,858,main.pedersen.segments[0].windows[12].mux.a21[0] -1865,859,main.pedersen.segments[0].windows[12].mux.a21[1] -1866,860,main.pedersen.segments[0].windows[12].mux.a20[0] -1867,861,main.pedersen.segments[0].windows[12].mux.a20[1] -1868,3407,main.pedersen.segments[0].windows[12].mux.a2[0] -1869,3408,main.pedersen.segments[0].windows[12].mux.a2[1] -1870,862,main.pedersen.segments[0].windows[12].mux.a10[0] -1871,863,main.pedersen.segments[0].windows[12].mux.a10[1] -1872,864,main.pedersen.segments[0].windows[12].mux.a1[0] -1873,865,main.pedersen.segments[0].windows[12].mux.a1[1] -1874,866,main.pedersen.segments[0].windows[12].mux.a0[0] -1875,867,main.pedersen.segments[0].windows[12].mux.a0[1] -1876,837,main.pedersen.segments[0].windows[12].mux.a[0] -1877,838,main.pedersen.segments[0].windows[12].mux.a[1] -1878,868,main.pedersen.segments[0].windows[12].mux.s10 -1879,837,main.pedersen.segments[0].windows[12].dbl2.in[0] -1880,838,main.pedersen.segments[0].windows[12].dbl2.in[1] -1881,843,main.pedersen.segments[0].windows[12].dbl2.out[0] -1882,849,main.pedersen.segments[0].windows[12].dbl2.out[1] -1883,869,main.pedersen.segments[0].windows[12].dbl2.lamda -1884,870,main.pedersen.segments[0].windows[12].dbl2.x1_2 -1885,837,main.pedersen.segments[0].windows[12].adr3.in1[0] -1886,838,main.pedersen.segments[0].windows[12].adr3.in1[1] -1887,843,main.pedersen.segments[0].windows[12].adr3.in2[0] -1888,849,main.pedersen.segments[0].windows[12].adr3.in2[1] -1889,844,main.pedersen.segments[0].windows[12].adr3.out[0] -1890,850,main.pedersen.segments[0].windows[12].adr3.out[1] -1891,871,main.pedersen.segments[0].windows[12].adr3.lamda -1892,837,main.pedersen.segments[0].windows[12].adr4.in1[0] -1893,838,main.pedersen.segments[0].windows[12].adr4.in1[1] -1894,844,main.pedersen.segments[0].windows[12].adr4.in2[0] -1895,850,main.pedersen.segments[0].windows[12].adr4.in2[1] -1896,845,main.pedersen.segments[0].windows[12].adr4.out[0] -1897,851,main.pedersen.segments[0].windows[12].adr4.out[1] -1898,872,main.pedersen.segments[0].windows[12].adr4.lamda -1899,837,main.pedersen.segments[0].windows[12].adr5.in1[0] -1900,838,main.pedersen.segments[0].windows[12].adr5.in1[1] -1901,845,main.pedersen.segments[0].windows[12].adr5.in2[0] -1902,851,main.pedersen.segments[0].windows[12].adr5.in2[1] -1903,846,main.pedersen.segments[0].windows[12].adr5.out[0] -1904,852,main.pedersen.segments[0].windows[12].adr5.out[1] -1905,873,main.pedersen.segments[0].windows[12].adr5.lamda -1906,837,main.pedersen.segments[0].windows[12].adr6.in1[0] -1907,838,main.pedersen.segments[0].windows[12].adr6.in1[1] -1908,846,main.pedersen.segments[0].windows[12].adr6.in2[0] -1909,852,main.pedersen.segments[0].windows[12].adr6.in2[1] -1910,847,main.pedersen.segments[0].windows[12].adr6.out[0] -1911,853,main.pedersen.segments[0].windows[12].adr6.out[1] -1912,874,main.pedersen.segments[0].windows[12].adr6.lamda -1913,837,main.pedersen.segments[0].windows[12].adr7.in1[0] -1914,838,main.pedersen.segments[0].windows[12].adr7.in1[1] -1915,847,main.pedersen.segments[0].windows[12].adr7.in2[0] -1916,853,main.pedersen.segments[0].windows[12].adr7.in2[1] -1917,848,main.pedersen.segments[0].windows[12].adr7.out[0] -1918,854,main.pedersen.segments[0].windows[12].adr7.out[1] -1919,875,main.pedersen.segments[0].windows[12].adr7.lamda -1920,837,main.pedersen.segments[0].windows[12].adr8.in1[0] -1921,838,main.pedersen.segments[0].windows[12].adr8.in1[1] -1922,848,main.pedersen.segments[0].windows[12].adr8.in2[0] -1923,854,main.pedersen.segments[0].windows[12].adr8.in2[1] -1924,841,main.pedersen.segments[0].windows[12].adr8.out[0] -1925,842,main.pedersen.segments[0].windows[12].adr8.out[1] -1926,876,main.pedersen.segments[0].windows[12].adr8.lamda -1946,55,main.pedersen.segments[0].windows[13].in[0] -1947,56,main.pedersen.segments[0].windows[13].in[1] -1948,57,main.pedersen.segments[0].windows[13].in[2] -1949,58,main.pedersen.segments[0].windows[13].in[3] -1950,886,main.pedersen.segments[0].windows[13].base[0] -1951,887,main.pedersen.segments[0].windows[13].base[1] -1952,888,main.pedersen.segments[0].windows[13].out[0] -1953,889,main.pedersen.segments[0].windows[13].out[1] -1954,890,main.pedersen.segments[0].windows[13].out8[0] -1955,891,main.pedersen.segments[0].windows[13].out8[1] -1956,886,main.pedersen.segments[0].windows[13].mux.c[0][0] -1957,892,main.pedersen.segments[0].windows[13].mux.c[0][1] -1958,893,main.pedersen.segments[0].windows[13].mux.c[0][2] -1959,894,main.pedersen.segments[0].windows[13].mux.c[0][3] -1960,895,main.pedersen.segments[0].windows[13].mux.c[0][4] -1961,896,main.pedersen.segments[0].windows[13].mux.c[0][5] -1962,897,main.pedersen.segments[0].windows[13].mux.c[0][6] -1963,890,main.pedersen.segments[0].windows[13].mux.c[0][7] -1964,887,main.pedersen.segments[0].windows[13].mux.c[1][0] -1965,898,main.pedersen.segments[0].windows[13].mux.c[1][1] -1966,899,main.pedersen.segments[0].windows[13].mux.c[1][2] -1967,900,main.pedersen.segments[0].windows[13].mux.c[1][3] -1968,901,main.pedersen.segments[0].windows[13].mux.c[1][4] -1969,902,main.pedersen.segments[0].windows[13].mux.c[1][5] -1970,903,main.pedersen.segments[0].windows[13].mux.c[1][6] -1971,891,main.pedersen.segments[0].windows[13].mux.c[1][7] -1972,55,main.pedersen.segments[0].windows[13].mux.s[0] -1973,56,main.pedersen.segments[0].windows[13].mux.s[1] -1974,57,main.pedersen.segments[0].windows[13].mux.s[2] -1975,888,main.pedersen.segments[0].windows[13].mux.out[0] -1976,904,main.pedersen.segments[0].windows[13].mux.out[1] -1977,905,main.pedersen.segments[0].windows[13].mux.a210[0] -1978,906,main.pedersen.segments[0].windows[13].mux.a210[1] -1979,907,main.pedersen.segments[0].windows[13].mux.a21[0] -1980,908,main.pedersen.segments[0].windows[13].mux.a21[1] -1981,909,main.pedersen.segments[0].windows[13].mux.a20[0] -1982,910,main.pedersen.segments[0].windows[13].mux.a20[1] -1983,3409,main.pedersen.segments[0].windows[13].mux.a2[0] -1984,3410,main.pedersen.segments[0].windows[13].mux.a2[1] -1985,911,main.pedersen.segments[0].windows[13].mux.a10[0] -1986,912,main.pedersen.segments[0].windows[13].mux.a10[1] -1987,913,main.pedersen.segments[0].windows[13].mux.a1[0] -1988,914,main.pedersen.segments[0].windows[13].mux.a1[1] -1989,915,main.pedersen.segments[0].windows[13].mux.a0[0] -1990,916,main.pedersen.segments[0].windows[13].mux.a0[1] -1991,886,main.pedersen.segments[0].windows[13].mux.a[0] -1992,887,main.pedersen.segments[0].windows[13].mux.a[1] -1993,917,main.pedersen.segments[0].windows[13].mux.s10 -1994,886,main.pedersen.segments[0].windows[13].dbl2.in[0] -1995,887,main.pedersen.segments[0].windows[13].dbl2.in[1] -1996,892,main.pedersen.segments[0].windows[13].dbl2.out[0] -1997,898,main.pedersen.segments[0].windows[13].dbl2.out[1] -1998,918,main.pedersen.segments[0].windows[13].dbl2.lamda -1999,919,main.pedersen.segments[0].windows[13].dbl2.x1_2 -2000,886,main.pedersen.segments[0].windows[13].adr3.in1[0] -2001,887,main.pedersen.segments[0].windows[13].adr3.in1[1] -2002,892,main.pedersen.segments[0].windows[13].adr3.in2[0] -2003,898,main.pedersen.segments[0].windows[13].adr3.in2[1] -2004,893,main.pedersen.segments[0].windows[13].adr3.out[0] -2005,899,main.pedersen.segments[0].windows[13].adr3.out[1] -2006,920,main.pedersen.segments[0].windows[13].adr3.lamda -2007,886,main.pedersen.segments[0].windows[13].adr4.in1[0] -2008,887,main.pedersen.segments[0].windows[13].adr4.in1[1] -2009,893,main.pedersen.segments[0].windows[13].adr4.in2[0] -2010,899,main.pedersen.segments[0].windows[13].adr4.in2[1] -2011,894,main.pedersen.segments[0].windows[13].adr4.out[0] -2012,900,main.pedersen.segments[0].windows[13].adr4.out[1] -2013,921,main.pedersen.segments[0].windows[13].adr4.lamda -2014,886,main.pedersen.segments[0].windows[13].adr5.in1[0] -2015,887,main.pedersen.segments[0].windows[13].adr5.in1[1] -2016,894,main.pedersen.segments[0].windows[13].adr5.in2[0] -2017,900,main.pedersen.segments[0].windows[13].adr5.in2[1] -2018,895,main.pedersen.segments[0].windows[13].adr5.out[0] -2019,901,main.pedersen.segments[0].windows[13].adr5.out[1] -2020,922,main.pedersen.segments[0].windows[13].adr5.lamda -2021,886,main.pedersen.segments[0].windows[13].adr6.in1[0] -2022,887,main.pedersen.segments[0].windows[13].adr6.in1[1] -2023,895,main.pedersen.segments[0].windows[13].adr6.in2[0] -2024,901,main.pedersen.segments[0].windows[13].adr6.in2[1] -2025,896,main.pedersen.segments[0].windows[13].adr6.out[0] -2026,902,main.pedersen.segments[0].windows[13].adr6.out[1] -2027,923,main.pedersen.segments[0].windows[13].adr6.lamda -2028,886,main.pedersen.segments[0].windows[13].adr7.in1[0] -2029,887,main.pedersen.segments[0].windows[13].adr7.in1[1] -2030,896,main.pedersen.segments[0].windows[13].adr7.in2[0] -2031,902,main.pedersen.segments[0].windows[13].adr7.in2[1] -2032,897,main.pedersen.segments[0].windows[13].adr7.out[0] -2033,903,main.pedersen.segments[0].windows[13].adr7.out[1] -2034,924,main.pedersen.segments[0].windows[13].adr7.lamda -2035,886,main.pedersen.segments[0].windows[13].adr8.in1[0] -2036,887,main.pedersen.segments[0].windows[13].adr8.in1[1] -2037,897,main.pedersen.segments[0].windows[13].adr8.in2[0] -2038,903,main.pedersen.segments[0].windows[13].adr8.in2[1] -2039,890,main.pedersen.segments[0].windows[13].adr8.out[0] -2040,891,main.pedersen.segments[0].windows[13].adr8.out[1] -2041,925,main.pedersen.segments[0].windows[13].adr8.lamda -2061,59,main.pedersen.segments[0].windows[14].in[0] -2062,60,main.pedersen.segments[0].windows[14].in[1] -2063,61,main.pedersen.segments[0].windows[14].in[2] -2064,62,main.pedersen.segments[0].windows[14].in[3] -2065,935,main.pedersen.segments[0].windows[14].base[0] -2066,936,main.pedersen.segments[0].windows[14].base[1] -2067,937,main.pedersen.segments[0].windows[14].out[0] -2068,938,main.pedersen.segments[0].windows[14].out[1] -2069,939,main.pedersen.segments[0].windows[14].out8[0] -2070,940,main.pedersen.segments[0].windows[14].out8[1] -2071,935,main.pedersen.segments[0].windows[14].mux.c[0][0] -2072,941,main.pedersen.segments[0].windows[14].mux.c[0][1] -2073,942,main.pedersen.segments[0].windows[14].mux.c[0][2] -2074,943,main.pedersen.segments[0].windows[14].mux.c[0][3] -2075,944,main.pedersen.segments[0].windows[14].mux.c[0][4] -2076,945,main.pedersen.segments[0].windows[14].mux.c[0][5] -2077,946,main.pedersen.segments[0].windows[14].mux.c[0][6] -2078,939,main.pedersen.segments[0].windows[14].mux.c[0][7] -2079,936,main.pedersen.segments[0].windows[14].mux.c[1][0] -2080,947,main.pedersen.segments[0].windows[14].mux.c[1][1] -2081,948,main.pedersen.segments[0].windows[14].mux.c[1][2] -2082,949,main.pedersen.segments[0].windows[14].mux.c[1][3] -2083,950,main.pedersen.segments[0].windows[14].mux.c[1][4] -2084,951,main.pedersen.segments[0].windows[14].mux.c[1][5] -2085,952,main.pedersen.segments[0].windows[14].mux.c[1][6] -2086,940,main.pedersen.segments[0].windows[14].mux.c[1][7] -2087,59,main.pedersen.segments[0].windows[14].mux.s[0] -2088,60,main.pedersen.segments[0].windows[14].mux.s[1] -2089,61,main.pedersen.segments[0].windows[14].mux.s[2] -2090,937,main.pedersen.segments[0].windows[14].mux.out[0] -2091,953,main.pedersen.segments[0].windows[14].mux.out[1] -2092,954,main.pedersen.segments[0].windows[14].mux.a210[0] -2093,955,main.pedersen.segments[0].windows[14].mux.a210[1] -2094,956,main.pedersen.segments[0].windows[14].mux.a21[0] -2095,957,main.pedersen.segments[0].windows[14].mux.a21[1] -2096,958,main.pedersen.segments[0].windows[14].mux.a20[0] -2097,959,main.pedersen.segments[0].windows[14].mux.a20[1] -2098,3411,main.pedersen.segments[0].windows[14].mux.a2[0] -2099,3412,main.pedersen.segments[0].windows[14].mux.a2[1] -2100,960,main.pedersen.segments[0].windows[14].mux.a10[0] -2101,961,main.pedersen.segments[0].windows[14].mux.a10[1] -2102,962,main.pedersen.segments[0].windows[14].mux.a1[0] -2103,963,main.pedersen.segments[0].windows[14].mux.a1[1] -2104,964,main.pedersen.segments[0].windows[14].mux.a0[0] -2105,965,main.pedersen.segments[0].windows[14].mux.a0[1] -2106,935,main.pedersen.segments[0].windows[14].mux.a[0] -2107,936,main.pedersen.segments[0].windows[14].mux.a[1] -2108,966,main.pedersen.segments[0].windows[14].mux.s10 -2109,935,main.pedersen.segments[0].windows[14].dbl2.in[0] -2110,936,main.pedersen.segments[0].windows[14].dbl2.in[1] -2111,941,main.pedersen.segments[0].windows[14].dbl2.out[0] -2112,947,main.pedersen.segments[0].windows[14].dbl2.out[1] -2113,967,main.pedersen.segments[0].windows[14].dbl2.lamda -2114,968,main.pedersen.segments[0].windows[14].dbl2.x1_2 -2115,935,main.pedersen.segments[0].windows[14].adr3.in1[0] -2116,936,main.pedersen.segments[0].windows[14].adr3.in1[1] -2117,941,main.pedersen.segments[0].windows[14].adr3.in2[0] -2118,947,main.pedersen.segments[0].windows[14].adr3.in2[1] -2119,942,main.pedersen.segments[0].windows[14].adr3.out[0] -2120,948,main.pedersen.segments[0].windows[14].adr3.out[1] -2121,969,main.pedersen.segments[0].windows[14].adr3.lamda -2122,935,main.pedersen.segments[0].windows[14].adr4.in1[0] -2123,936,main.pedersen.segments[0].windows[14].adr4.in1[1] -2124,942,main.pedersen.segments[0].windows[14].adr4.in2[0] -2125,948,main.pedersen.segments[0].windows[14].adr4.in2[1] -2126,943,main.pedersen.segments[0].windows[14].adr4.out[0] -2127,949,main.pedersen.segments[0].windows[14].adr4.out[1] -2128,970,main.pedersen.segments[0].windows[14].adr4.lamda -2129,935,main.pedersen.segments[0].windows[14].adr5.in1[0] -2130,936,main.pedersen.segments[0].windows[14].adr5.in1[1] -2131,943,main.pedersen.segments[0].windows[14].adr5.in2[0] -2132,949,main.pedersen.segments[0].windows[14].adr5.in2[1] -2133,944,main.pedersen.segments[0].windows[14].adr5.out[0] -2134,950,main.pedersen.segments[0].windows[14].adr5.out[1] -2135,971,main.pedersen.segments[0].windows[14].adr5.lamda -2136,935,main.pedersen.segments[0].windows[14].adr6.in1[0] -2137,936,main.pedersen.segments[0].windows[14].adr6.in1[1] -2138,944,main.pedersen.segments[0].windows[14].adr6.in2[0] -2139,950,main.pedersen.segments[0].windows[14].adr6.in2[1] -2140,945,main.pedersen.segments[0].windows[14].adr6.out[0] -2141,951,main.pedersen.segments[0].windows[14].adr6.out[1] -2142,972,main.pedersen.segments[0].windows[14].adr6.lamda -2143,935,main.pedersen.segments[0].windows[14].adr7.in1[0] -2144,936,main.pedersen.segments[0].windows[14].adr7.in1[1] -2145,945,main.pedersen.segments[0].windows[14].adr7.in2[0] -2146,951,main.pedersen.segments[0].windows[14].adr7.in2[1] -2147,946,main.pedersen.segments[0].windows[14].adr7.out[0] -2148,952,main.pedersen.segments[0].windows[14].adr7.out[1] -2149,973,main.pedersen.segments[0].windows[14].adr7.lamda -2150,935,main.pedersen.segments[0].windows[14].adr8.in1[0] -2151,936,main.pedersen.segments[0].windows[14].adr8.in1[1] -2152,946,main.pedersen.segments[0].windows[14].adr8.in2[0] -2153,952,main.pedersen.segments[0].windows[14].adr8.in2[1] -2154,939,main.pedersen.segments[0].windows[14].adr8.out[0] -2155,940,main.pedersen.segments[0].windows[14].adr8.out[1] -2156,974,main.pedersen.segments[0].windows[14].adr8.lamda -2176,63,main.pedersen.segments[0].windows[15].in[0] -2177,64,main.pedersen.segments[0].windows[15].in[1] -2178,65,main.pedersen.segments[0].windows[15].in[2] -2179,66,main.pedersen.segments[0].windows[15].in[3] -2180,984,main.pedersen.segments[0].windows[15].base[0] -2181,985,main.pedersen.segments[0].windows[15].base[1] -2182,986,main.pedersen.segments[0].windows[15].out[0] -2183,987,main.pedersen.segments[0].windows[15].out[1] -2184,988,main.pedersen.segments[0].windows[15].out8[0] -2185,989,main.pedersen.segments[0].windows[15].out8[1] -2186,984,main.pedersen.segments[0].windows[15].mux.c[0][0] -2187,990,main.pedersen.segments[0].windows[15].mux.c[0][1] -2188,991,main.pedersen.segments[0].windows[15].mux.c[0][2] -2189,992,main.pedersen.segments[0].windows[15].mux.c[0][3] -2190,993,main.pedersen.segments[0].windows[15].mux.c[0][4] -2191,994,main.pedersen.segments[0].windows[15].mux.c[0][5] -2192,995,main.pedersen.segments[0].windows[15].mux.c[0][6] -2193,988,main.pedersen.segments[0].windows[15].mux.c[0][7] -2194,985,main.pedersen.segments[0].windows[15].mux.c[1][0] -2195,996,main.pedersen.segments[0].windows[15].mux.c[1][1] -2196,997,main.pedersen.segments[0].windows[15].mux.c[1][2] -2197,998,main.pedersen.segments[0].windows[15].mux.c[1][3] -2198,999,main.pedersen.segments[0].windows[15].mux.c[1][4] -2199,1000,main.pedersen.segments[0].windows[15].mux.c[1][5] -2200,1001,main.pedersen.segments[0].windows[15].mux.c[1][6] -2201,989,main.pedersen.segments[0].windows[15].mux.c[1][7] -2202,63,main.pedersen.segments[0].windows[15].mux.s[0] -2203,64,main.pedersen.segments[0].windows[15].mux.s[1] -2204,65,main.pedersen.segments[0].windows[15].mux.s[2] -2205,986,main.pedersen.segments[0].windows[15].mux.out[0] -2206,1002,main.pedersen.segments[0].windows[15].mux.out[1] -2207,1003,main.pedersen.segments[0].windows[15].mux.a210[0] -2208,1004,main.pedersen.segments[0].windows[15].mux.a210[1] -2209,1005,main.pedersen.segments[0].windows[15].mux.a21[0] -2210,1006,main.pedersen.segments[0].windows[15].mux.a21[1] -2211,1007,main.pedersen.segments[0].windows[15].mux.a20[0] -2212,1008,main.pedersen.segments[0].windows[15].mux.a20[1] -2213,3413,main.pedersen.segments[0].windows[15].mux.a2[0] -2214,3414,main.pedersen.segments[0].windows[15].mux.a2[1] -2215,1009,main.pedersen.segments[0].windows[15].mux.a10[0] -2216,1010,main.pedersen.segments[0].windows[15].mux.a10[1] -2217,1011,main.pedersen.segments[0].windows[15].mux.a1[0] -2218,1012,main.pedersen.segments[0].windows[15].mux.a1[1] -2219,1013,main.pedersen.segments[0].windows[15].mux.a0[0] -2220,1014,main.pedersen.segments[0].windows[15].mux.a0[1] -2221,984,main.pedersen.segments[0].windows[15].mux.a[0] -2222,985,main.pedersen.segments[0].windows[15].mux.a[1] -2223,1015,main.pedersen.segments[0].windows[15].mux.s10 -2224,984,main.pedersen.segments[0].windows[15].dbl2.in[0] -2225,985,main.pedersen.segments[0].windows[15].dbl2.in[1] -2226,990,main.pedersen.segments[0].windows[15].dbl2.out[0] -2227,996,main.pedersen.segments[0].windows[15].dbl2.out[1] -2228,1016,main.pedersen.segments[0].windows[15].dbl2.lamda -2229,1017,main.pedersen.segments[0].windows[15].dbl2.x1_2 -2230,984,main.pedersen.segments[0].windows[15].adr3.in1[0] -2231,985,main.pedersen.segments[0].windows[15].adr3.in1[1] -2232,990,main.pedersen.segments[0].windows[15].adr3.in2[0] -2233,996,main.pedersen.segments[0].windows[15].adr3.in2[1] -2234,991,main.pedersen.segments[0].windows[15].adr3.out[0] -2235,997,main.pedersen.segments[0].windows[15].adr3.out[1] -2236,1018,main.pedersen.segments[0].windows[15].adr3.lamda -2237,984,main.pedersen.segments[0].windows[15].adr4.in1[0] -2238,985,main.pedersen.segments[0].windows[15].adr4.in1[1] -2239,991,main.pedersen.segments[0].windows[15].adr4.in2[0] -2240,997,main.pedersen.segments[0].windows[15].adr4.in2[1] -2241,992,main.pedersen.segments[0].windows[15].adr4.out[0] -2242,998,main.pedersen.segments[0].windows[15].adr4.out[1] -2243,1019,main.pedersen.segments[0].windows[15].adr4.lamda -2244,984,main.pedersen.segments[0].windows[15].adr5.in1[0] -2245,985,main.pedersen.segments[0].windows[15].adr5.in1[1] -2246,992,main.pedersen.segments[0].windows[15].adr5.in2[0] -2247,998,main.pedersen.segments[0].windows[15].adr5.in2[1] -2248,993,main.pedersen.segments[0].windows[15].adr5.out[0] -2249,999,main.pedersen.segments[0].windows[15].adr5.out[1] -2250,1020,main.pedersen.segments[0].windows[15].adr5.lamda -2251,984,main.pedersen.segments[0].windows[15].adr6.in1[0] -2252,985,main.pedersen.segments[0].windows[15].adr6.in1[1] -2253,993,main.pedersen.segments[0].windows[15].adr6.in2[0] -2254,999,main.pedersen.segments[0].windows[15].adr6.in2[1] -2255,994,main.pedersen.segments[0].windows[15].adr6.out[0] -2256,1000,main.pedersen.segments[0].windows[15].adr6.out[1] -2257,1021,main.pedersen.segments[0].windows[15].adr6.lamda -2258,984,main.pedersen.segments[0].windows[15].adr7.in1[0] -2259,985,main.pedersen.segments[0].windows[15].adr7.in1[1] -2260,994,main.pedersen.segments[0].windows[15].adr7.in2[0] -2261,1000,main.pedersen.segments[0].windows[15].adr7.in2[1] -2262,995,main.pedersen.segments[0].windows[15].adr7.out[0] -2263,1001,main.pedersen.segments[0].windows[15].adr7.out[1] -2264,1022,main.pedersen.segments[0].windows[15].adr7.lamda -2265,984,main.pedersen.segments[0].windows[15].adr8.in1[0] -2266,985,main.pedersen.segments[0].windows[15].adr8.in1[1] -2267,995,main.pedersen.segments[0].windows[15].adr8.in2[0] -2268,1001,main.pedersen.segments[0].windows[15].adr8.in2[1] -2269,988,main.pedersen.segments[0].windows[15].adr8.out[0] -2270,989,main.pedersen.segments[0].windows[15].adr8.out[1] -2271,1023,main.pedersen.segments[0].windows[15].adr8.lamda -2291,67,main.pedersen.segments[0].windows[16].in[0] -2292,68,main.pedersen.segments[0].windows[16].in[1] -2293,69,main.pedersen.segments[0].windows[16].in[2] -2294,70,main.pedersen.segments[0].windows[16].in[3] -2295,1033,main.pedersen.segments[0].windows[16].base[0] -2296,1034,main.pedersen.segments[0].windows[16].base[1] -2297,1035,main.pedersen.segments[0].windows[16].out[0] -2298,1036,main.pedersen.segments[0].windows[16].out[1] -2299,1037,main.pedersen.segments[0].windows[16].out8[0] -2300,1038,main.pedersen.segments[0].windows[16].out8[1] -2301,1033,main.pedersen.segments[0].windows[16].mux.c[0][0] -2302,1039,main.pedersen.segments[0].windows[16].mux.c[0][1] -2303,1040,main.pedersen.segments[0].windows[16].mux.c[0][2] -2304,1041,main.pedersen.segments[0].windows[16].mux.c[0][3] -2305,1042,main.pedersen.segments[0].windows[16].mux.c[0][4] -2306,1043,main.pedersen.segments[0].windows[16].mux.c[0][5] -2307,1044,main.pedersen.segments[0].windows[16].mux.c[0][6] -2308,1037,main.pedersen.segments[0].windows[16].mux.c[0][7] -2309,1034,main.pedersen.segments[0].windows[16].mux.c[1][0] -2310,1045,main.pedersen.segments[0].windows[16].mux.c[1][1] -2311,1046,main.pedersen.segments[0].windows[16].mux.c[1][2] -2312,1047,main.pedersen.segments[0].windows[16].mux.c[1][3] -2313,1048,main.pedersen.segments[0].windows[16].mux.c[1][4] -2314,1049,main.pedersen.segments[0].windows[16].mux.c[1][5] -2315,1050,main.pedersen.segments[0].windows[16].mux.c[1][6] -2316,1038,main.pedersen.segments[0].windows[16].mux.c[1][7] -2317,67,main.pedersen.segments[0].windows[16].mux.s[0] -2318,68,main.pedersen.segments[0].windows[16].mux.s[1] -2319,69,main.pedersen.segments[0].windows[16].mux.s[2] -2320,1035,main.pedersen.segments[0].windows[16].mux.out[0] -2321,1051,main.pedersen.segments[0].windows[16].mux.out[1] -2322,1052,main.pedersen.segments[0].windows[16].mux.a210[0] -2323,1053,main.pedersen.segments[0].windows[16].mux.a210[1] -2324,1054,main.pedersen.segments[0].windows[16].mux.a21[0] -2325,1055,main.pedersen.segments[0].windows[16].mux.a21[1] -2326,1056,main.pedersen.segments[0].windows[16].mux.a20[0] -2327,1057,main.pedersen.segments[0].windows[16].mux.a20[1] -2328,3415,main.pedersen.segments[0].windows[16].mux.a2[0] -2329,3416,main.pedersen.segments[0].windows[16].mux.a2[1] -2330,1058,main.pedersen.segments[0].windows[16].mux.a10[0] -2331,1059,main.pedersen.segments[0].windows[16].mux.a10[1] -2332,1060,main.pedersen.segments[0].windows[16].mux.a1[0] -2333,1061,main.pedersen.segments[0].windows[16].mux.a1[1] -2334,1062,main.pedersen.segments[0].windows[16].mux.a0[0] -2335,1063,main.pedersen.segments[0].windows[16].mux.a0[1] -2336,1033,main.pedersen.segments[0].windows[16].mux.a[0] -2337,1034,main.pedersen.segments[0].windows[16].mux.a[1] -2338,1064,main.pedersen.segments[0].windows[16].mux.s10 -2339,1033,main.pedersen.segments[0].windows[16].dbl2.in[0] -2340,1034,main.pedersen.segments[0].windows[16].dbl2.in[1] -2341,1039,main.pedersen.segments[0].windows[16].dbl2.out[0] -2342,1045,main.pedersen.segments[0].windows[16].dbl2.out[1] -2343,1065,main.pedersen.segments[0].windows[16].dbl2.lamda -2344,1066,main.pedersen.segments[0].windows[16].dbl2.x1_2 -2345,1033,main.pedersen.segments[0].windows[16].adr3.in1[0] -2346,1034,main.pedersen.segments[0].windows[16].adr3.in1[1] -2347,1039,main.pedersen.segments[0].windows[16].adr3.in2[0] -2348,1045,main.pedersen.segments[0].windows[16].adr3.in2[1] -2349,1040,main.pedersen.segments[0].windows[16].adr3.out[0] -2350,1046,main.pedersen.segments[0].windows[16].adr3.out[1] -2351,1067,main.pedersen.segments[0].windows[16].adr3.lamda -2352,1033,main.pedersen.segments[0].windows[16].adr4.in1[0] -2353,1034,main.pedersen.segments[0].windows[16].adr4.in1[1] -2354,1040,main.pedersen.segments[0].windows[16].adr4.in2[0] -2355,1046,main.pedersen.segments[0].windows[16].adr4.in2[1] -2356,1041,main.pedersen.segments[0].windows[16].adr4.out[0] -2357,1047,main.pedersen.segments[0].windows[16].adr4.out[1] -2358,1068,main.pedersen.segments[0].windows[16].adr4.lamda -2359,1033,main.pedersen.segments[0].windows[16].adr5.in1[0] -2360,1034,main.pedersen.segments[0].windows[16].adr5.in1[1] -2361,1041,main.pedersen.segments[0].windows[16].adr5.in2[0] -2362,1047,main.pedersen.segments[0].windows[16].adr5.in2[1] -2363,1042,main.pedersen.segments[0].windows[16].adr5.out[0] -2364,1048,main.pedersen.segments[0].windows[16].adr5.out[1] -2365,1069,main.pedersen.segments[0].windows[16].adr5.lamda -2366,1033,main.pedersen.segments[0].windows[16].adr6.in1[0] -2367,1034,main.pedersen.segments[0].windows[16].adr6.in1[1] -2368,1042,main.pedersen.segments[0].windows[16].adr6.in2[0] -2369,1048,main.pedersen.segments[0].windows[16].adr6.in2[1] -2370,1043,main.pedersen.segments[0].windows[16].adr6.out[0] -2371,1049,main.pedersen.segments[0].windows[16].adr6.out[1] -2372,1070,main.pedersen.segments[0].windows[16].adr6.lamda -2373,1033,main.pedersen.segments[0].windows[16].adr7.in1[0] -2374,1034,main.pedersen.segments[0].windows[16].adr7.in1[1] -2375,1043,main.pedersen.segments[0].windows[16].adr7.in2[0] -2376,1049,main.pedersen.segments[0].windows[16].adr7.in2[1] -2377,1044,main.pedersen.segments[0].windows[16].adr7.out[0] -2378,1050,main.pedersen.segments[0].windows[16].adr7.out[1] -2379,1071,main.pedersen.segments[0].windows[16].adr7.lamda -2380,1033,main.pedersen.segments[0].windows[16].adr8.in1[0] -2381,1034,main.pedersen.segments[0].windows[16].adr8.in1[1] -2382,1044,main.pedersen.segments[0].windows[16].adr8.in2[0] -2383,1050,main.pedersen.segments[0].windows[16].adr8.in2[1] -2384,1037,main.pedersen.segments[0].windows[16].adr8.out[0] -2385,1038,main.pedersen.segments[0].windows[16].adr8.out[1] -2386,1072,main.pedersen.segments[0].windows[16].adr8.lamda -2406,71,main.pedersen.segments[0].windows[17].in[0] -2407,72,main.pedersen.segments[0].windows[17].in[1] -2408,73,main.pedersen.segments[0].windows[17].in[2] -2409,74,main.pedersen.segments[0].windows[17].in[3] -2410,1082,main.pedersen.segments[0].windows[17].base[0] -2411,1083,main.pedersen.segments[0].windows[17].base[1] -2412,1084,main.pedersen.segments[0].windows[17].out[0] -2413,1085,main.pedersen.segments[0].windows[17].out[1] -2414,1086,main.pedersen.segments[0].windows[17].out8[0] -2415,1087,main.pedersen.segments[0].windows[17].out8[1] -2416,1082,main.pedersen.segments[0].windows[17].mux.c[0][0] -2417,1088,main.pedersen.segments[0].windows[17].mux.c[0][1] -2418,1089,main.pedersen.segments[0].windows[17].mux.c[0][2] -2419,1090,main.pedersen.segments[0].windows[17].mux.c[0][3] -2420,1091,main.pedersen.segments[0].windows[17].mux.c[0][4] -2421,1092,main.pedersen.segments[0].windows[17].mux.c[0][5] -2422,1093,main.pedersen.segments[0].windows[17].mux.c[0][6] -2423,1086,main.pedersen.segments[0].windows[17].mux.c[0][7] -2424,1083,main.pedersen.segments[0].windows[17].mux.c[1][0] -2425,1094,main.pedersen.segments[0].windows[17].mux.c[1][1] -2426,1095,main.pedersen.segments[0].windows[17].mux.c[1][2] -2427,1096,main.pedersen.segments[0].windows[17].mux.c[1][3] -2428,1097,main.pedersen.segments[0].windows[17].mux.c[1][4] -2429,1098,main.pedersen.segments[0].windows[17].mux.c[1][5] -2430,1099,main.pedersen.segments[0].windows[17].mux.c[1][6] -2431,1087,main.pedersen.segments[0].windows[17].mux.c[1][7] -2432,71,main.pedersen.segments[0].windows[17].mux.s[0] -2433,72,main.pedersen.segments[0].windows[17].mux.s[1] -2434,73,main.pedersen.segments[0].windows[17].mux.s[2] -2435,1084,main.pedersen.segments[0].windows[17].mux.out[0] -2436,1100,main.pedersen.segments[0].windows[17].mux.out[1] -2437,1101,main.pedersen.segments[0].windows[17].mux.a210[0] -2438,1102,main.pedersen.segments[0].windows[17].mux.a210[1] -2439,1103,main.pedersen.segments[0].windows[17].mux.a21[0] -2440,1104,main.pedersen.segments[0].windows[17].mux.a21[1] -2441,1105,main.pedersen.segments[0].windows[17].mux.a20[0] -2442,1106,main.pedersen.segments[0].windows[17].mux.a20[1] -2443,3417,main.pedersen.segments[0].windows[17].mux.a2[0] -2444,3418,main.pedersen.segments[0].windows[17].mux.a2[1] -2445,1107,main.pedersen.segments[0].windows[17].mux.a10[0] -2446,1108,main.pedersen.segments[0].windows[17].mux.a10[1] -2447,1109,main.pedersen.segments[0].windows[17].mux.a1[0] -2448,1110,main.pedersen.segments[0].windows[17].mux.a1[1] -2449,1111,main.pedersen.segments[0].windows[17].mux.a0[0] -2450,1112,main.pedersen.segments[0].windows[17].mux.a0[1] -2451,1082,main.pedersen.segments[0].windows[17].mux.a[0] -2452,1083,main.pedersen.segments[0].windows[17].mux.a[1] -2453,1113,main.pedersen.segments[0].windows[17].mux.s10 -2454,1082,main.pedersen.segments[0].windows[17].dbl2.in[0] -2455,1083,main.pedersen.segments[0].windows[17].dbl2.in[1] -2456,1088,main.pedersen.segments[0].windows[17].dbl2.out[0] -2457,1094,main.pedersen.segments[0].windows[17].dbl2.out[1] -2458,1114,main.pedersen.segments[0].windows[17].dbl2.lamda -2459,1115,main.pedersen.segments[0].windows[17].dbl2.x1_2 -2460,1082,main.pedersen.segments[0].windows[17].adr3.in1[0] -2461,1083,main.pedersen.segments[0].windows[17].adr3.in1[1] -2462,1088,main.pedersen.segments[0].windows[17].adr3.in2[0] -2463,1094,main.pedersen.segments[0].windows[17].adr3.in2[1] -2464,1089,main.pedersen.segments[0].windows[17].adr3.out[0] -2465,1095,main.pedersen.segments[0].windows[17].adr3.out[1] -2466,1116,main.pedersen.segments[0].windows[17].adr3.lamda -2467,1082,main.pedersen.segments[0].windows[17].adr4.in1[0] -2468,1083,main.pedersen.segments[0].windows[17].adr4.in1[1] -2469,1089,main.pedersen.segments[0].windows[17].adr4.in2[0] -2470,1095,main.pedersen.segments[0].windows[17].adr4.in2[1] -2471,1090,main.pedersen.segments[0].windows[17].adr4.out[0] -2472,1096,main.pedersen.segments[0].windows[17].adr4.out[1] -2473,1117,main.pedersen.segments[0].windows[17].adr4.lamda -2474,1082,main.pedersen.segments[0].windows[17].adr5.in1[0] -2475,1083,main.pedersen.segments[0].windows[17].adr5.in1[1] -2476,1090,main.pedersen.segments[0].windows[17].adr5.in2[0] -2477,1096,main.pedersen.segments[0].windows[17].adr5.in2[1] -2478,1091,main.pedersen.segments[0].windows[17].adr5.out[0] -2479,1097,main.pedersen.segments[0].windows[17].adr5.out[1] -2480,1118,main.pedersen.segments[0].windows[17].adr5.lamda -2481,1082,main.pedersen.segments[0].windows[17].adr6.in1[0] -2482,1083,main.pedersen.segments[0].windows[17].adr6.in1[1] -2483,1091,main.pedersen.segments[0].windows[17].adr6.in2[0] -2484,1097,main.pedersen.segments[0].windows[17].adr6.in2[1] -2485,1092,main.pedersen.segments[0].windows[17].adr6.out[0] -2486,1098,main.pedersen.segments[0].windows[17].adr6.out[1] -2487,1119,main.pedersen.segments[0].windows[17].adr6.lamda -2488,1082,main.pedersen.segments[0].windows[17].adr7.in1[0] -2489,1083,main.pedersen.segments[0].windows[17].adr7.in1[1] -2490,1092,main.pedersen.segments[0].windows[17].adr7.in2[0] -2491,1098,main.pedersen.segments[0].windows[17].adr7.in2[1] -2492,1093,main.pedersen.segments[0].windows[17].adr7.out[0] -2493,1099,main.pedersen.segments[0].windows[17].adr7.out[1] -2494,1120,main.pedersen.segments[0].windows[17].adr7.lamda -2495,1082,main.pedersen.segments[0].windows[17].adr8.in1[0] -2496,1083,main.pedersen.segments[0].windows[17].adr8.in1[1] -2497,1093,main.pedersen.segments[0].windows[17].adr8.in2[0] -2498,1099,main.pedersen.segments[0].windows[17].adr8.in2[1] -2499,1086,main.pedersen.segments[0].windows[17].adr8.out[0] -2500,1087,main.pedersen.segments[0].windows[17].adr8.out[1] -2501,1121,main.pedersen.segments[0].windows[17].adr8.lamda -2521,75,main.pedersen.segments[0].windows[18].in[0] -2522,76,main.pedersen.segments[0].windows[18].in[1] -2523,77,main.pedersen.segments[0].windows[18].in[2] -2524,78,main.pedersen.segments[0].windows[18].in[3] -2525,1131,main.pedersen.segments[0].windows[18].base[0] -2526,1132,main.pedersen.segments[0].windows[18].base[1] -2527,1133,main.pedersen.segments[0].windows[18].out[0] -2528,1134,main.pedersen.segments[0].windows[18].out[1] -2529,1135,main.pedersen.segments[0].windows[18].out8[0] -2530,1136,main.pedersen.segments[0].windows[18].out8[1] -2531,1131,main.pedersen.segments[0].windows[18].mux.c[0][0] -2532,1137,main.pedersen.segments[0].windows[18].mux.c[0][1] -2533,1138,main.pedersen.segments[0].windows[18].mux.c[0][2] -2534,1139,main.pedersen.segments[0].windows[18].mux.c[0][3] -2535,1140,main.pedersen.segments[0].windows[18].mux.c[0][4] -2536,1141,main.pedersen.segments[0].windows[18].mux.c[0][5] -2537,1142,main.pedersen.segments[0].windows[18].mux.c[0][6] -2538,1135,main.pedersen.segments[0].windows[18].mux.c[0][7] -2539,1132,main.pedersen.segments[0].windows[18].mux.c[1][0] -2540,1143,main.pedersen.segments[0].windows[18].mux.c[1][1] -2541,1144,main.pedersen.segments[0].windows[18].mux.c[1][2] -2542,1145,main.pedersen.segments[0].windows[18].mux.c[1][3] -2543,1146,main.pedersen.segments[0].windows[18].mux.c[1][4] -2544,1147,main.pedersen.segments[0].windows[18].mux.c[1][5] -2545,1148,main.pedersen.segments[0].windows[18].mux.c[1][6] -2546,1136,main.pedersen.segments[0].windows[18].mux.c[1][7] -2547,75,main.pedersen.segments[0].windows[18].mux.s[0] -2548,76,main.pedersen.segments[0].windows[18].mux.s[1] -2549,77,main.pedersen.segments[0].windows[18].mux.s[2] -2550,1133,main.pedersen.segments[0].windows[18].mux.out[0] -2551,1149,main.pedersen.segments[0].windows[18].mux.out[1] -2552,1150,main.pedersen.segments[0].windows[18].mux.a210[0] -2553,1151,main.pedersen.segments[0].windows[18].mux.a210[1] -2554,1152,main.pedersen.segments[0].windows[18].mux.a21[0] -2555,1153,main.pedersen.segments[0].windows[18].mux.a21[1] -2556,1154,main.pedersen.segments[0].windows[18].mux.a20[0] -2557,1155,main.pedersen.segments[0].windows[18].mux.a20[1] -2558,3419,main.pedersen.segments[0].windows[18].mux.a2[0] -2559,3420,main.pedersen.segments[0].windows[18].mux.a2[1] -2560,1156,main.pedersen.segments[0].windows[18].mux.a10[0] -2561,1157,main.pedersen.segments[0].windows[18].mux.a10[1] -2562,1158,main.pedersen.segments[0].windows[18].mux.a1[0] -2563,1159,main.pedersen.segments[0].windows[18].mux.a1[1] -2564,1160,main.pedersen.segments[0].windows[18].mux.a0[0] -2565,1161,main.pedersen.segments[0].windows[18].mux.a0[1] -2566,1131,main.pedersen.segments[0].windows[18].mux.a[0] -2567,1132,main.pedersen.segments[0].windows[18].mux.a[1] -2568,1162,main.pedersen.segments[0].windows[18].mux.s10 -2569,1131,main.pedersen.segments[0].windows[18].dbl2.in[0] -2570,1132,main.pedersen.segments[0].windows[18].dbl2.in[1] -2571,1137,main.pedersen.segments[0].windows[18].dbl2.out[0] -2572,1143,main.pedersen.segments[0].windows[18].dbl2.out[1] -2573,1163,main.pedersen.segments[0].windows[18].dbl2.lamda -2574,1164,main.pedersen.segments[0].windows[18].dbl2.x1_2 -2575,1131,main.pedersen.segments[0].windows[18].adr3.in1[0] -2576,1132,main.pedersen.segments[0].windows[18].adr3.in1[1] -2577,1137,main.pedersen.segments[0].windows[18].adr3.in2[0] -2578,1143,main.pedersen.segments[0].windows[18].adr3.in2[1] -2579,1138,main.pedersen.segments[0].windows[18].adr3.out[0] -2580,1144,main.pedersen.segments[0].windows[18].adr3.out[1] -2581,1165,main.pedersen.segments[0].windows[18].adr3.lamda -2582,1131,main.pedersen.segments[0].windows[18].adr4.in1[0] -2583,1132,main.pedersen.segments[0].windows[18].adr4.in1[1] -2584,1138,main.pedersen.segments[0].windows[18].adr4.in2[0] -2585,1144,main.pedersen.segments[0].windows[18].adr4.in2[1] -2586,1139,main.pedersen.segments[0].windows[18].adr4.out[0] -2587,1145,main.pedersen.segments[0].windows[18].adr4.out[1] -2588,1166,main.pedersen.segments[0].windows[18].adr4.lamda -2589,1131,main.pedersen.segments[0].windows[18].adr5.in1[0] -2590,1132,main.pedersen.segments[0].windows[18].adr5.in1[1] -2591,1139,main.pedersen.segments[0].windows[18].adr5.in2[0] -2592,1145,main.pedersen.segments[0].windows[18].adr5.in2[1] -2593,1140,main.pedersen.segments[0].windows[18].adr5.out[0] -2594,1146,main.pedersen.segments[0].windows[18].adr5.out[1] -2595,1167,main.pedersen.segments[0].windows[18].adr5.lamda -2596,1131,main.pedersen.segments[0].windows[18].adr6.in1[0] -2597,1132,main.pedersen.segments[0].windows[18].adr6.in1[1] -2598,1140,main.pedersen.segments[0].windows[18].adr6.in2[0] -2599,1146,main.pedersen.segments[0].windows[18].adr6.in2[1] -2600,1141,main.pedersen.segments[0].windows[18].adr6.out[0] -2601,1147,main.pedersen.segments[0].windows[18].adr6.out[1] -2602,1168,main.pedersen.segments[0].windows[18].adr6.lamda -2603,1131,main.pedersen.segments[0].windows[18].adr7.in1[0] -2604,1132,main.pedersen.segments[0].windows[18].adr7.in1[1] -2605,1141,main.pedersen.segments[0].windows[18].adr7.in2[0] -2606,1147,main.pedersen.segments[0].windows[18].adr7.in2[1] -2607,1142,main.pedersen.segments[0].windows[18].adr7.out[0] -2608,1148,main.pedersen.segments[0].windows[18].adr7.out[1] -2609,1169,main.pedersen.segments[0].windows[18].adr7.lamda -2610,1131,main.pedersen.segments[0].windows[18].adr8.in1[0] -2611,1132,main.pedersen.segments[0].windows[18].adr8.in1[1] -2612,1142,main.pedersen.segments[0].windows[18].adr8.in2[0] -2613,1148,main.pedersen.segments[0].windows[18].adr8.in2[1] -2614,1135,main.pedersen.segments[0].windows[18].adr8.out[0] -2615,1136,main.pedersen.segments[0].windows[18].adr8.out[1] -2616,1170,main.pedersen.segments[0].windows[18].adr8.lamda -2636,79,main.pedersen.segments[0].windows[19].in[0] -2637,80,main.pedersen.segments[0].windows[19].in[1] -2638,81,main.pedersen.segments[0].windows[19].in[2] -2639,82,main.pedersen.segments[0].windows[19].in[3] -2640,1180,main.pedersen.segments[0].windows[19].base[0] -2641,1181,main.pedersen.segments[0].windows[19].base[1] -2642,1182,main.pedersen.segments[0].windows[19].out[0] -2643,1183,main.pedersen.segments[0].windows[19].out[1] -2644,1184,main.pedersen.segments[0].windows[19].out8[0] -2645,1185,main.pedersen.segments[0].windows[19].out8[1] -2646,1180,main.pedersen.segments[0].windows[19].mux.c[0][0] -2647,1186,main.pedersen.segments[0].windows[19].mux.c[0][1] -2648,1187,main.pedersen.segments[0].windows[19].mux.c[0][2] -2649,1188,main.pedersen.segments[0].windows[19].mux.c[0][3] -2650,1189,main.pedersen.segments[0].windows[19].mux.c[0][4] -2651,1190,main.pedersen.segments[0].windows[19].mux.c[0][5] -2652,1191,main.pedersen.segments[0].windows[19].mux.c[0][6] -2653,1184,main.pedersen.segments[0].windows[19].mux.c[0][7] -2654,1181,main.pedersen.segments[0].windows[19].mux.c[1][0] -2655,1192,main.pedersen.segments[0].windows[19].mux.c[1][1] -2656,1193,main.pedersen.segments[0].windows[19].mux.c[1][2] -2657,1194,main.pedersen.segments[0].windows[19].mux.c[1][3] -2658,1195,main.pedersen.segments[0].windows[19].mux.c[1][4] -2659,1196,main.pedersen.segments[0].windows[19].mux.c[1][5] -2660,1197,main.pedersen.segments[0].windows[19].mux.c[1][6] -2661,1185,main.pedersen.segments[0].windows[19].mux.c[1][7] -2662,79,main.pedersen.segments[0].windows[19].mux.s[0] -2663,80,main.pedersen.segments[0].windows[19].mux.s[1] -2664,81,main.pedersen.segments[0].windows[19].mux.s[2] -2665,1182,main.pedersen.segments[0].windows[19].mux.out[0] -2666,1198,main.pedersen.segments[0].windows[19].mux.out[1] -2667,1199,main.pedersen.segments[0].windows[19].mux.a210[0] -2668,1200,main.pedersen.segments[0].windows[19].mux.a210[1] -2669,1201,main.pedersen.segments[0].windows[19].mux.a21[0] -2670,1202,main.pedersen.segments[0].windows[19].mux.a21[1] -2671,1203,main.pedersen.segments[0].windows[19].mux.a20[0] -2672,1204,main.pedersen.segments[0].windows[19].mux.a20[1] -2673,3421,main.pedersen.segments[0].windows[19].mux.a2[0] -2674,3422,main.pedersen.segments[0].windows[19].mux.a2[1] -2675,1205,main.pedersen.segments[0].windows[19].mux.a10[0] -2676,1206,main.pedersen.segments[0].windows[19].mux.a10[1] -2677,1207,main.pedersen.segments[0].windows[19].mux.a1[0] -2678,1208,main.pedersen.segments[0].windows[19].mux.a1[1] -2679,1209,main.pedersen.segments[0].windows[19].mux.a0[0] -2680,1210,main.pedersen.segments[0].windows[19].mux.a0[1] -2681,1180,main.pedersen.segments[0].windows[19].mux.a[0] -2682,1181,main.pedersen.segments[0].windows[19].mux.a[1] -2683,1211,main.pedersen.segments[0].windows[19].mux.s10 -2684,1180,main.pedersen.segments[0].windows[19].dbl2.in[0] -2685,1181,main.pedersen.segments[0].windows[19].dbl2.in[1] -2686,1186,main.pedersen.segments[0].windows[19].dbl2.out[0] -2687,1192,main.pedersen.segments[0].windows[19].dbl2.out[1] -2688,1212,main.pedersen.segments[0].windows[19].dbl2.lamda -2689,1213,main.pedersen.segments[0].windows[19].dbl2.x1_2 -2690,1180,main.pedersen.segments[0].windows[19].adr3.in1[0] -2691,1181,main.pedersen.segments[0].windows[19].adr3.in1[1] -2692,1186,main.pedersen.segments[0].windows[19].adr3.in2[0] -2693,1192,main.pedersen.segments[0].windows[19].adr3.in2[1] -2694,1187,main.pedersen.segments[0].windows[19].adr3.out[0] -2695,1193,main.pedersen.segments[0].windows[19].adr3.out[1] -2696,1214,main.pedersen.segments[0].windows[19].adr3.lamda -2697,1180,main.pedersen.segments[0].windows[19].adr4.in1[0] -2698,1181,main.pedersen.segments[0].windows[19].adr4.in1[1] -2699,1187,main.pedersen.segments[0].windows[19].adr4.in2[0] -2700,1193,main.pedersen.segments[0].windows[19].adr4.in2[1] -2701,1188,main.pedersen.segments[0].windows[19].adr4.out[0] -2702,1194,main.pedersen.segments[0].windows[19].adr4.out[1] -2703,1215,main.pedersen.segments[0].windows[19].adr4.lamda -2704,1180,main.pedersen.segments[0].windows[19].adr5.in1[0] -2705,1181,main.pedersen.segments[0].windows[19].adr5.in1[1] -2706,1188,main.pedersen.segments[0].windows[19].adr5.in2[0] -2707,1194,main.pedersen.segments[0].windows[19].adr5.in2[1] -2708,1189,main.pedersen.segments[0].windows[19].adr5.out[0] -2709,1195,main.pedersen.segments[0].windows[19].adr5.out[1] -2710,1216,main.pedersen.segments[0].windows[19].adr5.lamda -2711,1180,main.pedersen.segments[0].windows[19].adr6.in1[0] -2712,1181,main.pedersen.segments[0].windows[19].adr6.in1[1] -2713,1189,main.pedersen.segments[0].windows[19].adr6.in2[0] -2714,1195,main.pedersen.segments[0].windows[19].adr6.in2[1] -2715,1190,main.pedersen.segments[0].windows[19].adr6.out[0] -2716,1196,main.pedersen.segments[0].windows[19].adr6.out[1] -2717,1217,main.pedersen.segments[0].windows[19].adr6.lamda -2718,1180,main.pedersen.segments[0].windows[19].adr7.in1[0] -2719,1181,main.pedersen.segments[0].windows[19].adr7.in1[1] -2720,1190,main.pedersen.segments[0].windows[19].adr7.in2[0] -2721,1196,main.pedersen.segments[0].windows[19].adr7.in2[1] -2722,1191,main.pedersen.segments[0].windows[19].adr7.out[0] -2723,1197,main.pedersen.segments[0].windows[19].adr7.out[1] -2724,1218,main.pedersen.segments[0].windows[19].adr7.lamda -2725,1180,main.pedersen.segments[0].windows[19].adr8.in1[0] -2726,1181,main.pedersen.segments[0].windows[19].adr8.in1[1] -2727,1191,main.pedersen.segments[0].windows[19].adr8.in2[0] -2728,1197,main.pedersen.segments[0].windows[19].adr8.in2[1] -2729,1184,main.pedersen.segments[0].windows[19].adr8.out[0] -2730,1185,main.pedersen.segments[0].windows[19].adr8.out[1] -2731,1219,main.pedersen.segments[0].windows[19].adr8.lamda -2751,83,main.pedersen.segments[0].windows[20].in[0] -2752,84,main.pedersen.segments[0].windows[20].in[1] -2753,85,main.pedersen.segments[0].windows[20].in[2] -2754,86,main.pedersen.segments[0].windows[20].in[3] -2755,1229,main.pedersen.segments[0].windows[20].base[0] -2756,1230,main.pedersen.segments[0].windows[20].base[1] -2757,1231,main.pedersen.segments[0].windows[20].out[0] -2758,1232,main.pedersen.segments[0].windows[20].out[1] -2759,1233,main.pedersen.segments[0].windows[20].out8[0] -2760,1234,main.pedersen.segments[0].windows[20].out8[1] -2761,1229,main.pedersen.segments[0].windows[20].mux.c[0][0] -2762,1235,main.pedersen.segments[0].windows[20].mux.c[0][1] -2763,1236,main.pedersen.segments[0].windows[20].mux.c[0][2] -2764,1237,main.pedersen.segments[0].windows[20].mux.c[0][3] -2765,1238,main.pedersen.segments[0].windows[20].mux.c[0][4] -2766,1239,main.pedersen.segments[0].windows[20].mux.c[0][5] -2767,1240,main.pedersen.segments[0].windows[20].mux.c[0][6] -2768,1233,main.pedersen.segments[0].windows[20].mux.c[0][7] -2769,1230,main.pedersen.segments[0].windows[20].mux.c[1][0] -2770,1241,main.pedersen.segments[0].windows[20].mux.c[1][1] -2771,1242,main.pedersen.segments[0].windows[20].mux.c[1][2] -2772,1243,main.pedersen.segments[0].windows[20].mux.c[1][3] -2773,1244,main.pedersen.segments[0].windows[20].mux.c[1][4] -2774,1245,main.pedersen.segments[0].windows[20].mux.c[1][5] -2775,1246,main.pedersen.segments[0].windows[20].mux.c[1][6] -2776,1234,main.pedersen.segments[0].windows[20].mux.c[1][7] -2777,83,main.pedersen.segments[0].windows[20].mux.s[0] -2778,84,main.pedersen.segments[0].windows[20].mux.s[1] -2779,85,main.pedersen.segments[0].windows[20].mux.s[2] -2780,1231,main.pedersen.segments[0].windows[20].mux.out[0] -2781,1247,main.pedersen.segments[0].windows[20].mux.out[1] -2782,1248,main.pedersen.segments[0].windows[20].mux.a210[0] -2783,1249,main.pedersen.segments[0].windows[20].mux.a210[1] -2784,1250,main.pedersen.segments[0].windows[20].mux.a21[0] -2785,1251,main.pedersen.segments[0].windows[20].mux.a21[1] -2786,1252,main.pedersen.segments[0].windows[20].mux.a20[0] -2787,1253,main.pedersen.segments[0].windows[20].mux.a20[1] -2788,3423,main.pedersen.segments[0].windows[20].mux.a2[0] -2789,3424,main.pedersen.segments[0].windows[20].mux.a2[1] -2790,1254,main.pedersen.segments[0].windows[20].mux.a10[0] -2791,1255,main.pedersen.segments[0].windows[20].mux.a10[1] -2792,1256,main.pedersen.segments[0].windows[20].mux.a1[0] -2793,1257,main.pedersen.segments[0].windows[20].mux.a1[1] -2794,1258,main.pedersen.segments[0].windows[20].mux.a0[0] -2795,1259,main.pedersen.segments[0].windows[20].mux.a0[1] -2796,1229,main.pedersen.segments[0].windows[20].mux.a[0] -2797,1230,main.pedersen.segments[0].windows[20].mux.a[1] -2798,1260,main.pedersen.segments[0].windows[20].mux.s10 -2799,1229,main.pedersen.segments[0].windows[20].dbl2.in[0] -2800,1230,main.pedersen.segments[0].windows[20].dbl2.in[1] -2801,1235,main.pedersen.segments[0].windows[20].dbl2.out[0] -2802,1241,main.pedersen.segments[0].windows[20].dbl2.out[1] -2803,1261,main.pedersen.segments[0].windows[20].dbl2.lamda -2804,1262,main.pedersen.segments[0].windows[20].dbl2.x1_2 -2805,1229,main.pedersen.segments[0].windows[20].adr3.in1[0] -2806,1230,main.pedersen.segments[0].windows[20].adr3.in1[1] -2807,1235,main.pedersen.segments[0].windows[20].adr3.in2[0] -2808,1241,main.pedersen.segments[0].windows[20].adr3.in2[1] -2809,1236,main.pedersen.segments[0].windows[20].adr3.out[0] -2810,1242,main.pedersen.segments[0].windows[20].adr3.out[1] -2811,1263,main.pedersen.segments[0].windows[20].adr3.lamda -2812,1229,main.pedersen.segments[0].windows[20].adr4.in1[0] -2813,1230,main.pedersen.segments[0].windows[20].adr4.in1[1] -2814,1236,main.pedersen.segments[0].windows[20].adr4.in2[0] -2815,1242,main.pedersen.segments[0].windows[20].adr4.in2[1] -2816,1237,main.pedersen.segments[0].windows[20].adr4.out[0] -2817,1243,main.pedersen.segments[0].windows[20].adr4.out[1] -2818,1264,main.pedersen.segments[0].windows[20].adr4.lamda -2819,1229,main.pedersen.segments[0].windows[20].adr5.in1[0] -2820,1230,main.pedersen.segments[0].windows[20].adr5.in1[1] -2821,1237,main.pedersen.segments[0].windows[20].adr5.in2[0] -2822,1243,main.pedersen.segments[0].windows[20].adr5.in2[1] -2823,1238,main.pedersen.segments[0].windows[20].adr5.out[0] -2824,1244,main.pedersen.segments[0].windows[20].adr5.out[1] -2825,1265,main.pedersen.segments[0].windows[20].adr5.lamda -2826,1229,main.pedersen.segments[0].windows[20].adr6.in1[0] -2827,1230,main.pedersen.segments[0].windows[20].adr6.in1[1] -2828,1238,main.pedersen.segments[0].windows[20].adr6.in2[0] -2829,1244,main.pedersen.segments[0].windows[20].adr6.in2[1] -2830,1239,main.pedersen.segments[0].windows[20].adr6.out[0] -2831,1245,main.pedersen.segments[0].windows[20].adr6.out[1] -2832,1266,main.pedersen.segments[0].windows[20].adr6.lamda -2833,1229,main.pedersen.segments[0].windows[20].adr7.in1[0] -2834,1230,main.pedersen.segments[0].windows[20].adr7.in1[1] -2835,1239,main.pedersen.segments[0].windows[20].adr7.in2[0] -2836,1245,main.pedersen.segments[0].windows[20].adr7.in2[1] -2837,1240,main.pedersen.segments[0].windows[20].adr7.out[0] -2838,1246,main.pedersen.segments[0].windows[20].adr7.out[1] -2839,1267,main.pedersen.segments[0].windows[20].adr7.lamda -2840,1229,main.pedersen.segments[0].windows[20].adr8.in1[0] -2841,1230,main.pedersen.segments[0].windows[20].adr8.in1[1] -2842,1240,main.pedersen.segments[0].windows[20].adr8.in2[0] -2843,1246,main.pedersen.segments[0].windows[20].adr8.in2[1] -2844,1233,main.pedersen.segments[0].windows[20].adr8.out[0] -2845,1234,main.pedersen.segments[0].windows[20].adr8.out[1] -2846,1268,main.pedersen.segments[0].windows[20].adr8.lamda -2866,87,main.pedersen.segments[0].windows[21].in[0] -2867,88,main.pedersen.segments[0].windows[21].in[1] -2868,89,main.pedersen.segments[0].windows[21].in[2] -2869,90,main.pedersen.segments[0].windows[21].in[3] -2870,1278,main.pedersen.segments[0].windows[21].base[0] -2871,1279,main.pedersen.segments[0].windows[21].base[1] -2872,1280,main.pedersen.segments[0].windows[21].out[0] -2873,1281,main.pedersen.segments[0].windows[21].out[1] -2874,1282,main.pedersen.segments[0].windows[21].out8[0] -2875,1283,main.pedersen.segments[0].windows[21].out8[1] -2876,1278,main.pedersen.segments[0].windows[21].mux.c[0][0] -2877,1284,main.pedersen.segments[0].windows[21].mux.c[0][1] -2878,1285,main.pedersen.segments[0].windows[21].mux.c[0][2] -2879,1286,main.pedersen.segments[0].windows[21].mux.c[0][3] -2880,1287,main.pedersen.segments[0].windows[21].mux.c[0][4] -2881,1288,main.pedersen.segments[0].windows[21].mux.c[0][5] -2882,1289,main.pedersen.segments[0].windows[21].mux.c[0][6] -2883,1282,main.pedersen.segments[0].windows[21].mux.c[0][7] -2884,1279,main.pedersen.segments[0].windows[21].mux.c[1][0] -2885,1290,main.pedersen.segments[0].windows[21].mux.c[1][1] -2886,1291,main.pedersen.segments[0].windows[21].mux.c[1][2] -2887,1292,main.pedersen.segments[0].windows[21].mux.c[1][3] -2888,1293,main.pedersen.segments[0].windows[21].mux.c[1][4] -2889,1294,main.pedersen.segments[0].windows[21].mux.c[1][5] -2890,1295,main.pedersen.segments[0].windows[21].mux.c[1][6] -2891,1283,main.pedersen.segments[0].windows[21].mux.c[1][7] -2892,87,main.pedersen.segments[0].windows[21].mux.s[0] -2893,88,main.pedersen.segments[0].windows[21].mux.s[1] -2894,89,main.pedersen.segments[0].windows[21].mux.s[2] -2895,1280,main.pedersen.segments[0].windows[21].mux.out[0] -2896,1296,main.pedersen.segments[0].windows[21].mux.out[1] -2897,1297,main.pedersen.segments[0].windows[21].mux.a210[0] -2898,1298,main.pedersen.segments[0].windows[21].mux.a210[1] -2899,1299,main.pedersen.segments[0].windows[21].mux.a21[0] -2900,1300,main.pedersen.segments[0].windows[21].mux.a21[1] -2901,1301,main.pedersen.segments[0].windows[21].mux.a20[0] -2902,1302,main.pedersen.segments[0].windows[21].mux.a20[1] -2903,3425,main.pedersen.segments[0].windows[21].mux.a2[0] -2904,3426,main.pedersen.segments[0].windows[21].mux.a2[1] -2905,1303,main.pedersen.segments[0].windows[21].mux.a10[0] -2906,1304,main.pedersen.segments[0].windows[21].mux.a10[1] -2907,1305,main.pedersen.segments[0].windows[21].mux.a1[0] -2908,1306,main.pedersen.segments[0].windows[21].mux.a1[1] -2909,1307,main.pedersen.segments[0].windows[21].mux.a0[0] -2910,1308,main.pedersen.segments[0].windows[21].mux.a0[1] -2911,1278,main.pedersen.segments[0].windows[21].mux.a[0] -2912,1279,main.pedersen.segments[0].windows[21].mux.a[1] -2913,1309,main.pedersen.segments[0].windows[21].mux.s10 -2914,1278,main.pedersen.segments[0].windows[21].dbl2.in[0] -2915,1279,main.pedersen.segments[0].windows[21].dbl2.in[1] -2916,1284,main.pedersen.segments[0].windows[21].dbl2.out[0] -2917,1290,main.pedersen.segments[0].windows[21].dbl2.out[1] -2918,1310,main.pedersen.segments[0].windows[21].dbl2.lamda -2919,1311,main.pedersen.segments[0].windows[21].dbl2.x1_2 -2920,1278,main.pedersen.segments[0].windows[21].adr3.in1[0] -2921,1279,main.pedersen.segments[0].windows[21].adr3.in1[1] -2922,1284,main.pedersen.segments[0].windows[21].adr3.in2[0] -2923,1290,main.pedersen.segments[0].windows[21].adr3.in2[1] -2924,1285,main.pedersen.segments[0].windows[21].adr3.out[0] -2925,1291,main.pedersen.segments[0].windows[21].adr3.out[1] -2926,1312,main.pedersen.segments[0].windows[21].adr3.lamda -2927,1278,main.pedersen.segments[0].windows[21].adr4.in1[0] -2928,1279,main.pedersen.segments[0].windows[21].adr4.in1[1] -2929,1285,main.pedersen.segments[0].windows[21].adr4.in2[0] -2930,1291,main.pedersen.segments[0].windows[21].adr4.in2[1] -2931,1286,main.pedersen.segments[0].windows[21].adr4.out[0] -2932,1292,main.pedersen.segments[0].windows[21].adr4.out[1] -2933,1313,main.pedersen.segments[0].windows[21].adr4.lamda -2934,1278,main.pedersen.segments[0].windows[21].adr5.in1[0] -2935,1279,main.pedersen.segments[0].windows[21].adr5.in1[1] -2936,1286,main.pedersen.segments[0].windows[21].adr5.in2[0] -2937,1292,main.pedersen.segments[0].windows[21].adr5.in2[1] -2938,1287,main.pedersen.segments[0].windows[21].adr5.out[0] -2939,1293,main.pedersen.segments[0].windows[21].adr5.out[1] -2940,1314,main.pedersen.segments[0].windows[21].adr5.lamda -2941,1278,main.pedersen.segments[0].windows[21].adr6.in1[0] -2942,1279,main.pedersen.segments[0].windows[21].adr6.in1[1] -2943,1287,main.pedersen.segments[0].windows[21].adr6.in2[0] -2944,1293,main.pedersen.segments[0].windows[21].adr6.in2[1] -2945,1288,main.pedersen.segments[0].windows[21].adr6.out[0] -2946,1294,main.pedersen.segments[0].windows[21].adr6.out[1] -2947,1315,main.pedersen.segments[0].windows[21].adr6.lamda -2948,1278,main.pedersen.segments[0].windows[21].adr7.in1[0] -2949,1279,main.pedersen.segments[0].windows[21].adr7.in1[1] -2950,1288,main.pedersen.segments[0].windows[21].adr7.in2[0] -2951,1294,main.pedersen.segments[0].windows[21].adr7.in2[1] -2952,1289,main.pedersen.segments[0].windows[21].adr7.out[0] -2953,1295,main.pedersen.segments[0].windows[21].adr7.out[1] -2954,1316,main.pedersen.segments[0].windows[21].adr7.lamda -2955,1278,main.pedersen.segments[0].windows[21].adr8.in1[0] -2956,1279,main.pedersen.segments[0].windows[21].adr8.in1[1] -2957,1289,main.pedersen.segments[0].windows[21].adr8.in2[0] -2958,1295,main.pedersen.segments[0].windows[21].adr8.in2[1] -2959,1282,main.pedersen.segments[0].windows[21].adr8.out[0] -2960,1283,main.pedersen.segments[0].windows[21].adr8.out[1] -2961,1317,main.pedersen.segments[0].windows[21].adr8.lamda -2981,91,main.pedersen.segments[0].windows[22].in[0] -2982,92,main.pedersen.segments[0].windows[22].in[1] -2983,93,main.pedersen.segments[0].windows[22].in[2] -2984,94,main.pedersen.segments[0].windows[22].in[3] -2985,1327,main.pedersen.segments[0].windows[22].base[0] -2986,1328,main.pedersen.segments[0].windows[22].base[1] -2987,1329,main.pedersen.segments[0].windows[22].out[0] -2988,1330,main.pedersen.segments[0].windows[22].out[1] -2989,1331,main.pedersen.segments[0].windows[22].out8[0] -2990,1332,main.pedersen.segments[0].windows[22].out8[1] -2991,1327,main.pedersen.segments[0].windows[22].mux.c[0][0] -2992,1333,main.pedersen.segments[0].windows[22].mux.c[0][1] -2993,1334,main.pedersen.segments[0].windows[22].mux.c[0][2] -2994,1335,main.pedersen.segments[0].windows[22].mux.c[0][3] -2995,1336,main.pedersen.segments[0].windows[22].mux.c[0][4] -2996,1337,main.pedersen.segments[0].windows[22].mux.c[0][5] -2997,1338,main.pedersen.segments[0].windows[22].mux.c[0][6] -2998,1331,main.pedersen.segments[0].windows[22].mux.c[0][7] -2999,1328,main.pedersen.segments[0].windows[22].mux.c[1][0] -3000,1339,main.pedersen.segments[0].windows[22].mux.c[1][1] -3001,1340,main.pedersen.segments[0].windows[22].mux.c[1][2] -3002,1341,main.pedersen.segments[0].windows[22].mux.c[1][3] -3003,1342,main.pedersen.segments[0].windows[22].mux.c[1][4] -3004,1343,main.pedersen.segments[0].windows[22].mux.c[1][5] -3005,1344,main.pedersen.segments[0].windows[22].mux.c[1][6] -3006,1332,main.pedersen.segments[0].windows[22].mux.c[1][7] -3007,91,main.pedersen.segments[0].windows[22].mux.s[0] -3008,92,main.pedersen.segments[0].windows[22].mux.s[1] -3009,93,main.pedersen.segments[0].windows[22].mux.s[2] -3010,1329,main.pedersen.segments[0].windows[22].mux.out[0] -3011,1345,main.pedersen.segments[0].windows[22].mux.out[1] -3012,1346,main.pedersen.segments[0].windows[22].mux.a210[0] -3013,1347,main.pedersen.segments[0].windows[22].mux.a210[1] -3014,1348,main.pedersen.segments[0].windows[22].mux.a21[0] -3015,1349,main.pedersen.segments[0].windows[22].mux.a21[1] -3016,1350,main.pedersen.segments[0].windows[22].mux.a20[0] -3017,1351,main.pedersen.segments[0].windows[22].mux.a20[1] -3018,3427,main.pedersen.segments[0].windows[22].mux.a2[0] -3019,3428,main.pedersen.segments[0].windows[22].mux.a2[1] -3020,1352,main.pedersen.segments[0].windows[22].mux.a10[0] -3021,1353,main.pedersen.segments[0].windows[22].mux.a10[1] -3022,1354,main.pedersen.segments[0].windows[22].mux.a1[0] -3023,1355,main.pedersen.segments[0].windows[22].mux.a1[1] -3024,1356,main.pedersen.segments[0].windows[22].mux.a0[0] -3025,1357,main.pedersen.segments[0].windows[22].mux.a0[1] -3026,1327,main.pedersen.segments[0].windows[22].mux.a[0] -3027,1328,main.pedersen.segments[0].windows[22].mux.a[1] -3028,1358,main.pedersen.segments[0].windows[22].mux.s10 -3029,1327,main.pedersen.segments[0].windows[22].dbl2.in[0] -3030,1328,main.pedersen.segments[0].windows[22].dbl2.in[1] -3031,1333,main.pedersen.segments[0].windows[22].dbl2.out[0] -3032,1339,main.pedersen.segments[0].windows[22].dbl2.out[1] -3033,1359,main.pedersen.segments[0].windows[22].dbl2.lamda -3034,1360,main.pedersen.segments[0].windows[22].dbl2.x1_2 -3035,1327,main.pedersen.segments[0].windows[22].adr3.in1[0] -3036,1328,main.pedersen.segments[0].windows[22].adr3.in1[1] -3037,1333,main.pedersen.segments[0].windows[22].adr3.in2[0] -3038,1339,main.pedersen.segments[0].windows[22].adr3.in2[1] -3039,1334,main.pedersen.segments[0].windows[22].adr3.out[0] -3040,1340,main.pedersen.segments[0].windows[22].adr3.out[1] -3041,1361,main.pedersen.segments[0].windows[22].adr3.lamda -3042,1327,main.pedersen.segments[0].windows[22].adr4.in1[0] -3043,1328,main.pedersen.segments[0].windows[22].adr4.in1[1] -3044,1334,main.pedersen.segments[0].windows[22].adr4.in2[0] -3045,1340,main.pedersen.segments[0].windows[22].adr4.in2[1] -3046,1335,main.pedersen.segments[0].windows[22].adr4.out[0] -3047,1341,main.pedersen.segments[0].windows[22].adr4.out[1] -3048,1362,main.pedersen.segments[0].windows[22].adr4.lamda -3049,1327,main.pedersen.segments[0].windows[22].adr5.in1[0] -3050,1328,main.pedersen.segments[0].windows[22].adr5.in1[1] -3051,1335,main.pedersen.segments[0].windows[22].adr5.in2[0] -3052,1341,main.pedersen.segments[0].windows[22].adr5.in2[1] -3053,1336,main.pedersen.segments[0].windows[22].adr5.out[0] -3054,1342,main.pedersen.segments[0].windows[22].adr5.out[1] -3055,1363,main.pedersen.segments[0].windows[22].adr5.lamda -3056,1327,main.pedersen.segments[0].windows[22].adr6.in1[0] -3057,1328,main.pedersen.segments[0].windows[22].adr6.in1[1] -3058,1336,main.pedersen.segments[0].windows[22].adr6.in2[0] -3059,1342,main.pedersen.segments[0].windows[22].adr6.in2[1] -3060,1337,main.pedersen.segments[0].windows[22].adr6.out[0] -3061,1343,main.pedersen.segments[0].windows[22].adr6.out[1] -3062,1364,main.pedersen.segments[0].windows[22].adr6.lamda -3063,1327,main.pedersen.segments[0].windows[22].adr7.in1[0] -3064,1328,main.pedersen.segments[0].windows[22].adr7.in1[1] -3065,1337,main.pedersen.segments[0].windows[22].adr7.in2[0] -3066,1343,main.pedersen.segments[0].windows[22].adr7.in2[1] -3067,1338,main.pedersen.segments[0].windows[22].adr7.out[0] -3068,1344,main.pedersen.segments[0].windows[22].adr7.out[1] -3069,1365,main.pedersen.segments[0].windows[22].adr7.lamda -3070,1327,main.pedersen.segments[0].windows[22].adr8.in1[0] -3071,1328,main.pedersen.segments[0].windows[22].adr8.in1[1] -3072,1338,main.pedersen.segments[0].windows[22].adr8.in2[0] -3073,1344,main.pedersen.segments[0].windows[22].adr8.in2[1] -3074,1331,main.pedersen.segments[0].windows[22].adr8.out[0] -3075,1332,main.pedersen.segments[0].windows[22].adr8.out[1] -3076,1366,main.pedersen.segments[0].windows[22].adr8.lamda -3096,95,main.pedersen.segments[0].windows[23].in[0] -3097,96,main.pedersen.segments[0].windows[23].in[1] -3098,97,main.pedersen.segments[0].windows[23].in[2] -3099,98,main.pedersen.segments[0].windows[23].in[3] -3100,1376,main.pedersen.segments[0].windows[23].base[0] -3101,1377,main.pedersen.segments[0].windows[23].base[1] -3102,1378,main.pedersen.segments[0].windows[23].out[0] -3103,1379,main.pedersen.segments[0].windows[23].out[1] -3104,1380,main.pedersen.segments[0].windows[23].out8[0] -3105,1381,main.pedersen.segments[0].windows[23].out8[1] -3106,1376,main.pedersen.segments[0].windows[23].mux.c[0][0] -3107,1382,main.pedersen.segments[0].windows[23].mux.c[0][1] -3108,1383,main.pedersen.segments[0].windows[23].mux.c[0][2] -3109,1384,main.pedersen.segments[0].windows[23].mux.c[0][3] -3110,1385,main.pedersen.segments[0].windows[23].mux.c[0][4] -3111,1386,main.pedersen.segments[0].windows[23].mux.c[0][5] -3112,1387,main.pedersen.segments[0].windows[23].mux.c[0][6] -3113,1380,main.pedersen.segments[0].windows[23].mux.c[0][7] -3114,1377,main.pedersen.segments[0].windows[23].mux.c[1][0] -3115,1388,main.pedersen.segments[0].windows[23].mux.c[1][1] -3116,1389,main.pedersen.segments[0].windows[23].mux.c[1][2] -3117,1390,main.pedersen.segments[0].windows[23].mux.c[1][3] -3118,1391,main.pedersen.segments[0].windows[23].mux.c[1][4] -3119,1392,main.pedersen.segments[0].windows[23].mux.c[1][5] -3120,1393,main.pedersen.segments[0].windows[23].mux.c[1][6] -3121,1381,main.pedersen.segments[0].windows[23].mux.c[1][7] -3122,95,main.pedersen.segments[0].windows[23].mux.s[0] -3123,96,main.pedersen.segments[0].windows[23].mux.s[1] -3124,97,main.pedersen.segments[0].windows[23].mux.s[2] -3125,1378,main.pedersen.segments[0].windows[23].mux.out[0] -3126,1394,main.pedersen.segments[0].windows[23].mux.out[1] -3127,1395,main.pedersen.segments[0].windows[23].mux.a210[0] -3128,1396,main.pedersen.segments[0].windows[23].mux.a210[1] -3129,1397,main.pedersen.segments[0].windows[23].mux.a21[0] -3130,1398,main.pedersen.segments[0].windows[23].mux.a21[1] -3131,1399,main.pedersen.segments[0].windows[23].mux.a20[0] -3132,1400,main.pedersen.segments[0].windows[23].mux.a20[1] -3133,3429,main.pedersen.segments[0].windows[23].mux.a2[0] -3134,3430,main.pedersen.segments[0].windows[23].mux.a2[1] -3135,1401,main.pedersen.segments[0].windows[23].mux.a10[0] -3136,1402,main.pedersen.segments[0].windows[23].mux.a10[1] -3137,1403,main.pedersen.segments[0].windows[23].mux.a1[0] -3138,1404,main.pedersen.segments[0].windows[23].mux.a1[1] -3139,1405,main.pedersen.segments[0].windows[23].mux.a0[0] -3140,1406,main.pedersen.segments[0].windows[23].mux.a0[1] -3141,1376,main.pedersen.segments[0].windows[23].mux.a[0] -3142,1377,main.pedersen.segments[0].windows[23].mux.a[1] -3143,1407,main.pedersen.segments[0].windows[23].mux.s10 -3144,1376,main.pedersen.segments[0].windows[23].dbl2.in[0] -3145,1377,main.pedersen.segments[0].windows[23].dbl2.in[1] -3146,1382,main.pedersen.segments[0].windows[23].dbl2.out[0] -3147,1388,main.pedersen.segments[0].windows[23].dbl2.out[1] -3148,1408,main.pedersen.segments[0].windows[23].dbl2.lamda -3149,1409,main.pedersen.segments[0].windows[23].dbl2.x1_2 -3150,1376,main.pedersen.segments[0].windows[23].adr3.in1[0] -3151,1377,main.pedersen.segments[0].windows[23].adr3.in1[1] -3152,1382,main.pedersen.segments[0].windows[23].adr3.in2[0] -3153,1388,main.pedersen.segments[0].windows[23].adr3.in2[1] -3154,1383,main.pedersen.segments[0].windows[23].adr3.out[0] -3155,1389,main.pedersen.segments[0].windows[23].adr3.out[1] -3156,1410,main.pedersen.segments[0].windows[23].adr3.lamda -3157,1376,main.pedersen.segments[0].windows[23].adr4.in1[0] -3158,1377,main.pedersen.segments[0].windows[23].adr4.in1[1] -3159,1383,main.pedersen.segments[0].windows[23].adr4.in2[0] -3160,1389,main.pedersen.segments[0].windows[23].adr4.in2[1] -3161,1384,main.pedersen.segments[0].windows[23].adr4.out[0] -3162,1390,main.pedersen.segments[0].windows[23].adr4.out[1] -3163,1411,main.pedersen.segments[0].windows[23].adr4.lamda -3164,1376,main.pedersen.segments[0].windows[23].adr5.in1[0] -3165,1377,main.pedersen.segments[0].windows[23].adr5.in1[1] -3166,1384,main.pedersen.segments[0].windows[23].adr5.in2[0] -3167,1390,main.pedersen.segments[0].windows[23].adr5.in2[1] -3168,1385,main.pedersen.segments[0].windows[23].adr5.out[0] -3169,1391,main.pedersen.segments[0].windows[23].adr5.out[1] -3170,1412,main.pedersen.segments[0].windows[23].adr5.lamda -3171,1376,main.pedersen.segments[0].windows[23].adr6.in1[0] -3172,1377,main.pedersen.segments[0].windows[23].adr6.in1[1] -3173,1385,main.pedersen.segments[0].windows[23].adr6.in2[0] -3174,1391,main.pedersen.segments[0].windows[23].adr6.in2[1] -3175,1386,main.pedersen.segments[0].windows[23].adr6.out[0] -3176,1392,main.pedersen.segments[0].windows[23].adr6.out[1] -3177,1413,main.pedersen.segments[0].windows[23].adr6.lamda -3178,1376,main.pedersen.segments[0].windows[23].adr7.in1[0] -3179,1377,main.pedersen.segments[0].windows[23].adr7.in1[1] -3180,1386,main.pedersen.segments[0].windows[23].adr7.in2[0] -3181,1392,main.pedersen.segments[0].windows[23].adr7.in2[1] -3182,1387,main.pedersen.segments[0].windows[23].adr7.out[0] -3183,1393,main.pedersen.segments[0].windows[23].adr7.out[1] -3184,1414,main.pedersen.segments[0].windows[23].adr7.lamda -3185,1376,main.pedersen.segments[0].windows[23].adr8.in1[0] -3186,1377,main.pedersen.segments[0].windows[23].adr8.in1[1] -3187,1387,main.pedersen.segments[0].windows[23].adr8.in2[0] -3188,1393,main.pedersen.segments[0].windows[23].adr8.in2[1] -3189,1380,main.pedersen.segments[0].windows[23].adr8.out[0] -3190,1381,main.pedersen.segments[0].windows[23].adr8.out[1] -3191,1415,main.pedersen.segments[0].windows[23].adr8.lamda -3211,99,main.pedersen.segments[0].windows[24].in[0] -3212,100,main.pedersen.segments[0].windows[24].in[1] -3213,101,main.pedersen.segments[0].windows[24].in[2] -3214,102,main.pedersen.segments[0].windows[24].in[3] -3215,1425,main.pedersen.segments[0].windows[24].base[0] -3216,1426,main.pedersen.segments[0].windows[24].base[1] -3217,1427,main.pedersen.segments[0].windows[24].out[0] -3218,1428,main.pedersen.segments[0].windows[24].out[1] -3219,1429,main.pedersen.segments[0].windows[24].out8[0] -3220,1430,main.pedersen.segments[0].windows[24].out8[1] -3221,1425,main.pedersen.segments[0].windows[24].mux.c[0][0] -3222,1431,main.pedersen.segments[0].windows[24].mux.c[0][1] -3223,1432,main.pedersen.segments[0].windows[24].mux.c[0][2] -3224,1433,main.pedersen.segments[0].windows[24].mux.c[0][3] -3225,1434,main.pedersen.segments[0].windows[24].mux.c[0][4] -3226,1435,main.pedersen.segments[0].windows[24].mux.c[0][5] -3227,1436,main.pedersen.segments[0].windows[24].mux.c[0][6] -3228,1429,main.pedersen.segments[0].windows[24].mux.c[0][7] -3229,1426,main.pedersen.segments[0].windows[24].mux.c[1][0] -3230,1437,main.pedersen.segments[0].windows[24].mux.c[1][1] -3231,1438,main.pedersen.segments[0].windows[24].mux.c[1][2] -3232,1439,main.pedersen.segments[0].windows[24].mux.c[1][3] -3233,1440,main.pedersen.segments[0].windows[24].mux.c[1][4] -3234,1441,main.pedersen.segments[0].windows[24].mux.c[1][5] -3235,1442,main.pedersen.segments[0].windows[24].mux.c[1][6] -3236,1430,main.pedersen.segments[0].windows[24].mux.c[1][7] -3237,99,main.pedersen.segments[0].windows[24].mux.s[0] -3238,100,main.pedersen.segments[0].windows[24].mux.s[1] -3239,101,main.pedersen.segments[0].windows[24].mux.s[2] -3240,1427,main.pedersen.segments[0].windows[24].mux.out[0] -3241,1443,main.pedersen.segments[0].windows[24].mux.out[1] -3242,1444,main.pedersen.segments[0].windows[24].mux.a210[0] -3243,1445,main.pedersen.segments[0].windows[24].mux.a210[1] -3244,1446,main.pedersen.segments[0].windows[24].mux.a21[0] -3245,1447,main.pedersen.segments[0].windows[24].mux.a21[1] -3246,1448,main.pedersen.segments[0].windows[24].mux.a20[0] -3247,1449,main.pedersen.segments[0].windows[24].mux.a20[1] -3248,3431,main.pedersen.segments[0].windows[24].mux.a2[0] -3249,3432,main.pedersen.segments[0].windows[24].mux.a2[1] -3250,1450,main.pedersen.segments[0].windows[24].mux.a10[0] -3251,1451,main.pedersen.segments[0].windows[24].mux.a10[1] -3252,1452,main.pedersen.segments[0].windows[24].mux.a1[0] -3253,1453,main.pedersen.segments[0].windows[24].mux.a1[1] -3254,1454,main.pedersen.segments[0].windows[24].mux.a0[0] -3255,1455,main.pedersen.segments[0].windows[24].mux.a0[1] -3256,1425,main.pedersen.segments[0].windows[24].mux.a[0] -3257,1426,main.pedersen.segments[0].windows[24].mux.a[1] -3258,1456,main.pedersen.segments[0].windows[24].mux.s10 -3259,1425,main.pedersen.segments[0].windows[24].dbl2.in[0] -3260,1426,main.pedersen.segments[0].windows[24].dbl2.in[1] -3261,1431,main.pedersen.segments[0].windows[24].dbl2.out[0] -3262,1437,main.pedersen.segments[0].windows[24].dbl2.out[1] -3263,1457,main.pedersen.segments[0].windows[24].dbl2.lamda -3264,1458,main.pedersen.segments[0].windows[24].dbl2.x1_2 -3265,1425,main.pedersen.segments[0].windows[24].adr3.in1[0] -3266,1426,main.pedersen.segments[0].windows[24].adr3.in1[1] -3267,1431,main.pedersen.segments[0].windows[24].adr3.in2[0] -3268,1437,main.pedersen.segments[0].windows[24].adr3.in2[1] -3269,1432,main.pedersen.segments[0].windows[24].adr3.out[0] -3270,1438,main.pedersen.segments[0].windows[24].adr3.out[1] -3271,1459,main.pedersen.segments[0].windows[24].adr3.lamda -3272,1425,main.pedersen.segments[0].windows[24].adr4.in1[0] -3273,1426,main.pedersen.segments[0].windows[24].adr4.in1[1] -3274,1432,main.pedersen.segments[0].windows[24].adr4.in2[0] -3275,1438,main.pedersen.segments[0].windows[24].adr4.in2[1] -3276,1433,main.pedersen.segments[0].windows[24].adr4.out[0] -3277,1439,main.pedersen.segments[0].windows[24].adr4.out[1] -3278,1460,main.pedersen.segments[0].windows[24].adr4.lamda -3279,1425,main.pedersen.segments[0].windows[24].adr5.in1[0] -3280,1426,main.pedersen.segments[0].windows[24].adr5.in1[1] -3281,1433,main.pedersen.segments[0].windows[24].adr5.in2[0] -3282,1439,main.pedersen.segments[0].windows[24].adr5.in2[1] -3283,1434,main.pedersen.segments[0].windows[24].adr5.out[0] -3284,1440,main.pedersen.segments[0].windows[24].adr5.out[1] -3285,1461,main.pedersen.segments[0].windows[24].adr5.lamda -3286,1425,main.pedersen.segments[0].windows[24].adr6.in1[0] -3287,1426,main.pedersen.segments[0].windows[24].adr6.in1[1] -3288,1434,main.pedersen.segments[0].windows[24].adr6.in2[0] -3289,1440,main.pedersen.segments[0].windows[24].adr6.in2[1] -3290,1435,main.pedersen.segments[0].windows[24].adr6.out[0] -3291,1441,main.pedersen.segments[0].windows[24].adr6.out[1] -3292,1462,main.pedersen.segments[0].windows[24].adr6.lamda -3293,1425,main.pedersen.segments[0].windows[24].adr7.in1[0] -3294,1426,main.pedersen.segments[0].windows[24].adr7.in1[1] -3295,1435,main.pedersen.segments[0].windows[24].adr7.in2[0] -3296,1441,main.pedersen.segments[0].windows[24].adr7.in2[1] -3297,1436,main.pedersen.segments[0].windows[24].adr7.out[0] -3298,1442,main.pedersen.segments[0].windows[24].adr7.out[1] -3299,1463,main.pedersen.segments[0].windows[24].adr7.lamda -3300,1425,main.pedersen.segments[0].windows[24].adr8.in1[0] -3301,1426,main.pedersen.segments[0].windows[24].adr8.in1[1] -3302,1436,main.pedersen.segments[0].windows[24].adr8.in2[0] -3303,1442,main.pedersen.segments[0].windows[24].adr8.in2[1] -3304,1429,main.pedersen.segments[0].windows[24].adr8.out[0] -3305,1430,main.pedersen.segments[0].windows[24].adr8.out[1] -3306,1464,main.pedersen.segments[0].windows[24].adr8.lamda -3326,103,main.pedersen.segments[0].windows[25].in[0] -3327,104,main.pedersen.segments[0].windows[25].in[1] -3328,105,main.pedersen.segments[0].windows[25].in[2] -3329,106,main.pedersen.segments[0].windows[25].in[3] -3330,1474,main.pedersen.segments[0].windows[25].base[0] -3331,1475,main.pedersen.segments[0].windows[25].base[1] -3332,1476,main.pedersen.segments[0].windows[25].out[0] -3333,1477,main.pedersen.segments[0].windows[25].out[1] -3334,1478,main.pedersen.segments[0].windows[25].out8[0] -3335,1479,main.pedersen.segments[0].windows[25].out8[1] -3336,1474,main.pedersen.segments[0].windows[25].mux.c[0][0] -3337,1480,main.pedersen.segments[0].windows[25].mux.c[0][1] -3338,1481,main.pedersen.segments[0].windows[25].mux.c[0][2] -3339,1482,main.pedersen.segments[0].windows[25].mux.c[0][3] -3340,1483,main.pedersen.segments[0].windows[25].mux.c[0][4] -3341,1484,main.pedersen.segments[0].windows[25].mux.c[0][5] -3342,1485,main.pedersen.segments[0].windows[25].mux.c[0][6] -3343,1478,main.pedersen.segments[0].windows[25].mux.c[0][7] -3344,1475,main.pedersen.segments[0].windows[25].mux.c[1][0] -3345,1486,main.pedersen.segments[0].windows[25].mux.c[1][1] -3346,1487,main.pedersen.segments[0].windows[25].mux.c[1][2] -3347,1488,main.pedersen.segments[0].windows[25].mux.c[1][3] -3348,1489,main.pedersen.segments[0].windows[25].mux.c[1][4] -3349,1490,main.pedersen.segments[0].windows[25].mux.c[1][5] -3350,1491,main.pedersen.segments[0].windows[25].mux.c[1][6] -3351,1479,main.pedersen.segments[0].windows[25].mux.c[1][7] -3352,103,main.pedersen.segments[0].windows[25].mux.s[0] -3353,104,main.pedersen.segments[0].windows[25].mux.s[1] -3354,105,main.pedersen.segments[0].windows[25].mux.s[2] -3355,1476,main.pedersen.segments[0].windows[25].mux.out[0] -3356,1492,main.pedersen.segments[0].windows[25].mux.out[1] -3357,1493,main.pedersen.segments[0].windows[25].mux.a210[0] -3358,1494,main.pedersen.segments[0].windows[25].mux.a210[1] -3359,1495,main.pedersen.segments[0].windows[25].mux.a21[0] -3360,1496,main.pedersen.segments[0].windows[25].mux.a21[1] -3361,1497,main.pedersen.segments[0].windows[25].mux.a20[0] -3362,1498,main.pedersen.segments[0].windows[25].mux.a20[1] -3363,3433,main.pedersen.segments[0].windows[25].mux.a2[0] -3364,3434,main.pedersen.segments[0].windows[25].mux.a2[1] -3365,1499,main.pedersen.segments[0].windows[25].mux.a10[0] -3366,1500,main.pedersen.segments[0].windows[25].mux.a10[1] -3367,1501,main.pedersen.segments[0].windows[25].mux.a1[0] -3368,1502,main.pedersen.segments[0].windows[25].mux.a1[1] -3369,1503,main.pedersen.segments[0].windows[25].mux.a0[0] -3370,1504,main.pedersen.segments[0].windows[25].mux.a0[1] -3371,1474,main.pedersen.segments[0].windows[25].mux.a[0] -3372,1475,main.pedersen.segments[0].windows[25].mux.a[1] -3373,1505,main.pedersen.segments[0].windows[25].mux.s10 -3374,1474,main.pedersen.segments[0].windows[25].dbl2.in[0] -3375,1475,main.pedersen.segments[0].windows[25].dbl2.in[1] -3376,1480,main.pedersen.segments[0].windows[25].dbl2.out[0] -3377,1486,main.pedersen.segments[0].windows[25].dbl2.out[1] -3378,1506,main.pedersen.segments[0].windows[25].dbl2.lamda -3379,1507,main.pedersen.segments[0].windows[25].dbl2.x1_2 -3380,1474,main.pedersen.segments[0].windows[25].adr3.in1[0] -3381,1475,main.pedersen.segments[0].windows[25].adr3.in1[1] -3382,1480,main.pedersen.segments[0].windows[25].adr3.in2[0] -3383,1486,main.pedersen.segments[0].windows[25].adr3.in2[1] -3384,1481,main.pedersen.segments[0].windows[25].adr3.out[0] -3385,1487,main.pedersen.segments[0].windows[25].adr3.out[1] -3386,1508,main.pedersen.segments[0].windows[25].adr3.lamda -3387,1474,main.pedersen.segments[0].windows[25].adr4.in1[0] -3388,1475,main.pedersen.segments[0].windows[25].adr4.in1[1] -3389,1481,main.pedersen.segments[0].windows[25].adr4.in2[0] -3390,1487,main.pedersen.segments[0].windows[25].adr4.in2[1] -3391,1482,main.pedersen.segments[0].windows[25].adr4.out[0] -3392,1488,main.pedersen.segments[0].windows[25].adr4.out[1] -3393,1509,main.pedersen.segments[0].windows[25].adr4.lamda -3394,1474,main.pedersen.segments[0].windows[25].adr5.in1[0] -3395,1475,main.pedersen.segments[0].windows[25].adr5.in1[1] -3396,1482,main.pedersen.segments[0].windows[25].adr5.in2[0] -3397,1488,main.pedersen.segments[0].windows[25].adr5.in2[1] -3398,1483,main.pedersen.segments[0].windows[25].adr5.out[0] -3399,1489,main.pedersen.segments[0].windows[25].adr5.out[1] -3400,1510,main.pedersen.segments[0].windows[25].adr5.lamda -3401,1474,main.pedersen.segments[0].windows[25].adr6.in1[0] -3402,1475,main.pedersen.segments[0].windows[25].adr6.in1[1] -3403,1483,main.pedersen.segments[0].windows[25].adr6.in2[0] -3404,1489,main.pedersen.segments[0].windows[25].adr6.in2[1] -3405,1484,main.pedersen.segments[0].windows[25].adr6.out[0] -3406,1490,main.pedersen.segments[0].windows[25].adr6.out[1] -3407,1511,main.pedersen.segments[0].windows[25].adr6.lamda -3408,1474,main.pedersen.segments[0].windows[25].adr7.in1[0] -3409,1475,main.pedersen.segments[0].windows[25].adr7.in1[1] -3410,1484,main.pedersen.segments[0].windows[25].adr7.in2[0] -3411,1490,main.pedersen.segments[0].windows[25].adr7.in2[1] -3412,1485,main.pedersen.segments[0].windows[25].adr7.out[0] -3413,1491,main.pedersen.segments[0].windows[25].adr7.out[1] -3414,1512,main.pedersen.segments[0].windows[25].adr7.lamda -3415,1474,main.pedersen.segments[0].windows[25].adr8.in1[0] -3416,1475,main.pedersen.segments[0].windows[25].adr8.in1[1] -3417,1485,main.pedersen.segments[0].windows[25].adr8.in2[0] -3418,1491,main.pedersen.segments[0].windows[25].adr8.in2[1] -3419,1478,main.pedersen.segments[0].windows[25].adr8.out[0] -3420,1479,main.pedersen.segments[0].windows[25].adr8.out[1] -3421,1513,main.pedersen.segments[0].windows[25].adr8.lamda -3441,107,main.pedersen.segments[0].windows[26].in[0] -3442,108,main.pedersen.segments[0].windows[26].in[1] -3443,109,main.pedersen.segments[0].windows[26].in[2] -3444,110,main.pedersen.segments[0].windows[26].in[3] -3445,1523,main.pedersen.segments[0].windows[26].base[0] -3446,1524,main.pedersen.segments[0].windows[26].base[1] -3447,1525,main.pedersen.segments[0].windows[26].out[0] -3448,1526,main.pedersen.segments[0].windows[26].out[1] -3449,1527,main.pedersen.segments[0].windows[26].out8[0] -3450,1528,main.pedersen.segments[0].windows[26].out8[1] -3451,1523,main.pedersen.segments[0].windows[26].mux.c[0][0] -3452,1529,main.pedersen.segments[0].windows[26].mux.c[0][1] -3453,1530,main.pedersen.segments[0].windows[26].mux.c[0][2] -3454,1531,main.pedersen.segments[0].windows[26].mux.c[0][3] -3455,1532,main.pedersen.segments[0].windows[26].mux.c[0][4] -3456,1533,main.pedersen.segments[0].windows[26].mux.c[0][5] -3457,1534,main.pedersen.segments[0].windows[26].mux.c[0][6] -3458,1527,main.pedersen.segments[0].windows[26].mux.c[0][7] -3459,1524,main.pedersen.segments[0].windows[26].mux.c[1][0] -3460,1535,main.pedersen.segments[0].windows[26].mux.c[1][1] -3461,1536,main.pedersen.segments[0].windows[26].mux.c[1][2] -3462,1537,main.pedersen.segments[0].windows[26].mux.c[1][3] -3463,1538,main.pedersen.segments[0].windows[26].mux.c[1][4] -3464,1539,main.pedersen.segments[0].windows[26].mux.c[1][5] -3465,1540,main.pedersen.segments[0].windows[26].mux.c[1][6] -3466,1528,main.pedersen.segments[0].windows[26].mux.c[1][7] -3467,107,main.pedersen.segments[0].windows[26].mux.s[0] -3468,108,main.pedersen.segments[0].windows[26].mux.s[1] -3469,109,main.pedersen.segments[0].windows[26].mux.s[2] -3470,1525,main.pedersen.segments[0].windows[26].mux.out[0] -3471,1541,main.pedersen.segments[0].windows[26].mux.out[1] -3472,1542,main.pedersen.segments[0].windows[26].mux.a210[0] -3473,1543,main.pedersen.segments[0].windows[26].mux.a210[1] -3474,1544,main.pedersen.segments[0].windows[26].mux.a21[0] -3475,1545,main.pedersen.segments[0].windows[26].mux.a21[1] -3476,1546,main.pedersen.segments[0].windows[26].mux.a20[0] -3477,1547,main.pedersen.segments[0].windows[26].mux.a20[1] -3478,3435,main.pedersen.segments[0].windows[26].mux.a2[0] -3479,3436,main.pedersen.segments[0].windows[26].mux.a2[1] -3480,1548,main.pedersen.segments[0].windows[26].mux.a10[0] -3481,1549,main.pedersen.segments[0].windows[26].mux.a10[1] -3482,1550,main.pedersen.segments[0].windows[26].mux.a1[0] -3483,1551,main.pedersen.segments[0].windows[26].mux.a1[1] -3484,1552,main.pedersen.segments[0].windows[26].mux.a0[0] -3485,1553,main.pedersen.segments[0].windows[26].mux.a0[1] -3486,1523,main.pedersen.segments[0].windows[26].mux.a[0] -3487,1524,main.pedersen.segments[0].windows[26].mux.a[1] -3488,1554,main.pedersen.segments[0].windows[26].mux.s10 -3489,1523,main.pedersen.segments[0].windows[26].dbl2.in[0] -3490,1524,main.pedersen.segments[0].windows[26].dbl2.in[1] -3491,1529,main.pedersen.segments[0].windows[26].dbl2.out[0] -3492,1535,main.pedersen.segments[0].windows[26].dbl2.out[1] -3493,1555,main.pedersen.segments[0].windows[26].dbl2.lamda -3494,1556,main.pedersen.segments[0].windows[26].dbl2.x1_2 -3495,1523,main.pedersen.segments[0].windows[26].adr3.in1[0] -3496,1524,main.pedersen.segments[0].windows[26].adr3.in1[1] -3497,1529,main.pedersen.segments[0].windows[26].adr3.in2[0] -3498,1535,main.pedersen.segments[0].windows[26].adr3.in2[1] -3499,1530,main.pedersen.segments[0].windows[26].adr3.out[0] -3500,1536,main.pedersen.segments[0].windows[26].adr3.out[1] -3501,1557,main.pedersen.segments[0].windows[26].adr3.lamda -3502,1523,main.pedersen.segments[0].windows[26].adr4.in1[0] -3503,1524,main.pedersen.segments[0].windows[26].adr4.in1[1] -3504,1530,main.pedersen.segments[0].windows[26].adr4.in2[0] -3505,1536,main.pedersen.segments[0].windows[26].adr4.in2[1] -3506,1531,main.pedersen.segments[0].windows[26].adr4.out[0] -3507,1537,main.pedersen.segments[0].windows[26].adr4.out[1] -3508,1558,main.pedersen.segments[0].windows[26].adr4.lamda -3509,1523,main.pedersen.segments[0].windows[26].adr5.in1[0] -3510,1524,main.pedersen.segments[0].windows[26].adr5.in1[1] -3511,1531,main.pedersen.segments[0].windows[26].adr5.in2[0] -3512,1537,main.pedersen.segments[0].windows[26].adr5.in2[1] -3513,1532,main.pedersen.segments[0].windows[26].adr5.out[0] -3514,1538,main.pedersen.segments[0].windows[26].adr5.out[1] -3515,1559,main.pedersen.segments[0].windows[26].adr5.lamda -3516,1523,main.pedersen.segments[0].windows[26].adr6.in1[0] -3517,1524,main.pedersen.segments[0].windows[26].adr6.in1[1] -3518,1532,main.pedersen.segments[0].windows[26].adr6.in2[0] -3519,1538,main.pedersen.segments[0].windows[26].adr6.in2[1] -3520,1533,main.pedersen.segments[0].windows[26].adr6.out[0] -3521,1539,main.pedersen.segments[0].windows[26].adr6.out[1] -3522,1560,main.pedersen.segments[0].windows[26].adr6.lamda -3523,1523,main.pedersen.segments[0].windows[26].adr7.in1[0] -3524,1524,main.pedersen.segments[0].windows[26].adr7.in1[1] -3525,1533,main.pedersen.segments[0].windows[26].adr7.in2[0] -3526,1539,main.pedersen.segments[0].windows[26].adr7.in2[1] -3527,1534,main.pedersen.segments[0].windows[26].adr7.out[0] -3528,1540,main.pedersen.segments[0].windows[26].adr7.out[1] -3529,1561,main.pedersen.segments[0].windows[26].adr7.lamda -3530,1523,main.pedersen.segments[0].windows[26].adr8.in1[0] -3531,1524,main.pedersen.segments[0].windows[26].adr8.in1[1] -3532,1534,main.pedersen.segments[0].windows[26].adr8.in2[0] -3533,1540,main.pedersen.segments[0].windows[26].adr8.in2[1] -3534,1527,main.pedersen.segments[0].windows[26].adr8.out[0] -3535,1528,main.pedersen.segments[0].windows[26].adr8.out[1] -3536,1562,main.pedersen.segments[0].windows[26].adr8.lamda -3556,111,main.pedersen.segments[0].windows[27].in[0] -3557,112,main.pedersen.segments[0].windows[27].in[1] -3558,113,main.pedersen.segments[0].windows[27].in[2] -3559,114,main.pedersen.segments[0].windows[27].in[3] -3560,1572,main.pedersen.segments[0].windows[27].base[0] -3561,1573,main.pedersen.segments[0].windows[27].base[1] -3562,1574,main.pedersen.segments[0].windows[27].out[0] -3563,1575,main.pedersen.segments[0].windows[27].out[1] -3564,1576,main.pedersen.segments[0].windows[27].out8[0] -3565,1577,main.pedersen.segments[0].windows[27].out8[1] -3566,1572,main.pedersen.segments[0].windows[27].mux.c[0][0] -3567,1578,main.pedersen.segments[0].windows[27].mux.c[0][1] -3568,1579,main.pedersen.segments[0].windows[27].mux.c[0][2] -3569,1580,main.pedersen.segments[0].windows[27].mux.c[0][3] -3570,1581,main.pedersen.segments[0].windows[27].mux.c[0][4] -3571,1582,main.pedersen.segments[0].windows[27].mux.c[0][5] -3572,1583,main.pedersen.segments[0].windows[27].mux.c[0][6] -3573,1576,main.pedersen.segments[0].windows[27].mux.c[0][7] -3574,1573,main.pedersen.segments[0].windows[27].mux.c[1][0] -3575,1584,main.pedersen.segments[0].windows[27].mux.c[1][1] -3576,1585,main.pedersen.segments[0].windows[27].mux.c[1][2] -3577,1586,main.pedersen.segments[0].windows[27].mux.c[1][3] -3578,1587,main.pedersen.segments[0].windows[27].mux.c[1][4] -3579,1588,main.pedersen.segments[0].windows[27].mux.c[1][5] -3580,1589,main.pedersen.segments[0].windows[27].mux.c[1][6] -3581,1577,main.pedersen.segments[0].windows[27].mux.c[1][7] -3582,111,main.pedersen.segments[0].windows[27].mux.s[0] -3583,112,main.pedersen.segments[0].windows[27].mux.s[1] -3584,113,main.pedersen.segments[0].windows[27].mux.s[2] -3585,1574,main.pedersen.segments[0].windows[27].mux.out[0] -3586,1590,main.pedersen.segments[0].windows[27].mux.out[1] -3587,1591,main.pedersen.segments[0].windows[27].mux.a210[0] -3588,1592,main.pedersen.segments[0].windows[27].mux.a210[1] -3589,1593,main.pedersen.segments[0].windows[27].mux.a21[0] -3590,1594,main.pedersen.segments[0].windows[27].mux.a21[1] -3591,1595,main.pedersen.segments[0].windows[27].mux.a20[0] -3592,1596,main.pedersen.segments[0].windows[27].mux.a20[1] -3593,3437,main.pedersen.segments[0].windows[27].mux.a2[0] -3594,3438,main.pedersen.segments[0].windows[27].mux.a2[1] -3595,1597,main.pedersen.segments[0].windows[27].mux.a10[0] -3596,1598,main.pedersen.segments[0].windows[27].mux.a10[1] -3597,1599,main.pedersen.segments[0].windows[27].mux.a1[0] -3598,1600,main.pedersen.segments[0].windows[27].mux.a1[1] -3599,1601,main.pedersen.segments[0].windows[27].mux.a0[0] -3600,1602,main.pedersen.segments[0].windows[27].mux.a0[1] -3601,1572,main.pedersen.segments[0].windows[27].mux.a[0] -3602,1573,main.pedersen.segments[0].windows[27].mux.a[1] -3603,1603,main.pedersen.segments[0].windows[27].mux.s10 -3604,1572,main.pedersen.segments[0].windows[27].dbl2.in[0] -3605,1573,main.pedersen.segments[0].windows[27].dbl2.in[1] -3606,1578,main.pedersen.segments[0].windows[27].dbl2.out[0] -3607,1584,main.pedersen.segments[0].windows[27].dbl2.out[1] -3608,1604,main.pedersen.segments[0].windows[27].dbl2.lamda -3609,1605,main.pedersen.segments[0].windows[27].dbl2.x1_2 -3610,1572,main.pedersen.segments[0].windows[27].adr3.in1[0] -3611,1573,main.pedersen.segments[0].windows[27].adr3.in1[1] -3612,1578,main.pedersen.segments[0].windows[27].adr3.in2[0] -3613,1584,main.pedersen.segments[0].windows[27].adr3.in2[1] -3614,1579,main.pedersen.segments[0].windows[27].adr3.out[0] -3615,1585,main.pedersen.segments[0].windows[27].adr3.out[1] -3616,1606,main.pedersen.segments[0].windows[27].adr3.lamda -3617,1572,main.pedersen.segments[0].windows[27].adr4.in1[0] -3618,1573,main.pedersen.segments[0].windows[27].adr4.in1[1] -3619,1579,main.pedersen.segments[0].windows[27].adr4.in2[0] -3620,1585,main.pedersen.segments[0].windows[27].adr4.in2[1] -3621,1580,main.pedersen.segments[0].windows[27].adr4.out[0] -3622,1586,main.pedersen.segments[0].windows[27].adr4.out[1] -3623,1607,main.pedersen.segments[0].windows[27].adr4.lamda -3624,1572,main.pedersen.segments[0].windows[27].adr5.in1[0] -3625,1573,main.pedersen.segments[0].windows[27].adr5.in1[1] -3626,1580,main.pedersen.segments[0].windows[27].adr5.in2[0] -3627,1586,main.pedersen.segments[0].windows[27].adr5.in2[1] -3628,1581,main.pedersen.segments[0].windows[27].adr5.out[0] -3629,1587,main.pedersen.segments[0].windows[27].adr5.out[1] -3630,1608,main.pedersen.segments[0].windows[27].adr5.lamda -3631,1572,main.pedersen.segments[0].windows[27].adr6.in1[0] -3632,1573,main.pedersen.segments[0].windows[27].adr6.in1[1] -3633,1581,main.pedersen.segments[0].windows[27].adr6.in2[0] -3634,1587,main.pedersen.segments[0].windows[27].adr6.in2[1] -3635,1582,main.pedersen.segments[0].windows[27].adr6.out[0] -3636,1588,main.pedersen.segments[0].windows[27].adr6.out[1] -3637,1609,main.pedersen.segments[0].windows[27].adr6.lamda -3638,1572,main.pedersen.segments[0].windows[27].adr7.in1[0] -3639,1573,main.pedersen.segments[0].windows[27].adr7.in1[1] -3640,1582,main.pedersen.segments[0].windows[27].adr7.in2[0] -3641,1588,main.pedersen.segments[0].windows[27].adr7.in2[1] -3642,1583,main.pedersen.segments[0].windows[27].adr7.out[0] -3643,1589,main.pedersen.segments[0].windows[27].adr7.out[1] -3644,1610,main.pedersen.segments[0].windows[27].adr7.lamda -3645,1572,main.pedersen.segments[0].windows[27].adr8.in1[0] -3646,1573,main.pedersen.segments[0].windows[27].adr8.in1[1] -3647,1583,main.pedersen.segments[0].windows[27].adr8.in2[0] -3648,1589,main.pedersen.segments[0].windows[27].adr8.in2[1] -3649,1576,main.pedersen.segments[0].windows[27].adr8.out[0] -3650,1577,main.pedersen.segments[0].windows[27].adr8.out[1] -3651,1611,main.pedersen.segments[0].windows[27].adr8.lamda -3671,115,main.pedersen.segments[0].windows[28].in[0] -3672,116,main.pedersen.segments[0].windows[28].in[1] -3673,117,main.pedersen.segments[0].windows[28].in[2] -3674,118,main.pedersen.segments[0].windows[28].in[3] -3675,1621,main.pedersen.segments[0].windows[28].base[0] -3676,1622,main.pedersen.segments[0].windows[28].base[1] -3677,1623,main.pedersen.segments[0].windows[28].out[0] -3678,1624,main.pedersen.segments[0].windows[28].out[1] -3679,1625,main.pedersen.segments[0].windows[28].out8[0] -3680,1626,main.pedersen.segments[0].windows[28].out8[1] -3681,1621,main.pedersen.segments[0].windows[28].mux.c[0][0] -3682,1627,main.pedersen.segments[0].windows[28].mux.c[0][1] -3683,1628,main.pedersen.segments[0].windows[28].mux.c[0][2] -3684,1629,main.pedersen.segments[0].windows[28].mux.c[0][3] -3685,1630,main.pedersen.segments[0].windows[28].mux.c[0][4] -3686,1631,main.pedersen.segments[0].windows[28].mux.c[0][5] -3687,1632,main.pedersen.segments[0].windows[28].mux.c[0][6] -3688,1625,main.pedersen.segments[0].windows[28].mux.c[0][7] -3689,1622,main.pedersen.segments[0].windows[28].mux.c[1][0] -3690,1633,main.pedersen.segments[0].windows[28].mux.c[1][1] -3691,1634,main.pedersen.segments[0].windows[28].mux.c[1][2] -3692,1635,main.pedersen.segments[0].windows[28].mux.c[1][3] -3693,1636,main.pedersen.segments[0].windows[28].mux.c[1][4] -3694,1637,main.pedersen.segments[0].windows[28].mux.c[1][5] -3695,1638,main.pedersen.segments[0].windows[28].mux.c[1][6] -3696,1626,main.pedersen.segments[0].windows[28].mux.c[1][7] -3697,115,main.pedersen.segments[0].windows[28].mux.s[0] -3698,116,main.pedersen.segments[0].windows[28].mux.s[1] -3699,117,main.pedersen.segments[0].windows[28].mux.s[2] -3700,1623,main.pedersen.segments[0].windows[28].mux.out[0] -3701,1639,main.pedersen.segments[0].windows[28].mux.out[1] -3702,1640,main.pedersen.segments[0].windows[28].mux.a210[0] -3703,1641,main.pedersen.segments[0].windows[28].mux.a210[1] -3704,1642,main.pedersen.segments[0].windows[28].mux.a21[0] -3705,1643,main.pedersen.segments[0].windows[28].mux.a21[1] -3706,1644,main.pedersen.segments[0].windows[28].mux.a20[0] -3707,1645,main.pedersen.segments[0].windows[28].mux.a20[1] -3708,3439,main.pedersen.segments[0].windows[28].mux.a2[0] -3709,3440,main.pedersen.segments[0].windows[28].mux.a2[1] -3710,1646,main.pedersen.segments[0].windows[28].mux.a10[0] -3711,1647,main.pedersen.segments[0].windows[28].mux.a10[1] -3712,1648,main.pedersen.segments[0].windows[28].mux.a1[0] -3713,1649,main.pedersen.segments[0].windows[28].mux.a1[1] -3714,1650,main.pedersen.segments[0].windows[28].mux.a0[0] -3715,1651,main.pedersen.segments[0].windows[28].mux.a0[1] -3716,1621,main.pedersen.segments[0].windows[28].mux.a[0] -3717,1622,main.pedersen.segments[0].windows[28].mux.a[1] -3718,1652,main.pedersen.segments[0].windows[28].mux.s10 -3719,1621,main.pedersen.segments[0].windows[28].dbl2.in[0] -3720,1622,main.pedersen.segments[0].windows[28].dbl2.in[1] -3721,1627,main.pedersen.segments[0].windows[28].dbl2.out[0] -3722,1633,main.pedersen.segments[0].windows[28].dbl2.out[1] -3723,1653,main.pedersen.segments[0].windows[28].dbl2.lamda -3724,1654,main.pedersen.segments[0].windows[28].dbl2.x1_2 -3725,1621,main.pedersen.segments[0].windows[28].adr3.in1[0] -3726,1622,main.pedersen.segments[0].windows[28].adr3.in1[1] -3727,1627,main.pedersen.segments[0].windows[28].adr3.in2[0] -3728,1633,main.pedersen.segments[0].windows[28].adr3.in2[1] -3729,1628,main.pedersen.segments[0].windows[28].adr3.out[0] -3730,1634,main.pedersen.segments[0].windows[28].adr3.out[1] -3731,1655,main.pedersen.segments[0].windows[28].adr3.lamda -3732,1621,main.pedersen.segments[0].windows[28].adr4.in1[0] -3733,1622,main.pedersen.segments[0].windows[28].adr4.in1[1] -3734,1628,main.pedersen.segments[0].windows[28].adr4.in2[0] -3735,1634,main.pedersen.segments[0].windows[28].adr4.in2[1] -3736,1629,main.pedersen.segments[0].windows[28].adr4.out[0] -3737,1635,main.pedersen.segments[0].windows[28].adr4.out[1] -3738,1656,main.pedersen.segments[0].windows[28].adr4.lamda -3739,1621,main.pedersen.segments[0].windows[28].adr5.in1[0] -3740,1622,main.pedersen.segments[0].windows[28].adr5.in1[1] -3741,1629,main.pedersen.segments[0].windows[28].adr5.in2[0] -3742,1635,main.pedersen.segments[0].windows[28].adr5.in2[1] -3743,1630,main.pedersen.segments[0].windows[28].adr5.out[0] -3744,1636,main.pedersen.segments[0].windows[28].adr5.out[1] -3745,1657,main.pedersen.segments[0].windows[28].adr5.lamda -3746,1621,main.pedersen.segments[0].windows[28].adr6.in1[0] -3747,1622,main.pedersen.segments[0].windows[28].adr6.in1[1] -3748,1630,main.pedersen.segments[0].windows[28].adr6.in2[0] -3749,1636,main.pedersen.segments[0].windows[28].adr6.in2[1] -3750,1631,main.pedersen.segments[0].windows[28].adr6.out[0] -3751,1637,main.pedersen.segments[0].windows[28].adr6.out[1] -3752,1658,main.pedersen.segments[0].windows[28].adr6.lamda -3753,1621,main.pedersen.segments[0].windows[28].adr7.in1[0] -3754,1622,main.pedersen.segments[0].windows[28].adr7.in1[1] -3755,1631,main.pedersen.segments[0].windows[28].adr7.in2[0] -3756,1637,main.pedersen.segments[0].windows[28].adr7.in2[1] -3757,1632,main.pedersen.segments[0].windows[28].adr7.out[0] -3758,1638,main.pedersen.segments[0].windows[28].adr7.out[1] -3759,1659,main.pedersen.segments[0].windows[28].adr7.lamda -3760,1621,main.pedersen.segments[0].windows[28].adr8.in1[0] -3761,1622,main.pedersen.segments[0].windows[28].adr8.in1[1] -3762,1632,main.pedersen.segments[0].windows[28].adr8.in2[0] -3763,1638,main.pedersen.segments[0].windows[28].adr8.in2[1] -3764,1625,main.pedersen.segments[0].windows[28].adr8.out[0] -3765,1626,main.pedersen.segments[0].windows[28].adr8.out[1] -3766,1660,main.pedersen.segments[0].windows[28].adr8.lamda -3786,119,main.pedersen.segments[0].windows[29].in[0] -3787,120,main.pedersen.segments[0].windows[29].in[1] -3788,121,main.pedersen.segments[0].windows[29].in[2] -3789,122,main.pedersen.segments[0].windows[29].in[3] -3790,1670,main.pedersen.segments[0].windows[29].base[0] -3791,1671,main.pedersen.segments[0].windows[29].base[1] -3792,1672,main.pedersen.segments[0].windows[29].out[0] -3793,1673,main.pedersen.segments[0].windows[29].out[1] -3794,1674,main.pedersen.segments[0].windows[29].out8[0] -3795,1675,main.pedersen.segments[0].windows[29].out8[1] -3796,1670,main.pedersen.segments[0].windows[29].mux.c[0][0] -3797,1676,main.pedersen.segments[0].windows[29].mux.c[0][1] -3798,1677,main.pedersen.segments[0].windows[29].mux.c[0][2] -3799,1678,main.pedersen.segments[0].windows[29].mux.c[0][3] -3800,1679,main.pedersen.segments[0].windows[29].mux.c[0][4] -3801,1680,main.pedersen.segments[0].windows[29].mux.c[0][5] -3802,1681,main.pedersen.segments[0].windows[29].mux.c[0][6] -3803,1674,main.pedersen.segments[0].windows[29].mux.c[0][7] -3804,1671,main.pedersen.segments[0].windows[29].mux.c[1][0] -3805,1682,main.pedersen.segments[0].windows[29].mux.c[1][1] -3806,1683,main.pedersen.segments[0].windows[29].mux.c[1][2] -3807,1684,main.pedersen.segments[0].windows[29].mux.c[1][3] -3808,1685,main.pedersen.segments[0].windows[29].mux.c[1][4] -3809,1686,main.pedersen.segments[0].windows[29].mux.c[1][5] -3810,1687,main.pedersen.segments[0].windows[29].mux.c[1][6] -3811,1675,main.pedersen.segments[0].windows[29].mux.c[1][7] -3812,119,main.pedersen.segments[0].windows[29].mux.s[0] -3813,120,main.pedersen.segments[0].windows[29].mux.s[1] -3814,121,main.pedersen.segments[0].windows[29].mux.s[2] -3815,1672,main.pedersen.segments[0].windows[29].mux.out[0] -3816,1688,main.pedersen.segments[0].windows[29].mux.out[1] -3817,1689,main.pedersen.segments[0].windows[29].mux.a210[0] -3818,1690,main.pedersen.segments[0].windows[29].mux.a210[1] -3819,1691,main.pedersen.segments[0].windows[29].mux.a21[0] -3820,1692,main.pedersen.segments[0].windows[29].mux.a21[1] -3821,1693,main.pedersen.segments[0].windows[29].mux.a20[0] -3822,1694,main.pedersen.segments[0].windows[29].mux.a20[1] -3823,3441,main.pedersen.segments[0].windows[29].mux.a2[0] -3824,3442,main.pedersen.segments[0].windows[29].mux.a2[1] -3825,1695,main.pedersen.segments[0].windows[29].mux.a10[0] -3826,1696,main.pedersen.segments[0].windows[29].mux.a10[1] -3827,1697,main.pedersen.segments[0].windows[29].mux.a1[0] -3828,1698,main.pedersen.segments[0].windows[29].mux.a1[1] -3829,1699,main.pedersen.segments[0].windows[29].mux.a0[0] -3830,1700,main.pedersen.segments[0].windows[29].mux.a0[1] -3831,1670,main.pedersen.segments[0].windows[29].mux.a[0] -3832,1671,main.pedersen.segments[0].windows[29].mux.a[1] -3833,1701,main.pedersen.segments[0].windows[29].mux.s10 -3834,1670,main.pedersen.segments[0].windows[29].dbl2.in[0] -3835,1671,main.pedersen.segments[0].windows[29].dbl2.in[1] -3836,1676,main.pedersen.segments[0].windows[29].dbl2.out[0] -3837,1682,main.pedersen.segments[0].windows[29].dbl2.out[1] -3838,1702,main.pedersen.segments[0].windows[29].dbl2.lamda -3839,1703,main.pedersen.segments[0].windows[29].dbl2.x1_2 -3840,1670,main.pedersen.segments[0].windows[29].adr3.in1[0] -3841,1671,main.pedersen.segments[0].windows[29].adr3.in1[1] -3842,1676,main.pedersen.segments[0].windows[29].adr3.in2[0] -3843,1682,main.pedersen.segments[0].windows[29].adr3.in2[1] -3844,1677,main.pedersen.segments[0].windows[29].adr3.out[0] -3845,1683,main.pedersen.segments[0].windows[29].adr3.out[1] -3846,1704,main.pedersen.segments[0].windows[29].adr3.lamda -3847,1670,main.pedersen.segments[0].windows[29].adr4.in1[0] -3848,1671,main.pedersen.segments[0].windows[29].adr4.in1[1] -3849,1677,main.pedersen.segments[0].windows[29].adr4.in2[0] -3850,1683,main.pedersen.segments[0].windows[29].adr4.in2[1] -3851,1678,main.pedersen.segments[0].windows[29].adr4.out[0] -3852,1684,main.pedersen.segments[0].windows[29].adr4.out[1] -3853,1705,main.pedersen.segments[0].windows[29].adr4.lamda -3854,1670,main.pedersen.segments[0].windows[29].adr5.in1[0] -3855,1671,main.pedersen.segments[0].windows[29].adr5.in1[1] -3856,1678,main.pedersen.segments[0].windows[29].adr5.in2[0] -3857,1684,main.pedersen.segments[0].windows[29].adr5.in2[1] -3858,1679,main.pedersen.segments[0].windows[29].adr5.out[0] -3859,1685,main.pedersen.segments[0].windows[29].adr5.out[1] -3860,1706,main.pedersen.segments[0].windows[29].adr5.lamda -3861,1670,main.pedersen.segments[0].windows[29].adr6.in1[0] -3862,1671,main.pedersen.segments[0].windows[29].adr6.in1[1] -3863,1679,main.pedersen.segments[0].windows[29].adr6.in2[0] -3864,1685,main.pedersen.segments[0].windows[29].adr6.in2[1] -3865,1680,main.pedersen.segments[0].windows[29].adr6.out[0] -3866,1686,main.pedersen.segments[0].windows[29].adr6.out[1] -3867,1707,main.pedersen.segments[0].windows[29].adr6.lamda -3868,1670,main.pedersen.segments[0].windows[29].adr7.in1[0] -3869,1671,main.pedersen.segments[0].windows[29].adr7.in1[1] -3870,1680,main.pedersen.segments[0].windows[29].adr7.in2[0] -3871,1686,main.pedersen.segments[0].windows[29].adr7.in2[1] -3872,1681,main.pedersen.segments[0].windows[29].adr7.out[0] -3873,1687,main.pedersen.segments[0].windows[29].adr7.out[1] -3874,1708,main.pedersen.segments[0].windows[29].adr7.lamda -3875,1670,main.pedersen.segments[0].windows[29].adr8.in1[0] -3876,1671,main.pedersen.segments[0].windows[29].adr8.in1[1] -3877,1681,main.pedersen.segments[0].windows[29].adr8.in2[0] -3878,1687,main.pedersen.segments[0].windows[29].adr8.in2[1] -3879,1674,main.pedersen.segments[0].windows[29].adr8.out[0] -3880,1675,main.pedersen.segments[0].windows[29].adr8.out[1] -3881,1709,main.pedersen.segments[0].windows[29].adr8.lamda -3901,123,main.pedersen.segments[0].windows[30].in[0] -3902,124,main.pedersen.segments[0].windows[30].in[1] -3903,125,main.pedersen.segments[0].windows[30].in[2] -3904,126,main.pedersen.segments[0].windows[30].in[3] -3905,1719,main.pedersen.segments[0].windows[30].base[0] -3906,1720,main.pedersen.segments[0].windows[30].base[1] -3907,1721,main.pedersen.segments[0].windows[30].out[0] -3908,1722,main.pedersen.segments[0].windows[30].out[1] -3909,1723,main.pedersen.segments[0].windows[30].out8[0] -3910,1724,main.pedersen.segments[0].windows[30].out8[1] -3911,1719,main.pedersen.segments[0].windows[30].mux.c[0][0] -3912,1725,main.pedersen.segments[0].windows[30].mux.c[0][1] -3913,1726,main.pedersen.segments[0].windows[30].mux.c[0][2] -3914,1727,main.pedersen.segments[0].windows[30].mux.c[0][3] -3915,1728,main.pedersen.segments[0].windows[30].mux.c[0][4] -3916,1729,main.pedersen.segments[0].windows[30].mux.c[0][5] -3917,1730,main.pedersen.segments[0].windows[30].mux.c[0][6] -3918,1723,main.pedersen.segments[0].windows[30].mux.c[0][7] -3919,1720,main.pedersen.segments[0].windows[30].mux.c[1][0] -3920,1731,main.pedersen.segments[0].windows[30].mux.c[1][1] -3921,1732,main.pedersen.segments[0].windows[30].mux.c[1][2] -3922,1733,main.pedersen.segments[0].windows[30].mux.c[1][3] -3923,1734,main.pedersen.segments[0].windows[30].mux.c[1][4] -3924,1735,main.pedersen.segments[0].windows[30].mux.c[1][5] -3925,1736,main.pedersen.segments[0].windows[30].mux.c[1][6] -3926,1724,main.pedersen.segments[0].windows[30].mux.c[1][7] -3927,123,main.pedersen.segments[0].windows[30].mux.s[0] -3928,124,main.pedersen.segments[0].windows[30].mux.s[1] -3929,125,main.pedersen.segments[0].windows[30].mux.s[2] -3930,1721,main.pedersen.segments[0].windows[30].mux.out[0] -3931,1737,main.pedersen.segments[0].windows[30].mux.out[1] -3932,1738,main.pedersen.segments[0].windows[30].mux.a210[0] -3933,1739,main.pedersen.segments[0].windows[30].mux.a210[1] -3934,1740,main.pedersen.segments[0].windows[30].mux.a21[0] -3935,1741,main.pedersen.segments[0].windows[30].mux.a21[1] -3936,1742,main.pedersen.segments[0].windows[30].mux.a20[0] -3937,1743,main.pedersen.segments[0].windows[30].mux.a20[1] -3938,3443,main.pedersen.segments[0].windows[30].mux.a2[0] -3939,3444,main.pedersen.segments[0].windows[30].mux.a2[1] -3940,1744,main.pedersen.segments[0].windows[30].mux.a10[0] -3941,1745,main.pedersen.segments[0].windows[30].mux.a10[1] -3942,1746,main.pedersen.segments[0].windows[30].mux.a1[0] -3943,1747,main.pedersen.segments[0].windows[30].mux.a1[1] -3944,1748,main.pedersen.segments[0].windows[30].mux.a0[0] -3945,1749,main.pedersen.segments[0].windows[30].mux.a0[1] -3946,1719,main.pedersen.segments[0].windows[30].mux.a[0] -3947,1720,main.pedersen.segments[0].windows[30].mux.a[1] -3948,1750,main.pedersen.segments[0].windows[30].mux.s10 -3949,1719,main.pedersen.segments[0].windows[30].dbl2.in[0] -3950,1720,main.pedersen.segments[0].windows[30].dbl2.in[1] -3951,1725,main.pedersen.segments[0].windows[30].dbl2.out[0] -3952,1731,main.pedersen.segments[0].windows[30].dbl2.out[1] -3953,1751,main.pedersen.segments[0].windows[30].dbl2.lamda -3954,1752,main.pedersen.segments[0].windows[30].dbl2.x1_2 -3955,1719,main.pedersen.segments[0].windows[30].adr3.in1[0] -3956,1720,main.pedersen.segments[0].windows[30].adr3.in1[1] -3957,1725,main.pedersen.segments[0].windows[30].adr3.in2[0] -3958,1731,main.pedersen.segments[0].windows[30].adr3.in2[1] -3959,1726,main.pedersen.segments[0].windows[30].adr3.out[0] -3960,1732,main.pedersen.segments[0].windows[30].adr3.out[1] -3961,1753,main.pedersen.segments[0].windows[30].adr3.lamda -3962,1719,main.pedersen.segments[0].windows[30].adr4.in1[0] -3963,1720,main.pedersen.segments[0].windows[30].adr4.in1[1] -3964,1726,main.pedersen.segments[0].windows[30].adr4.in2[0] -3965,1732,main.pedersen.segments[0].windows[30].adr4.in2[1] -3966,1727,main.pedersen.segments[0].windows[30].adr4.out[0] -3967,1733,main.pedersen.segments[0].windows[30].adr4.out[1] -3968,1754,main.pedersen.segments[0].windows[30].adr4.lamda -3969,1719,main.pedersen.segments[0].windows[30].adr5.in1[0] -3970,1720,main.pedersen.segments[0].windows[30].adr5.in1[1] -3971,1727,main.pedersen.segments[0].windows[30].adr5.in2[0] -3972,1733,main.pedersen.segments[0].windows[30].adr5.in2[1] -3973,1728,main.pedersen.segments[0].windows[30].adr5.out[0] -3974,1734,main.pedersen.segments[0].windows[30].adr5.out[1] -3975,1755,main.pedersen.segments[0].windows[30].adr5.lamda -3976,1719,main.pedersen.segments[0].windows[30].adr6.in1[0] -3977,1720,main.pedersen.segments[0].windows[30].adr6.in1[1] -3978,1728,main.pedersen.segments[0].windows[30].adr6.in2[0] -3979,1734,main.pedersen.segments[0].windows[30].adr6.in2[1] -3980,1729,main.pedersen.segments[0].windows[30].adr6.out[0] -3981,1735,main.pedersen.segments[0].windows[30].adr6.out[1] -3982,1756,main.pedersen.segments[0].windows[30].adr6.lamda -3983,1719,main.pedersen.segments[0].windows[30].adr7.in1[0] -3984,1720,main.pedersen.segments[0].windows[30].adr7.in1[1] -3985,1729,main.pedersen.segments[0].windows[30].adr7.in2[0] -3986,1735,main.pedersen.segments[0].windows[30].adr7.in2[1] -3987,1730,main.pedersen.segments[0].windows[30].adr7.out[0] -3988,1736,main.pedersen.segments[0].windows[30].adr7.out[1] -3989,1757,main.pedersen.segments[0].windows[30].adr7.lamda -3990,1719,main.pedersen.segments[0].windows[30].adr8.in1[0] -3991,1720,main.pedersen.segments[0].windows[30].adr8.in1[1] -3992,1730,main.pedersen.segments[0].windows[30].adr8.in2[0] -3993,1736,main.pedersen.segments[0].windows[30].adr8.in2[1] -3994,1723,main.pedersen.segments[0].windows[30].adr8.out[0] -3995,1724,main.pedersen.segments[0].windows[30].adr8.out[1] -3996,1758,main.pedersen.segments[0].windows[30].adr8.lamda -4016,127,main.pedersen.segments[0].windows[31].in[0] -4017,128,main.pedersen.segments[0].windows[31].in[1] -4018,129,main.pedersen.segments[0].windows[31].in[2] -4019,130,main.pedersen.segments[0].windows[31].in[3] -4020,1768,main.pedersen.segments[0].windows[31].base[0] -4021,1769,main.pedersen.segments[0].windows[31].base[1] -4022,1770,main.pedersen.segments[0].windows[31].out[0] -4023,1771,main.pedersen.segments[0].windows[31].out[1] -4024,1772,main.pedersen.segments[0].windows[31].out8[0] -4025,1773,main.pedersen.segments[0].windows[31].out8[1] -4026,1768,main.pedersen.segments[0].windows[31].mux.c[0][0] -4027,1774,main.pedersen.segments[0].windows[31].mux.c[0][1] -4028,1775,main.pedersen.segments[0].windows[31].mux.c[0][2] -4029,1776,main.pedersen.segments[0].windows[31].mux.c[0][3] -4030,1777,main.pedersen.segments[0].windows[31].mux.c[0][4] -4031,1778,main.pedersen.segments[0].windows[31].mux.c[0][5] -4032,1779,main.pedersen.segments[0].windows[31].mux.c[0][6] -4033,1772,main.pedersen.segments[0].windows[31].mux.c[0][7] -4034,1769,main.pedersen.segments[0].windows[31].mux.c[1][0] -4035,1780,main.pedersen.segments[0].windows[31].mux.c[1][1] -4036,1781,main.pedersen.segments[0].windows[31].mux.c[1][2] -4037,1782,main.pedersen.segments[0].windows[31].mux.c[1][3] -4038,1783,main.pedersen.segments[0].windows[31].mux.c[1][4] -4039,1784,main.pedersen.segments[0].windows[31].mux.c[1][5] -4040,1785,main.pedersen.segments[0].windows[31].mux.c[1][6] -4041,1773,main.pedersen.segments[0].windows[31].mux.c[1][7] -4042,127,main.pedersen.segments[0].windows[31].mux.s[0] -4043,128,main.pedersen.segments[0].windows[31].mux.s[1] -4044,129,main.pedersen.segments[0].windows[31].mux.s[2] -4045,1770,main.pedersen.segments[0].windows[31].mux.out[0] -4046,1786,main.pedersen.segments[0].windows[31].mux.out[1] -4047,1787,main.pedersen.segments[0].windows[31].mux.a210[0] -4048,1788,main.pedersen.segments[0].windows[31].mux.a210[1] -4049,1789,main.pedersen.segments[0].windows[31].mux.a21[0] -4050,1790,main.pedersen.segments[0].windows[31].mux.a21[1] -4051,1791,main.pedersen.segments[0].windows[31].mux.a20[0] -4052,1792,main.pedersen.segments[0].windows[31].mux.a20[1] -4053,3445,main.pedersen.segments[0].windows[31].mux.a2[0] -4054,3446,main.pedersen.segments[0].windows[31].mux.a2[1] -4055,1793,main.pedersen.segments[0].windows[31].mux.a10[0] -4056,1794,main.pedersen.segments[0].windows[31].mux.a10[1] -4057,1795,main.pedersen.segments[0].windows[31].mux.a1[0] -4058,1796,main.pedersen.segments[0].windows[31].mux.a1[1] -4059,1797,main.pedersen.segments[0].windows[31].mux.a0[0] -4060,1798,main.pedersen.segments[0].windows[31].mux.a0[1] -4061,1768,main.pedersen.segments[0].windows[31].mux.a[0] -4062,1769,main.pedersen.segments[0].windows[31].mux.a[1] -4063,1799,main.pedersen.segments[0].windows[31].mux.s10 -4064,1768,main.pedersen.segments[0].windows[31].dbl2.in[0] -4065,1769,main.pedersen.segments[0].windows[31].dbl2.in[1] -4066,1774,main.pedersen.segments[0].windows[31].dbl2.out[0] -4067,1780,main.pedersen.segments[0].windows[31].dbl2.out[1] -4068,1800,main.pedersen.segments[0].windows[31].dbl2.lamda -4069,1801,main.pedersen.segments[0].windows[31].dbl2.x1_2 -4070,1768,main.pedersen.segments[0].windows[31].adr3.in1[0] -4071,1769,main.pedersen.segments[0].windows[31].adr3.in1[1] -4072,1774,main.pedersen.segments[0].windows[31].adr3.in2[0] -4073,1780,main.pedersen.segments[0].windows[31].adr3.in2[1] -4074,1775,main.pedersen.segments[0].windows[31].adr3.out[0] -4075,1781,main.pedersen.segments[0].windows[31].adr3.out[1] -4076,1802,main.pedersen.segments[0].windows[31].adr3.lamda -4077,1768,main.pedersen.segments[0].windows[31].adr4.in1[0] -4078,1769,main.pedersen.segments[0].windows[31].adr4.in1[1] -4079,1775,main.pedersen.segments[0].windows[31].adr4.in2[0] -4080,1781,main.pedersen.segments[0].windows[31].adr4.in2[1] -4081,1776,main.pedersen.segments[0].windows[31].adr4.out[0] -4082,1782,main.pedersen.segments[0].windows[31].adr4.out[1] -4083,1803,main.pedersen.segments[0].windows[31].adr4.lamda -4084,1768,main.pedersen.segments[0].windows[31].adr5.in1[0] -4085,1769,main.pedersen.segments[0].windows[31].adr5.in1[1] -4086,1776,main.pedersen.segments[0].windows[31].adr5.in2[0] -4087,1782,main.pedersen.segments[0].windows[31].adr5.in2[1] -4088,1777,main.pedersen.segments[0].windows[31].adr5.out[0] -4089,1783,main.pedersen.segments[0].windows[31].adr5.out[1] -4090,1804,main.pedersen.segments[0].windows[31].adr5.lamda -4091,1768,main.pedersen.segments[0].windows[31].adr6.in1[0] -4092,1769,main.pedersen.segments[0].windows[31].adr6.in1[1] -4093,1777,main.pedersen.segments[0].windows[31].adr6.in2[0] -4094,1783,main.pedersen.segments[0].windows[31].adr6.in2[1] -4095,1778,main.pedersen.segments[0].windows[31].adr6.out[0] -4096,1784,main.pedersen.segments[0].windows[31].adr6.out[1] -4097,1805,main.pedersen.segments[0].windows[31].adr6.lamda -4098,1768,main.pedersen.segments[0].windows[31].adr7.in1[0] -4099,1769,main.pedersen.segments[0].windows[31].adr7.in1[1] -4100,1778,main.pedersen.segments[0].windows[31].adr7.in2[0] -4101,1784,main.pedersen.segments[0].windows[31].adr7.in2[1] -4102,1779,main.pedersen.segments[0].windows[31].adr7.out[0] -4103,1785,main.pedersen.segments[0].windows[31].adr7.out[1] -4104,1806,main.pedersen.segments[0].windows[31].adr7.lamda -4105,1768,main.pedersen.segments[0].windows[31].adr8.in1[0] -4106,1769,main.pedersen.segments[0].windows[31].adr8.in1[1] -4107,1779,main.pedersen.segments[0].windows[31].adr8.in2[0] -4108,1785,main.pedersen.segments[0].windows[31].adr8.in2[1] -4109,1772,main.pedersen.segments[0].windows[31].adr8.out[0] -4110,1773,main.pedersen.segments[0].windows[31].adr8.out[1] -4111,1807,main.pedersen.segments[0].windows[31].adr8.lamda -4131,131,main.pedersen.segments[0].windows[32].in[0] -4132,132,main.pedersen.segments[0].windows[32].in[1] -4133,133,main.pedersen.segments[0].windows[32].in[2] -4134,134,main.pedersen.segments[0].windows[32].in[3] -4135,1817,main.pedersen.segments[0].windows[32].base[0] -4136,1818,main.pedersen.segments[0].windows[32].base[1] -4137,1819,main.pedersen.segments[0].windows[32].out[0] -4138,1820,main.pedersen.segments[0].windows[32].out[1] -4139,1821,main.pedersen.segments[0].windows[32].out8[0] -4140,1822,main.pedersen.segments[0].windows[32].out8[1] -4141,1817,main.pedersen.segments[0].windows[32].mux.c[0][0] -4142,1823,main.pedersen.segments[0].windows[32].mux.c[0][1] -4143,1824,main.pedersen.segments[0].windows[32].mux.c[0][2] -4144,1825,main.pedersen.segments[0].windows[32].mux.c[0][3] -4145,1826,main.pedersen.segments[0].windows[32].mux.c[0][4] -4146,1827,main.pedersen.segments[0].windows[32].mux.c[0][5] -4147,1828,main.pedersen.segments[0].windows[32].mux.c[0][6] -4148,1821,main.pedersen.segments[0].windows[32].mux.c[0][7] -4149,1818,main.pedersen.segments[0].windows[32].mux.c[1][0] -4150,1829,main.pedersen.segments[0].windows[32].mux.c[1][1] -4151,1830,main.pedersen.segments[0].windows[32].mux.c[1][2] -4152,1831,main.pedersen.segments[0].windows[32].mux.c[1][3] -4153,1832,main.pedersen.segments[0].windows[32].mux.c[1][4] -4154,1833,main.pedersen.segments[0].windows[32].mux.c[1][5] -4155,1834,main.pedersen.segments[0].windows[32].mux.c[1][6] -4156,1822,main.pedersen.segments[0].windows[32].mux.c[1][7] -4157,131,main.pedersen.segments[0].windows[32].mux.s[0] -4158,132,main.pedersen.segments[0].windows[32].mux.s[1] -4159,133,main.pedersen.segments[0].windows[32].mux.s[2] -4160,1819,main.pedersen.segments[0].windows[32].mux.out[0] -4161,1835,main.pedersen.segments[0].windows[32].mux.out[1] -4162,1836,main.pedersen.segments[0].windows[32].mux.a210[0] -4163,1837,main.pedersen.segments[0].windows[32].mux.a210[1] -4164,1838,main.pedersen.segments[0].windows[32].mux.a21[0] -4165,1839,main.pedersen.segments[0].windows[32].mux.a21[1] -4166,1840,main.pedersen.segments[0].windows[32].mux.a20[0] -4167,1841,main.pedersen.segments[0].windows[32].mux.a20[1] -4168,3447,main.pedersen.segments[0].windows[32].mux.a2[0] -4169,3448,main.pedersen.segments[0].windows[32].mux.a2[1] -4170,1842,main.pedersen.segments[0].windows[32].mux.a10[0] -4171,1843,main.pedersen.segments[0].windows[32].mux.a10[1] -4172,1844,main.pedersen.segments[0].windows[32].mux.a1[0] -4173,1845,main.pedersen.segments[0].windows[32].mux.a1[1] -4174,1846,main.pedersen.segments[0].windows[32].mux.a0[0] -4175,1847,main.pedersen.segments[0].windows[32].mux.a0[1] -4176,1817,main.pedersen.segments[0].windows[32].mux.a[0] -4177,1818,main.pedersen.segments[0].windows[32].mux.a[1] -4178,1848,main.pedersen.segments[0].windows[32].mux.s10 -4179,1817,main.pedersen.segments[0].windows[32].dbl2.in[0] -4180,1818,main.pedersen.segments[0].windows[32].dbl2.in[1] -4181,1823,main.pedersen.segments[0].windows[32].dbl2.out[0] -4182,1829,main.pedersen.segments[0].windows[32].dbl2.out[1] -4183,1849,main.pedersen.segments[0].windows[32].dbl2.lamda -4184,1850,main.pedersen.segments[0].windows[32].dbl2.x1_2 -4185,1817,main.pedersen.segments[0].windows[32].adr3.in1[0] -4186,1818,main.pedersen.segments[0].windows[32].adr3.in1[1] -4187,1823,main.pedersen.segments[0].windows[32].adr3.in2[0] -4188,1829,main.pedersen.segments[0].windows[32].adr3.in2[1] -4189,1824,main.pedersen.segments[0].windows[32].adr3.out[0] -4190,1830,main.pedersen.segments[0].windows[32].adr3.out[1] -4191,1851,main.pedersen.segments[0].windows[32].adr3.lamda -4192,1817,main.pedersen.segments[0].windows[32].adr4.in1[0] -4193,1818,main.pedersen.segments[0].windows[32].adr4.in1[1] -4194,1824,main.pedersen.segments[0].windows[32].adr4.in2[0] -4195,1830,main.pedersen.segments[0].windows[32].adr4.in2[1] -4196,1825,main.pedersen.segments[0].windows[32].adr4.out[0] -4197,1831,main.pedersen.segments[0].windows[32].adr4.out[1] -4198,1852,main.pedersen.segments[0].windows[32].adr4.lamda -4199,1817,main.pedersen.segments[0].windows[32].adr5.in1[0] -4200,1818,main.pedersen.segments[0].windows[32].adr5.in1[1] -4201,1825,main.pedersen.segments[0].windows[32].adr5.in2[0] -4202,1831,main.pedersen.segments[0].windows[32].adr5.in2[1] -4203,1826,main.pedersen.segments[0].windows[32].adr5.out[0] -4204,1832,main.pedersen.segments[0].windows[32].adr5.out[1] -4205,1853,main.pedersen.segments[0].windows[32].adr5.lamda -4206,1817,main.pedersen.segments[0].windows[32].adr6.in1[0] -4207,1818,main.pedersen.segments[0].windows[32].adr6.in1[1] -4208,1826,main.pedersen.segments[0].windows[32].adr6.in2[0] -4209,1832,main.pedersen.segments[0].windows[32].adr6.in2[1] -4210,1827,main.pedersen.segments[0].windows[32].adr6.out[0] -4211,1833,main.pedersen.segments[0].windows[32].adr6.out[1] -4212,1854,main.pedersen.segments[0].windows[32].adr6.lamda -4213,1817,main.pedersen.segments[0].windows[32].adr7.in1[0] -4214,1818,main.pedersen.segments[0].windows[32].adr7.in1[1] -4215,1827,main.pedersen.segments[0].windows[32].adr7.in2[0] -4216,1833,main.pedersen.segments[0].windows[32].adr7.in2[1] -4217,1828,main.pedersen.segments[0].windows[32].adr7.out[0] -4218,1834,main.pedersen.segments[0].windows[32].adr7.out[1] -4219,1855,main.pedersen.segments[0].windows[32].adr7.lamda -4220,1817,main.pedersen.segments[0].windows[32].adr8.in1[0] -4221,1818,main.pedersen.segments[0].windows[32].adr8.in1[1] -4222,1828,main.pedersen.segments[0].windows[32].adr8.in2[0] -4223,1834,main.pedersen.segments[0].windows[32].adr8.in2[1] -4224,1821,main.pedersen.segments[0].windows[32].adr8.out[0] -4225,1822,main.pedersen.segments[0].windows[32].adr8.out[1] -4226,1856,main.pedersen.segments[0].windows[32].adr8.lamda -4246,135,main.pedersen.segments[0].windows[33].in[0] -4247,136,main.pedersen.segments[0].windows[33].in[1] -4248,137,main.pedersen.segments[0].windows[33].in[2] -4249,138,main.pedersen.segments[0].windows[33].in[3] -4250,1866,main.pedersen.segments[0].windows[33].base[0] -4251,1867,main.pedersen.segments[0].windows[33].base[1] -4252,1868,main.pedersen.segments[0].windows[33].out[0] -4253,1869,main.pedersen.segments[0].windows[33].out[1] -4254,1870,main.pedersen.segments[0].windows[33].out8[0] -4255,1871,main.pedersen.segments[0].windows[33].out8[1] -4256,1866,main.pedersen.segments[0].windows[33].mux.c[0][0] -4257,1872,main.pedersen.segments[0].windows[33].mux.c[0][1] -4258,1873,main.pedersen.segments[0].windows[33].mux.c[0][2] -4259,1874,main.pedersen.segments[0].windows[33].mux.c[0][3] -4260,1875,main.pedersen.segments[0].windows[33].mux.c[0][4] -4261,1876,main.pedersen.segments[0].windows[33].mux.c[0][5] -4262,1877,main.pedersen.segments[0].windows[33].mux.c[0][6] -4263,1870,main.pedersen.segments[0].windows[33].mux.c[0][7] -4264,1867,main.pedersen.segments[0].windows[33].mux.c[1][0] -4265,1878,main.pedersen.segments[0].windows[33].mux.c[1][1] -4266,1879,main.pedersen.segments[0].windows[33].mux.c[1][2] -4267,1880,main.pedersen.segments[0].windows[33].mux.c[1][3] -4268,1881,main.pedersen.segments[0].windows[33].mux.c[1][4] -4269,1882,main.pedersen.segments[0].windows[33].mux.c[1][5] -4270,1883,main.pedersen.segments[0].windows[33].mux.c[1][6] -4271,1871,main.pedersen.segments[0].windows[33].mux.c[1][7] -4272,135,main.pedersen.segments[0].windows[33].mux.s[0] -4273,136,main.pedersen.segments[0].windows[33].mux.s[1] -4274,137,main.pedersen.segments[0].windows[33].mux.s[2] -4275,1868,main.pedersen.segments[0].windows[33].mux.out[0] -4276,1884,main.pedersen.segments[0].windows[33].mux.out[1] -4277,1885,main.pedersen.segments[0].windows[33].mux.a210[0] -4278,1886,main.pedersen.segments[0].windows[33].mux.a210[1] -4279,1887,main.pedersen.segments[0].windows[33].mux.a21[0] -4280,1888,main.pedersen.segments[0].windows[33].mux.a21[1] -4281,1889,main.pedersen.segments[0].windows[33].mux.a20[0] -4282,1890,main.pedersen.segments[0].windows[33].mux.a20[1] -4283,3449,main.pedersen.segments[0].windows[33].mux.a2[0] -4284,3450,main.pedersen.segments[0].windows[33].mux.a2[1] -4285,1891,main.pedersen.segments[0].windows[33].mux.a10[0] -4286,1892,main.pedersen.segments[0].windows[33].mux.a10[1] -4287,1893,main.pedersen.segments[0].windows[33].mux.a1[0] -4288,1894,main.pedersen.segments[0].windows[33].mux.a1[1] -4289,1895,main.pedersen.segments[0].windows[33].mux.a0[0] -4290,1896,main.pedersen.segments[0].windows[33].mux.a0[1] -4291,1866,main.pedersen.segments[0].windows[33].mux.a[0] -4292,1867,main.pedersen.segments[0].windows[33].mux.a[1] -4293,1897,main.pedersen.segments[0].windows[33].mux.s10 -4294,1866,main.pedersen.segments[0].windows[33].dbl2.in[0] -4295,1867,main.pedersen.segments[0].windows[33].dbl2.in[1] -4296,1872,main.pedersen.segments[0].windows[33].dbl2.out[0] -4297,1878,main.pedersen.segments[0].windows[33].dbl2.out[1] -4298,1898,main.pedersen.segments[0].windows[33].dbl2.lamda -4299,1899,main.pedersen.segments[0].windows[33].dbl2.x1_2 -4300,1866,main.pedersen.segments[0].windows[33].adr3.in1[0] -4301,1867,main.pedersen.segments[0].windows[33].adr3.in1[1] -4302,1872,main.pedersen.segments[0].windows[33].adr3.in2[0] -4303,1878,main.pedersen.segments[0].windows[33].adr3.in2[1] -4304,1873,main.pedersen.segments[0].windows[33].adr3.out[0] -4305,1879,main.pedersen.segments[0].windows[33].adr3.out[1] -4306,1900,main.pedersen.segments[0].windows[33].adr3.lamda -4307,1866,main.pedersen.segments[0].windows[33].adr4.in1[0] -4308,1867,main.pedersen.segments[0].windows[33].adr4.in1[1] -4309,1873,main.pedersen.segments[0].windows[33].adr4.in2[0] -4310,1879,main.pedersen.segments[0].windows[33].adr4.in2[1] -4311,1874,main.pedersen.segments[0].windows[33].adr4.out[0] -4312,1880,main.pedersen.segments[0].windows[33].adr4.out[1] -4313,1901,main.pedersen.segments[0].windows[33].adr4.lamda -4314,1866,main.pedersen.segments[0].windows[33].adr5.in1[0] -4315,1867,main.pedersen.segments[0].windows[33].adr5.in1[1] -4316,1874,main.pedersen.segments[0].windows[33].adr5.in2[0] -4317,1880,main.pedersen.segments[0].windows[33].adr5.in2[1] -4318,1875,main.pedersen.segments[0].windows[33].adr5.out[0] -4319,1881,main.pedersen.segments[0].windows[33].adr5.out[1] -4320,1902,main.pedersen.segments[0].windows[33].adr5.lamda -4321,1866,main.pedersen.segments[0].windows[33].adr6.in1[0] -4322,1867,main.pedersen.segments[0].windows[33].adr6.in1[1] -4323,1875,main.pedersen.segments[0].windows[33].adr6.in2[0] -4324,1881,main.pedersen.segments[0].windows[33].adr6.in2[1] -4325,1876,main.pedersen.segments[0].windows[33].adr6.out[0] -4326,1882,main.pedersen.segments[0].windows[33].adr6.out[1] -4327,1903,main.pedersen.segments[0].windows[33].adr6.lamda -4328,1866,main.pedersen.segments[0].windows[33].adr7.in1[0] -4329,1867,main.pedersen.segments[0].windows[33].adr7.in1[1] -4330,1876,main.pedersen.segments[0].windows[33].adr7.in2[0] -4331,1882,main.pedersen.segments[0].windows[33].adr7.in2[1] -4332,1877,main.pedersen.segments[0].windows[33].adr7.out[0] -4333,1883,main.pedersen.segments[0].windows[33].adr7.out[1] -4334,1904,main.pedersen.segments[0].windows[33].adr7.lamda -4335,1866,main.pedersen.segments[0].windows[33].adr8.in1[0] -4336,1867,main.pedersen.segments[0].windows[33].adr8.in1[1] -4337,1877,main.pedersen.segments[0].windows[33].adr8.in2[0] -4338,1883,main.pedersen.segments[0].windows[33].adr8.in2[1] -4339,1870,main.pedersen.segments[0].windows[33].adr8.out[0] -4340,1871,main.pedersen.segments[0].windows[33].adr8.out[1] -4341,1905,main.pedersen.segments[0].windows[33].adr8.lamda -4361,139,main.pedersen.segments[0].windows[34].in[0] -4362,140,main.pedersen.segments[0].windows[34].in[1] -4363,141,main.pedersen.segments[0].windows[34].in[2] -4364,142,main.pedersen.segments[0].windows[34].in[3] -4365,1915,main.pedersen.segments[0].windows[34].base[0] -4366,1916,main.pedersen.segments[0].windows[34].base[1] -4367,1917,main.pedersen.segments[0].windows[34].out[0] -4368,1918,main.pedersen.segments[0].windows[34].out[1] -4369,1919,main.pedersen.segments[0].windows[34].out8[0] -4370,1920,main.pedersen.segments[0].windows[34].out8[1] -4371,1915,main.pedersen.segments[0].windows[34].mux.c[0][0] -4372,1921,main.pedersen.segments[0].windows[34].mux.c[0][1] -4373,1922,main.pedersen.segments[0].windows[34].mux.c[0][2] -4374,1923,main.pedersen.segments[0].windows[34].mux.c[0][3] -4375,1924,main.pedersen.segments[0].windows[34].mux.c[0][4] -4376,1925,main.pedersen.segments[0].windows[34].mux.c[0][5] -4377,1926,main.pedersen.segments[0].windows[34].mux.c[0][6] -4378,1919,main.pedersen.segments[0].windows[34].mux.c[0][7] -4379,1916,main.pedersen.segments[0].windows[34].mux.c[1][0] -4380,1927,main.pedersen.segments[0].windows[34].mux.c[1][1] -4381,1928,main.pedersen.segments[0].windows[34].mux.c[1][2] -4382,1929,main.pedersen.segments[0].windows[34].mux.c[1][3] -4383,1930,main.pedersen.segments[0].windows[34].mux.c[1][4] -4384,1931,main.pedersen.segments[0].windows[34].mux.c[1][5] -4385,1932,main.pedersen.segments[0].windows[34].mux.c[1][6] -4386,1920,main.pedersen.segments[0].windows[34].mux.c[1][7] -4387,139,main.pedersen.segments[0].windows[34].mux.s[0] -4388,140,main.pedersen.segments[0].windows[34].mux.s[1] -4389,141,main.pedersen.segments[0].windows[34].mux.s[2] -4390,1917,main.pedersen.segments[0].windows[34].mux.out[0] -4391,1933,main.pedersen.segments[0].windows[34].mux.out[1] -4392,1934,main.pedersen.segments[0].windows[34].mux.a210[0] -4393,1935,main.pedersen.segments[0].windows[34].mux.a210[1] -4394,1936,main.pedersen.segments[0].windows[34].mux.a21[0] -4395,1937,main.pedersen.segments[0].windows[34].mux.a21[1] -4396,1938,main.pedersen.segments[0].windows[34].mux.a20[0] -4397,1939,main.pedersen.segments[0].windows[34].mux.a20[1] -4398,3451,main.pedersen.segments[0].windows[34].mux.a2[0] -4399,3452,main.pedersen.segments[0].windows[34].mux.a2[1] -4400,1940,main.pedersen.segments[0].windows[34].mux.a10[0] -4401,1941,main.pedersen.segments[0].windows[34].mux.a10[1] -4402,1942,main.pedersen.segments[0].windows[34].mux.a1[0] -4403,1943,main.pedersen.segments[0].windows[34].mux.a1[1] -4404,1944,main.pedersen.segments[0].windows[34].mux.a0[0] -4405,1945,main.pedersen.segments[0].windows[34].mux.a0[1] -4406,1915,main.pedersen.segments[0].windows[34].mux.a[0] -4407,1916,main.pedersen.segments[0].windows[34].mux.a[1] -4408,1946,main.pedersen.segments[0].windows[34].mux.s10 -4409,1915,main.pedersen.segments[0].windows[34].dbl2.in[0] -4410,1916,main.pedersen.segments[0].windows[34].dbl2.in[1] -4411,1921,main.pedersen.segments[0].windows[34].dbl2.out[0] -4412,1927,main.pedersen.segments[0].windows[34].dbl2.out[1] -4413,1947,main.pedersen.segments[0].windows[34].dbl2.lamda -4414,1948,main.pedersen.segments[0].windows[34].dbl2.x1_2 -4415,1915,main.pedersen.segments[0].windows[34].adr3.in1[0] -4416,1916,main.pedersen.segments[0].windows[34].adr3.in1[1] -4417,1921,main.pedersen.segments[0].windows[34].adr3.in2[0] -4418,1927,main.pedersen.segments[0].windows[34].adr3.in2[1] -4419,1922,main.pedersen.segments[0].windows[34].adr3.out[0] -4420,1928,main.pedersen.segments[0].windows[34].adr3.out[1] -4421,1949,main.pedersen.segments[0].windows[34].adr3.lamda -4422,1915,main.pedersen.segments[0].windows[34].adr4.in1[0] -4423,1916,main.pedersen.segments[0].windows[34].adr4.in1[1] -4424,1922,main.pedersen.segments[0].windows[34].adr4.in2[0] -4425,1928,main.pedersen.segments[0].windows[34].adr4.in2[1] -4426,1923,main.pedersen.segments[0].windows[34].adr4.out[0] -4427,1929,main.pedersen.segments[0].windows[34].adr4.out[1] -4428,1950,main.pedersen.segments[0].windows[34].adr4.lamda -4429,1915,main.pedersen.segments[0].windows[34].adr5.in1[0] -4430,1916,main.pedersen.segments[0].windows[34].adr5.in1[1] -4431,1923,main.pedersen.segments[0].windows[34].adr5.in2[0] -4432,1929,main.pedersen.segments[0].windows[34].adr5.in2[1] -4433,1924,main.pedersen.segments[0].windows[34].adr5.out[0] -4434,1930,main.pedersen.segments[0].windows[34].adr5.out[1] -4435,1951,main.pedersen.segments[0].windows[34].adr5.lamda -4436,1915,main.pedersen.segments[0].windows[34].adr6.in1[0] -4437,1916,main.pedersen.segments[0].windows[34].adr6.in1[1] -4438,1924,main.pedersen.segments[0].windows[34].adr6.in2[0] -4439,1930,main.pedersen.segments[0].windows[34].adr6.in2[1] -4440,1925,main.pedersen.segments[0].windows[34].adr6.out[0] -4441,1931,main.pedersen.segments[0].windows[34].adr6.out[1] -4442,1952,main.pedersen.segments[0].windows[34].adr6.lamda -4443,1915,main.pedersen.segments[0].windows[34].adr7.in1[0] -4444,1916,main.pedersen.segments[0].windows[34].adr7.in1[1] -4445,1925,main.pedersen.segments[0].windows[34].adr7.in2[0] -4446,1931,main.pedersen.segments[0].windows[34].adr7.in2[1] -4447,1926,main.pedersen.segments[0].windows[34].adr7.out[0] -4448,1932,main.pedersen.segments[0].windows[34].adr7.out[1] -4449,1953,main.pedersen.segments[0].windows[34].adr7.lamda -4450,1915,main.pedersen.segments[0].windows[34].adr8.in1[0] -4451,1916,main.pedersen.segments[0].windows[34].adr8.in1[1] -4452,1926,main.pedersen.segments[0].windows[34].adr8.in2[0] -4453,1932,main.pedersen.segments[0].windows[34].adr8.in2[1] -4454,1919,main.pedersen.segments[0].windows[34].adr8.out[0] -4455,1920,main.pedersen.segments[0].windows[34].adr8.out[1] -4456,1954,main.pedersen.segments[0].windows[34].adr8.lamda -4476,143,main.pedersen.segments[0].windows[35].in[0] -4477,144,main.pedersen.segments[0].windows[35].in[1] -4478,145,main.pedersen.segments[0].windows[35].in[2] -4479,146,main.pedersen.segments[0].windows[35].in[3] -4480,1964,main.pedersen.segments[0].windows[35].base[0] -4481,1965,main.pedersen.segments[0].windows[35].base[1] -4482,1966,main.pedersen.segments[0].windows[35].out[0] -4483,1967,main.pedersen.segments[0].windows[35].out[1] -4484,1968,main.pedersen.segments[0].windows[35].out8[0] -4485,1969,main.pedersen.segments[0].windows[35].out8[1] -4486,1964,main.pedersen.segments[0].windows[35].mux.c[0][0] -4487,1970,main.pedersen.segments[0].windows[35].mux.c[0][1] -4488,1971,main.pedersen.segments[0].windows[35].mux.c[0][2] -4489,1972,main.pedersen.segments[0].windows[35].mux.c[0][3] -4490,1973,main.pedersen.segments[0].windows[35].mux.c[0][4] -4491,1974,main.pedersen.segments[0].windows[35].mux.c[0][5] -4492,1975,main.pedersen.segments[0].windows[35].mux.c[0][6] -4493,1968,main.pedersen.segments[0].windows[35].mux.c[0][7] -4494,1965,main.pedersen.segments[0].windows[35].mux.c[1][0] -4495,1976,main.pedersen.segments[0].windows[35].mux.c[1][1] -4496,1977,main.pedersen.segments[0].windows[35].mux.c[1][2] -4497,1978,main.pedersen.segments[0].windows[35].mux.c[1][3] -4498,1979,main.pedersen.segments[0].windows[35].mux.c[1][4] -4499,1980,main.pedersen.segments[0].windows[35].mux.c[1][5] -4500,1981,main.pedersen.segments[0].windows[35].mux.c[1][6] -4501,1969,main.pedersen.segments[0].windows[35].mux.c[1][7] -4502,143,main.pedersen.segments[0].windows[35].mux.s[0] -4503,144,main.pedersen.segments[0].windows[35].mux.s[1] -4504,145,main.pedersen.segments[0].windows[35].mux.s[2] -4505,1966,main.pedersen.segments[0].windows[35].mux.out[0] -4506,1982,main.pedersen.segments[0].windows[35].mux.out[1] -4507,1983,main.pedersen.segments[0].windows[35].mux.a210[0] -4508,1984,main.pedersen.segments[0].windows[35].mux.a210[1] -4509,1985,main.pedersen.segments[0].windows[35].mux.a21[0] -4510,1986,main.pedersen.segments[0].windows[35].mux.a21[1] -4511,1987,main.pedersen.segments[0].windows[35].mux.a20[0] -4512,1988,main.pedersen.segments[0].windows[35].mux.a20[1] -4513,3453,main.pedersen.segments[0].windows[35].mux.a2[0] -4514,3454,main.pedersen.segments[0].windows[35].mux.a2[1] -4515,1989,main.pedersen.segments[0].windows[35].mux.a10[0] -4516,1990,main.pedersen.segments[0].windows[35].mux.a10[1] -4517,1991,main.pedersen.segments[0].windows[35].mux.a1[0] -4518,1992,main.pedersen.segments[0].windows[35].mux.a1[1] -4519,1993,main.pedersen.segments[0].windows[35].mux.a0[0] -4520,1994,main.pedersen.segments[0].windows[35].mux.a0[1] -4521,1964,main.pedersen.segments[0].windows[35].mux.a[0] -4522,1965,main.pedersen.segments[0].windows[35].mux.a[1] -4523,1995,main.pedersen.segments[0].windows[35].mux.s10 -4524,1964,main.pedersen.segments[0].windows[35].dbl2.in[0] -4525,1965,main.pedersen.segments[0].windows[35].dbl2.in[1] -4526,1970,main.pedersen.segments[0].windows[35].dbl2.out[0] -4527,1976,main.pedersen.segments[0].windows[35].dbl2.out[1] -4528,1996,main.pedersen.segments[0].windows[35].dbl2.lamda -4529,1997,main.pedersen.segments[0].windows[35].dbl2.x1_2 -4530,1964,main.pedersen.segments[0].windows[35].adr3.in1[0] -4531,1965,main.pedersen.segments[0].windows[35].adr3.in1[1] -4532,1970,main.pedersen.segments[0].windows[35].adr3.in2[0] -4533,1976,main.pedersen.segments[0].windows[35].adr3.in2[1] -4534,1971,main.pedersen.segments[0].windows[35].adr3.out[0] -4535,1977,main.pedersen.segments[0].windows[35].adr3.out[1] -4536,1998,main.pedersen.segments[0].windows[35].adr3.lamda -4537,1964,main.pedersen.segments[0].windows[35].adr4.in1[0] -4538,1965,main.pedersen.segments[0].windows[35].adr4.in1[1] -4539,1971,main.pedersen.segments[0].windows[35].adr4.in2[0] -4540,1977,main.pedersen.segments[0].windows[35].adr4.in2[1] -4541,1972,main.pedersen.segments[0].windows[35].adr4.out[0] -4542,1978,main.pedersen.segments[0].windows[35].adr4.out[1] -4543,1999,main.pedersen.segments[0].windows[35].adr4.lamda -4544,1964,main.pedersen.segments[0].windows[35].adr5.in1[0] -4545,1965,main.pedersen.segments[0].windows[35].adr5.in1[1] -4546,1972,main.pedersen.segments[0].windows[35].adr5.in2[0] -4547,1978,main.pedersen.segments[0].windows[35].adr5.in2[1] -4548,1973,main.pedersen.segments[0].windows[35].adr5.out[0] -4549,1979,main.pedersen.segments[0].windows[35].adr5.out[1] -4550,2000,main.pedersen.segments[0].windows[35].adr5.lamda -4551,1964,main.pedersen.segments[0].windows[35].adr6.in1[0] -4552,1965,main.pedersen.segments[0].windows[35].adr6.in1[1] -4553,1973,main.pedersen.segments[0].windows[35].adr6.in2[0] -4554,1979,main.pedersen.segments[0].windows[35].adr6.in2[1] -4555,1974,main.pedersen.segments[0].windows[35].adr6.out[0] -4556,1980,main.pedersen.segments[0].windows[35].adr6.out[1] -4557,2001,main.pedersen.segments[0].windows[35].adr6.lamda -4558,1964,main.pedersen.segments[0].windows[35].adr7.in1[0] -4559,1965,main.pedersen.segments[0].windows[35].adr7.in1[1] -4560,1974,main.pedersen.segments[0].windows[35].adr7.in2[0] -4561,1980,main.pedersen.segments[0].windows[35].adr7.in2[1] -4562,1975,main.pedersen.segments[0].windows[35].adr7.out[0] -4563,1981,main.pedersen.segments[0].windows[35].adr7.out[1] -4564,2002,main.pedersen.segments[0].windows[35].adr7.lamda -4565,1964,main.pedersen.segments[0].windows[35].adr8.in1[0] -4566,1965,main.pedersen.segments[0].windows[35].adr8.in1[1] -4567,1975,main.pedersen.segments[0].windows[35].adr8.in2[0] -4568,1981,main.pedersen.segments[0].windows[35].adr8.in2[1] -4569,1968,main.pedersen.segments[0].windows[35].adr8.out[0] -4570,1969,main.pedersen.segments[0].windows[35].adr8.out[1] -4571,2003,main.pedersen.segments[0].windows[35].adr8.lamda -4591,147,main.pedersen.segments[0].windows[36].in[0] -4592,148,main.pedersen.segments[0].windows[36].in[1] -4593,149,main.pedersen.segments[0].windows[36].in[2] -4594,150,main.pedersen.segments[0].windows[36].in[3] -4595,2013,main.pedersen.segments[0].windows[36].base[0] -4596,2014,main.pedersen.segments[0].windows[36].base[1] -4597,2015,main.pedersen.segments[0].windows[36].out[0] -4598,2016,main.pedersen.segments[0].windows[36].out[1] -4599,2017,main.pedersen.segments[0].windows[36].out8[0] -4600,2018,main.pedersen.segments[0].windows[36].out8[1] -4601,2013,main.pedersen.segments[0].windows[36].mux.c[0][0] -4602,2019,main.pedersen.segments[0].windows[36].mux.c[0][1] -4603,2020,main.pedersen.segments[0].windows[36].mux.c[0][2] -4604,2021,main.pedersen.segments[0].windows[36].mux.c[0][3] -4605,2022,main.pedersen.segments[0].windows[36].mux.c[0][4] -4606,2023,main.pedersen.segments[0].windows[36].mux.c[0][5] -4607,2024,main.pedersen.segments[0].windows[36].mux.c[0][6] -4608,2017,main.pedersen.segments[0].windows[36].mux.c[0][7] -4609,2014,main.pedersen.segments[0].windows[36].mux.c[1][0] -4610,2025,main.pedersen.segments[0].windows[36].mux.c[1][1] -4611,2026,main.pedersen.segments[0].windows[36].mux.c[1][2] -4612,2027,main.pedersen.segments[0].windows[36].mux.c[1][3] -4613,2028,main.pedersen.segments[0].windows[36].mux.c[1][4] -4614,2029,main.pedersen.segments[0].windows[36].mux.c[1][5] -4615,2030,main.pedersen.segments[0].windows[36].mux.c[1][6] -4616,2018,main.pedersen.segments[0].windows[36].mux.c[1][7] -4617,147,main.pedersen.segments[0].windows[36].mux.s[0] -4618,148,main.pedersen.segments[0].windows[36].mux.s[1] -4619,149,main.pedersen.segments[0].windows[36].mux.s[2] -4620,2015,main.pedersen.segments[0].windows[36].mux.out[0] -4621,2031,main.pedersen.segments[0].windows[36].mux.out[1] -4622,2032,main.pedersen.segments[0].windows[36].mux.a210[0] -4623,2033,main.pedersen.segments[0].windows[36].mux.a210[1] -4624,2034,main.pedersen.segments[0].windows[36].mux.a21[0] -4625,2035,main.pedersen.segments[0].windows[36].mux.a21[1] -4626,2036,main.pedersen.segments[0].windows[36].mux.a20[0] -4627,2037,main.pedersen.segments[0].windows[36].mux.a20[1] -4628,3455,main.pedersen.segments[0].windows[36].mux.a2[0] -4629,3456,main.pedersen.segments[0].windows[36].mux.a2[1] -4630,2038,main.pedersen.segments[0].windows[36].mux.a10[0] -4631,2039,main.pedersen.segments[0].windows[36].mux.a10[1] -4632,2040,main.pedersen.segments[0].windows[36].mux.a1[0] -4633,2041,main.pedersen.segments[0].windows[36].mux.a1[1] -4634,2042,main.pedersen.segments[0].windows[36].mux.a0[0] -4635,2043,main.pedersen.segments[0].windows[36].mux.a0[1] -4636,2013,main.pedersen.segments[0].windows[36].mux.a[0] -4637,2014,main.pedersen.segments[0].windows[36].mux.a[1] -4638,2044,main.pedersen.segments[0].windows[36].mux.s10 -4639,2013,main.pedersen.segments[0].windows[36].dbl2.in[0] -4640,2014,main.pedersen.segments[0].windows[36].dbl2.in[1] -4641,2019,main.pedersen.segments[0].windows[36].dbl2.out[0] -4642,2025,main.pedersen.segments[0].windows[36].dbl2.out[1] -4643,2045,main.pedersen.segments[0].windows[36].dbl2.lamda -4644,2046,main.pedersen.segments[0].windows[36].dbl2.x1_2 -4645,2013,main.pedersen.segments[0].windows[36].adr3.in1[0] -4646,2014,main.pedersen.segments[0].windows[36].adr3.in1[1] -4647,2019,main.pedersen.segments[0].windows[36].adr3.in2[0] -4648,2025,main.pedersen.segments[0].windows[36].adr3.in2[1] -4649,2020,main.pedersen.segments[0].windows[36].adr3.out[0] -4650,2026,main.pedersen.segments[0].windows[36].adr3.out[1] -4651,2047,main.pedersen.segments[0].windows[36].adr3.lamda -4652,2013,main.pedersen.segments[0].windows[36].adr4.in1[0] -4653,2014,main.pedersen.segments[0].windows[36].adr4.in1[1] -4654,2020,main.pedersen.segments[0].windows[36].adr4.in2[0] -4655,2026,main.pedersen.segments[0].windows[36].adr4.in2[1] -4656,2021,main.pedersen.segments[0].windows[36].adr4.out[0] -4657,2027,main.pedersen.segments[0].windows[36].adr4.out[1] -4658,2048,main.pedersen.segments[0].windows[36].adr4.lamda -4659,2013,main.pedersen.segments[0].windows[36].adr5.in1[0] -4660,2014,main.pedersen.segments[0].windows[36].adr5.in1[1] -4661,2021,main.pedersen.segments[0].windows[36].adr5.in2[0] -4662,2027,main.pedersen.segments[0].windows[36].adr5.in2[1] -4663,2022,main.pedersen.segments[0].windows[36].adr5.out[0] -4664,2028,main.pedersen.segments[0].windows[36].adr5.out[1] -4665,2049,main.pedersen.segments[0].windows[36].adr5.lamda -4666,2013,main.pedersen.segments[0].windows[36].adr6.in1[0] -4667,2014,main.pedersen.segments[0].windows[36].adr6.in1[1] -4668,2022,main.pedersen.segments[0].windows[36].adr6.in2[0] -4669,2028,main.pedersen.segments[0].windows[36].adr6.in2[1] -4670,2023,main.pedersen.segments[0].windows[36].adr6.out[0] -4671,2029,main.pedersen.segments[0].windows[36].adr6.out[1] -4672,2050,main.pedersen.segments[0].windows[36].adr6.lamda -4673,2013,main.pedersen.segments[0].windows[36].adr7.in1[0] -4674,2014,main.pedersen.segments[0].windows[36].adr7.in1[1] -4675,2023,main.pedersen.segments[0].windows[36].adr7.in2[0] -4676,2029,main.pedersen.segments[0].windows[36].adr7.in2[1] -4677,2024,main.pedersen.segments[0].windows[36].adr7.out[0] -4678,2030,main.pedersen.segments[0].windows[36].adr7.out[1] -4679,2051,main.pedersen.segments[0].windows[36].adr7.lamda -4680,2013,main.pedersen.segments[0].windows[36].adr8.in1[0] -4681,2014,main.pedersen.segments[0].windows[36].adr8.in1[1] -4682,2024,main.pedersen.segments[0].windows[36].adr8.in2[0] -4683,2030,main.pedersen.segments[0].windows[36].adr8.in2[1] -4684,2017,main.pedersen.segments[0].windows[36].adr8.out[0] -4685,2018,main.pedersen.segments[0].windows[36].adr8.out[1] -4686,2052,main.pedersen.segments[0].windows[36].adr8.lamda -4706,151,main.pedersen.segments[0].windows[37].in[0] -4707,152,main.pedersen.segments[0].windows[37].in[1] -4708,153,main.pedersen.segments[0].windows[37].in[2] -4709,154,main.pedersen.segments[0].windows[37].in[3] -4710,2062,main.pedersen.segments[0].windows[37].base[0] -4711,2063,main.pedersen.segments[0].windows[37].base[1] -4712,2064,main.pedersen.segments[0].windows[37].out[0] -4713,2065,main.pedersen.segments[0].windows[37].out[1] -4714,2066,main.pedersen.segments[0].windows[37].out8[0] -4715,2067,main.pedersen.segments[0].windows[37].out8[1] -4716,2062,main.pedersen.segments[0].windows[37].mux.c[0][0] -4717,2068,main.pedersen.segments[0].windows[37].mux.c[0][1] -4718,2069,main.pedersen.segments[0].windows[37].mux.c[0][2] -4719,2070,main.pedersen.segments[0].windows[37].mux.c[0][3] -4720,2071,main.pedersen.segments[0].windows[37].mux.c[0][4] -4721,2072,main.pedersen.segments[0].windows[37].mux.c[0][5] -4722,2073,main.pedersen.segments[0].windows[37].mux.c[0][6] -4723,2066,main.pedersen.segments[0].windows[37].mux.c[0][7] -4724,2063,main.pedersen.segments[0].windows[37].mux.c[1][0] -4725,2074,main.pedersen.segments[0].windows[37].mux.c[1][1] -4726,2075,main.pedersen.segments[0].windows[37].mux.c[1][2] -4727,2076,main.pedersen.segments[0].windows[37].mux.c[1][3] -4728,2077,main.pedersen.segments[0].windows[37].mux.c[1][4] -4729,2078,main.pedersen.segments[0].windows[37].mux.c[1][5] -4730,2079,main.pedersen.segments[0].windows[37].mux.c[1][6] -4731,2067,main.pedersen.segments[0].windows[37].mux.c[1][7] -4732,151,main.pedersen.segments[0].windows[37].mux.s[0] -4733,152,main.pedersen.segments[0].windows[37].mux.s[1] -4734,153,main.pedersen.segments[0].windows[37].mux.s[2] -4735,2064,main.pedersen.segments[0].windows[37].mux.out[0] -4736,2080,main.pedersen.segments[0].windows[37].mux.out[1] -4737,2081,main.pedersen.segments[0].windows[37].mux.a210[0] -4738,2082,main.pedersen.segments[0].windows[37].mux.a210[1] -4739,2083,main.pedersen.segments[0].windows[37].mux.a21[0] -4740,2084,main.pedersen.segments[0].windows[37].mux.a21[1] -4741,2085,main.pedersen.segments[0].windows[37].mux.a20[0] -4742,2086,main.pedersen.segments[0].windows[37].mux.a20[1] -4743,3457,main.pedersen.segments[0].windows[37].mux.a2[0] -4744,3458,main.pedersen.segments[0].windows[37].mux.a2[1] -4745,2087,main.pedersen.segments[0].windows[37].mux.a10[0] -4746,2088,main.pedersen.segments[0].windows[37].mux.a10[1] -4747,2089,main.pedersen.segments[0].windows[37].mux.a1[0] -4748,2090,main.pedersen.segments[0].windows[37].mux.a1[1] -4749,2091,main.pedersen.segments[0].windows[37].mux.a0[0] -4750,2092,main.pedersen.segments[0].windows[37].mux.a0[1] -4751,2062,main.pedersen.segments[0].windows[37].mux.a[0] -4752,2063,main.pedersen.segments[0].windows[37].mux.a[1] -4753,2093,main.pedersen.segments[0].windows[37].mux.s10 -4754,2062,main.pedersen.segments[0].windows[37].dbl2.in[0] -4755,2063,main.pedersen.segments[0].windows[37].dbl2.in[1] -4756,2068,main.pedersen.segments[0].windows[37].dbl2.out[0] -4757,2074,main.pedersen.segments[0].windows[37].dbl2.out[1] -4758,2094,main.pedersen.segments[0].windows[37].dbl2.lamda -4759,2095,main.pedersen.segments[0].windows[37].dbl2.x1_2 -4760,2062,main.pedersen.segments[0].windows[37].adr3.in1[0] -4761,2063,main.pedersen.segments[0].windows[37].adr3.in1[1] -4762,2068,main.pedersen.segments[0].windows[37].adr3.in2[0] -4763,2074,main.pedersen.segments[0].windows[37].adr3.in2[1] -4764,2069,main.pedersen.segments[0].windows[37].adr3.out[0] -4765,2075,main.pedersen.segments[0].windows[37].adr3.out[1] -4766,2096,main.pedersen.segments[0].windows[37].adr3.lamda -4767,2062,main.pedersen.segments[0].windows[37].adr4.in1[0] -4768,2063,main.pedersen.segments[0].windows[37].adr4.in1[1] -4769,2069,main.pedersen.segments[0].windows[37].adr4.in2[0] -4770,2075,main.pedersen.segments[0].windows[37].adr4.in2[1] -4771,2070,main.pedersen.segments[0].windows[37].adr4.out[0] -4772,2076,main.pedersen.segments[0].windows[37].adr4.out[1] -4773,2097,main.pedersen.segments[0].windows[37].adr4.lamda -4774,2062,main.pedersen.segments[0].windows[37].adr5.in1[0] -4775,2063,main.pedersen.segments[0].windows[37].adr5.in1[1] -4776,2070,main.pedersen.segments[0].windows[37].adr5.in2[0] -4777,2076,main.pedersen.segments[0].windows[37].adr5.in2[1] -4778,2071,main.pedersen.segments[0].windows[37].adr5.out[0] -4779,2077,main.pedersen.segments[0].windows[37].adr5.out[1] -4780,2098,main.pedersen.segments[0].windows[37].adr5.lamda -4781,2062,main.pedersen.segments[0].windows[37].adr6.in1[0] -4782,2063,main.pedersen.segments[0].windows[37].adr6.in1[1] -4783,2071,main.pedersen.segments[0].windows[37].adr6.in2[0] -4784,2077,main.pedersen.segments[0].windows[37].adr6.in2[1] -4785,2072,main.pedersen.segments[0].windows[37].adr6.out[0] -4786,2078,main.pedersen.segments[0].windows[37].adr6.out[1] -4787,2099,main.pedersen.segments[0].windows[37].adr6.lamda -4788,2062,main.pedersen.segments[0].windows[37].adr7.in1[0] -4789,2063,main.pedersen.segments[0].windows[37].adr7.in1[1] -4790,2072,main.pedersen.segments[0].windows[37].adr7.in2[0] -4791,2078,main.pedersen.segments[0].windows[37].adr7.in2[1] -4792,2073,main.pedersen.segments[0].windows[37].adr7.out[0] -4793,2079,main.pedersen.segments[0].windows[37].adr7.out[1] -4794,2100,main.pedersen.segments[0].windows[37].adr7.lamda -4795,2062,main.pedersen.segments[0].windows[37].adr8.in1[0] -4796,2063,main.pedersen.segments[0].windows[37].adr8.in1[1] -4797,2073,main.pedersen.segments[0].windows[37].adr8.in2[0] -4798,2079,main.pedersen.segments[0].windows[37].adr8.in2[1] -4799,2066,main.pedersen.segments[0].windows[37].adr8.out[0] -4800,2067,main.pedersen.segments[0].windows[37].adr8.out[1] -4801,2101,main.pedersen.segments[0].windows[37].adr8.lamda -4821,155,main.pedersen.segments[0].windows[38].in[0] -4822,156,main.pedersen.segments[0].windows[38].in[1] -4823,157,main.pedersen.segments[0].windows[38].in[2] -4824,158,main.pedersen.segments[0].windows[38].in[3] -4825,2111,main.pedersen.segments[0].windows[38].base[0] -4826,2112,main.pedersen.segments[0].windows[38].base[1] -4827,2113,main.pedersen.segments[0].windows[38].out[0] -4828,2114,main.pedersen.segments[0].windows[38].out[1] -4829,2115,main.pedersen.segments[0].windows[38].out8[0] -4830,2116,main.pedersen.segments[0].windows[38].out8[1] -4831,2111,main.pedersen.segments[0].windows[38].mux.c[0][0] -4832,2117,main.pedersen.segments[0].windows[38].mux.c[0][1] -4833,2118,main.pedersen.segments[0].windows[38].mux.c[0][2] -4834,2119,main.pedersen.segments[0].windows[38].mux.c[0][3] -4835,2120,main.pedersen.segments[0].windows[38].mux.c[0][4] -4836,2121,main.pedersen.segments[0].windows[38].mux.c[0][5] -4837,2122,main.pedersen.segments[0].windows[38].mux.c[0][6] -4838,2115,main.pedersen.segments[0].windows[38].mux.c[0][7] -4839,2112,main.pedersen.segments[0].windows[38].mux.c[1][0] -4840,2123,main.pedersen.segments[0].windows[38].mux.c[1][1] -4841,2124,main.pedersen.segments[0].windows[38].mux.c[1][2] -4842,2125,main.pedersen.segments[0].windows[38].mux.c[1][3] -4843,2126,main.pedersen.segments[0].windows[38].mux.c[1][4] -4844,2127,main.pedersen.segments[0].windows[38].mux.c[1][5] -4845,2128,main.pedersen.segments[0].windows[38].mux.c[1][6] -4846,2116,main.pedersen.segments[0].windows[38].mux.c[1][7] -4847,155,main.pedersen.segments[0].windows[38].mux.s[0] -4848,156,main.pedersen.segments[0].windows[38].mux.s[1] -4849,157,main.pedersen.segments[0].windows[38].mux.s[2] -4850,2113,main.pedersen.segments[0].windows[38].mux.out[0] -4851,2129,main.pedersen.segments[0].windows[38].mux.out[1] -4852,2130,main.pedersen.segments[0].windows[38].mux.a210[0] -4853,2131,main.pedersen.segments[0].windows[38].mux.a210[1] -4854,2132,main.pedersen.segments[0].windows[38].mux.a21[0] -4855,2133,main.pedersen.segments[0].windows[38].mux.a21[1] -4856,2134,main.pedersen.segments[0].windows[38].mux.a20[0] -4857,2135,main.pedersen.segments[0].windows[38].mux.a20[1] -4858,3459,main.pedersen.segments[0].windows[38].mux.a2[0] -4859,3460,main.pedersen.segments[0].windows[38].mux.a2[1] -4860,2136,main.pedersen.segments[0].windows[38].mux.a10[0] -4861,2137,main.pedersen.segments[0].windows[38].mux.a10[1] -4862,2138,main.pedersen.segments[0].windows[38].mux.a1[0] -4863,2139,main.pedersen.segments[0].windows[38].mux.a1[1] -4864,2140,main.pedersen.segments[0].windows[38].mux.a0[0] -4865,2141,main.pedersen.segments[0].windows[38].mux.a0[1] -4866,2111,main.pedersen.segments[0].windows[38].mux.a[0] -4867,2112,main.pedersen.segments[0].windows[38].mux.a[1] -4868,2142,main.pedersen.segments[0].windows[38].mux.s10 -4869,2111,main.pedersen.segments[0].windows[38].dbl2.in[0] -4870,2112,main.pedersen.segments[0].windows[38].dbl2.in[1] -4871,2117,main.pedersen.segments[0].windows[38].dbl2.out[0] -4872,2123,main.pedersen.segments[0].windows[38].dbl2.out[1] -4873,2143,main.pedersen.segments[0].windows[38].dbl2.lamda -4874,2144,main.pedersen.segments[0].windows[38].dbl2.x1_2 -4875,2111,main.pedersen.segments[0].windows[38].adr3.in1[0] -4876,2112,main.pedersen.segments[0].windows[38].adr3.in1[1] -4877,2117,main.pedersen.segments[0].windows[38].adr3.in2[0] -4878,2123,main.pedersen.segments[0].windows[38].adr3.in2[1] -4879,2118,main.pedersen.segments[0].windows[38].adr3.out[0] -4880,2124,main.pedersen.segments[0].windows[38].adr3.out[1] -4881,2145,main.pedersen.segments[0].windows[38].adr3.lamda -4882,2111,main.pedersen.segments[0].windows[38].adr4.in1[0] -4883,2112,main.pedersen.segments[0].windows[38].adr4.in1[1] -4884,2118,main.pedersen.segments[0].windows[38].adr4.in2[0] -4885,2124,main.pedersen.segments[0].windows[38].adr4.in2[1] -4886,2119,main.pedersen.segments[0].windows[38].adr4.out[0] -4887,2125,main.pedersen.segments[0].windows[38].adr4.out[1] -4888,2146,main.pedersen.segments[0].windows[38].adr4.lamda -4889,2111,main.pedersen.segments[0].windows[38].adr5.in1[0] -4890,2112,main.pedersen.segments[0].windows[38].adr5.in1[1] -4891,2119,main.pedersen.segments[0].windows[38].adr5.in2[0] -4892,2125,main.pedersen.segments[0].windows[38].adr5.in2[1] -4893,2120,main.pedersen.segments[0].windows[38].adr5.out[0] -4894,2126,main.pedersen.segments[0].windows[38].adr5.out[1] -4895,2147,main.pedersen.segments[0].windows[38].adr5.lamda -4896,2111,main.pedersen.segments[0].windows[38].adr6.in1[0] -4897,2112,main.pedersen.segments[0].windows[38].adr6.in1[1] -4898,2120,main.pedersen.segments[0].windows[38].adr6.in2[0] -4899,2126,main.pedersen.segments[0].windows[38].adr6.in2[1] -4900,2121,main.pedersen.segments[0].windows[38].adr6.out[0] -4901,2127,main.pedersen.segments[0].windows[38].adr6.out[1] -4902,2148,main.pedersen.segments[0].windows[38].adr6.lamda -4903,2111,main.pedersen.segments[0].windows[38].adr7.in1[0] -4904,2112,main.pedersen.segments[0].windows[38].adr7.in1[1] -4905,2121,main.pedersen.segments[0].windows[38].adr7.in2[0] -4906,2127,main.pedersen.segments[0].windows[38].adr7.in2[1] -4907,2122,main.pedersen.segments[0].windows[38].adr7.out[0] -4908,2128,main.pedersen.segments[0].windows[38].adr7.out[1] -4909,2149,main.pedersen.segments[0].windows[38].adr7.lamda -4910,2111,main.pedersen.segments[0].windows[38].adr8.in1[0] -4911,2112,main.pedersen.segments[0].windows[38].adr8.in1[1] -4912,2122,main.pedersen.segments[0].windows[38].adr8.in2[0] -4913,2128,main.pedersen.segments[0].windows[38].adr8.in2[1] -4914,2115,main.pedersen.segments[0].windows[38].adr8.out[0] -4915,2116,main.pedersen.segments[0].windows[38].adr8.out[1] -4916,2150,main.pedersen.segments[0].windows[38].adr8.lamda -4936,159,main.pedersen.segments[0].windows[39].in[0] -4937,160,main.pedersen.segments[0].windows[39].in[1] -4938,161,main.pedersen.segments[0].windows[39].in[2] -4939,162,main.pedersen.segments[0].windows[39].in[3] -4940,2160,main.pedersen.segments[0].windows[39].base[0] -4941,2161,main.pedersen.segments[0].windows[39].base[1] -4942,2162,main.pedersen.segments[0].windows[39].out[0] -4943,2163,main.pedersen.segments[0].windows[39].out[1] -4944,2164,main.pedersen.segments[0].windows[39].out8[0] -4945,2165,main.pedersen.segments[0].windows[39].out8[1] -4946,2160,main.pedersen.segments[0].windows[39].mux.c[0][0] -4947,2166,main.pedersen.segments[0].windows[39].mux.c[0][1] -4948,2167,main.pedersen.segments[0].windows[39].mux.c[0][2] -4949,2168,main.pedersen.segments[0].windows[39].mux.c[0][3] -4950,2169,main.pedersen.segments[0].windows[39].mux.c[0][4] -4951,2170,main.pedersen.segments[0].windows[39].mux.c[0][5] -4952,2171,main.pedersen.segments[0].windows[39].mux.c[0][6] -4953,2164,main.pedersen.segments[0].windows[39].mux.c[0][7] -4954,2161,main.pedersen.segments[0].windows[39].mux.c[1][0] -4955,2172,main.pedersen.segments[0].windows[39].mux.c[1][1] -4956,2173,main.pedersen.segments[0].windows[39].mux.c[1][2] -4957,2174,main.pedersen.segments[0].windows[39].mux.c[1][3] -4958,2175,main.pedersen.segments[0].windows[39].mux.c[1][4] -4959,2176,main.pedersen.segments[0].windows[39].mux.c[1][5] -4960,2177,main.pedersen.segments[0].windows[39].mux.c[1][6] -4961,2165,main.pedersen.segments[0].windows[39].mux.c[1][7] -4962,159,main.pedersen.segments[0].windows[39].mux.s[0] -4963,160,main.pedersen.segments[0].windows[39].mux.s[1] -4964,161,main.pedersen.segments[0].windows[39].mux.s[2] -4965,2162,main.pedersen.segments[0].windows[39].mux.out[0] -4966,2178,main.pedersen.segments[0].windows[39].mux.out[1] -4967,2179,main.pedersen.segments[0].windows[39].mux.a210[0] -4968,2180,main.pedersen.segments[0].windows[39].mux.a210[1] -4969,2181,main.pedersen.segments[0].windows[39].mux.a21[0] -4970,2182,main.pedersen.segments[0].windows[39].mux.a21[1] -4971,2183,main.pedersen.segments[0].windows[39].mux.a20[0] -4972,2184,main.pedersen.segments[0].windows[39].mux.a20[1] -4973,3461,main.pedersen.segments[0].windows[39].mux.a2[0] -4974,3462,main.pedersen.segments[0].windows[39].mux.a2[1] -4975,2185,main.pedersen.segments[0].windows[39].mux.a10[0] -4976,2186,main.pedersen.segments[0].windows[39].mux.a10[1] -4977,2187,main.pedersen.segments[0].windows[39].mux.a1[0] -4978,2188,main.pedersen.segments[0].windows[39].mux.a1[1] -4979,2189,main.pedersen.segments[0].windows[39].mux.a0[0] -4980,2190,main.pedersen.segments[0].windows[39].mux.a0[1] -4981,2160,main.pedersen.segments[0].windows[39].mux.a[0] -4982,2161,main.pedersen.segments[0].windows[39].mux.a[1] -4983,2191,main.pedersen.segments[0].windows[39].mux.s10 -4984,2160,main.pedersen.segments[0].windows[39].dbl2.in[0] -4985,2161,main.pedersen.segments[0].windows[39].dbl2.in[1] -4986,2166,main.pedersen.segments[0].windows[39].dbl2.out[0] -4987,2172,main.pedersen.segments[0].windows[39].dbl2.out[1] -4988,2192,main.pedersen.segments[0].windows[39].dbl2.lamda -4989,2193,main.pedersen.segments[0].windows[39].dbl2.x1_2 -4990,2160,main.pedersen.segments[0].windows[39].adr3.in1[0] -4991,2161,main.pedersen.segments[0].windows[39].adr3.in1[1] -4992,2166,main.pedersen.segments[0].windows[39].adr3.in2[0] -4993,2172,main.pedersen.segments[0].windows[39].adr3.in2[1] -4994,2167,main.pedersen.segments[0].windows[39].adr3.out[0] -4995,2173,main.pedersen.segments[0].windows[39].adr3.out[1] -4996,2194,main.pedersen.segments[0].windows[39].adr3.lamda -4997,2160,main.pedersen.segments[0].windows[39].adr4.in1[0] -4998,2161,main.pedersen.segments[0].windows[39].adr4.in1[1] -4999,2167,main.pedersen.segments[0].windows[39].adr4.in2[0] -5000,2173,main.pedersen.segments[0].windows[39].adr4.in2[1] -5001,2168,main.pedersen.segments[0].windows[39].adr4.out[0] -5002,2174,main.pedersen.segments[0].windows[39].adr4.out[1] -5003,2195,main.pedersen.segments[0].windows[39].adr4.lamda -5004,2160,main.pedersen.segments[0].windows[39].adr5.in1[0] -5005,2161,main.pedersen.segments[0].windows[39].adr5.in1[1] -5006,2168,main.pedersen.segments[0].windows[39].adr5.in2[0] -5007,2174,main.pedersen.segments[0].windows[39].adr5.in2[1] -5008,2169,main.pedersen.segments[0].windows[39].adr5.out[0] -5009,2175,main.pedersen.segments[0].windows[39].adr5.out[1] -5010,2196,main.pedersen.segments[0].windows[39].adr5.lamda -5011,2160,main.pedersen.segments[0].windows[39].adr6.in1[0] -5012,2161,main.pedersen.segments[0].windows[39].adr6.in1[1] -5013,2169,main.pedersen.segments[0].windows[39].adr6.in2[0] -5014,2175,main.pedersen.segments[0].windows[39].adr6.in2[1] -5015,2170,main.pedersen.segments[0].windows[39].adr6.out[0] -5016,2176,main.pedersen.segments[0].windows[39].adr6.out[1] -5017,2197,main.pedersen.segments[0].windows[39].adr6.lamda -5018,2160,main.pedersen.segments[0].windows[39].adr7.in1[0] -5019,2161,main.pedersen.segments[0].windows[39].adr7.in1[1] -5020,2170,main.pedersen.segments[0].windows[39].adr7.in2[0] -5021,2176,main.pedersen.segments[0].windows[39].adr7.in2[1] -5022,2171,main.pedersen.segments[0].windows[39].adr7.out[0] -5023,2177,main.pedersen.segments[0].windows[39].adr7.out[1] -5024,2198,main.pedersen.segments[0].windows[39].adr7.lamda -5025,2160,main.pedersen.segments[0].windows[39].adr8.in1[0] -5026,2161,main.pedersen.segments[0].windows[39].adr8.in1[1] -5027,2171,main.pedersen.segments[0].windows[39].adr8.in2[0] -5028,2177,main.pedersen.segments[0].windows[39].adr8.in2[1] -5029,2164,main.pedersen.segments[0].windows[39].adr8.out[0] -5030,2165,main.pedersen.segments[0].windows[39].adr8.out[1] -5031,2199,main.pedersen.segments[0].windows[39].adr8.lamda -5051,163,main.pedersen.segments[0].windows[40].in[0] -5052,164,main.pedersen.segments[0].windows[40].in[1] -5053,165,main.pedersen.segments[0].windows[40].in[2] -5054,166,main.pedersen.segments[0].windows[40].in[3] -5055,2209,main.pedersen.segments[0].windows[40].base[0] -5056,2210,main.pedersen.segments[0].windows[40].base[1] -5057,2211,main.pedersen.segments[0].windows[40].out[0] -5058,2212,main.pedersen.segments[0].windows[40].out[1] -5059,2213,main.pedersen.segments[0].windows[40].out8[0] -5060,2214,main.pedersen.segments[0].windows[40].out8[1] -5061,2209,main.pedersen.segments[0].windows[40].mux.c[0][0] -5062,2215,main.pedersen.segments[0].windows[40].mux.c[0][1] -5063,2216,main.pedersen.segments[0].windows[40].mux.c[0][2] -5064,2217,main.pedersen.segments[0].windows[40].mux.c[0][3] -5065,2218,main.pedersen.segments[0].windows[40].mux.c[0][4] -5066,2219,main.pedersen.segments[0].windows[40].mux.c[0][5] -5067,2220,main.pedersen.segments[0].windows[40].mux.c[0][6] -5068,2213,main.pedersen.segments[0].windows[40].mux.c[0][7] -5069,2210,main.pedersen.segments[0].windows[40].mux.c[1][0] -5070,2221,main.pedersen.segments[0].windows[40].mux.c[1][1] -5071,2222,main.pedersen.segments[0].windows[40].mux.c[1][2] -5072,2223,main.pedersen.segments[0].windows[40].mux.c[1][3] -5073,2224,main.pedersen.segments[0].windows[40].mux.c[1][4] -5074,2225,main.pedersen.segments[0].windows[40].mux.c[1][5] -5075,2226,main.pedersen.segments[0].windows[40].mux.c[1][6] -5076,2214,main.pedersen.segments[0].windows[40].mux.c[1][7] -5077,163,main.pedersen.segments[0].windows[40].mux.s[0] -5078,164,main.pedersen.segments[0].windows[40].mux.s[1] -5079,165,main.pedersen.segments[0].windows[40].mux.s[2] -5080,2211,main.pedersen.segments[0].windows[40].mux.out[0] -5081,2227,main.pedersen.segments[0].windows[40].mux.out[1] -5082,2228,main.pedersen.segments[0].windows[40].mux.a210[0] -5083,2229,main.pedersen.segments[0].windows[40].mux.a210[1] -5084,2230,main.pedersen.segments[0].windows[40].mux.a21[0] -5085,2231,main.pedersen.segments[0].windows[40].mux.a21[1] -5086,2232,main.pedersen.segments[0].windows[40].mux.a20[0] -5087,2233,main.pedersen.segments[0].windows[40].mux.a20[1] -5088,3463,main.pedersen.segments[0].windows[40].mux.a2[0] -5089,3464,main.pedersen.segments[0].windows[40].mux.a2[1] -5090,2234,main.pedersen.segments[0].windows[40].mux.a10[0] -5091,2235,main.pedersen.segments[0].windows[40].mux.a10[1] -5092,2236,main.pedersen.segments[0].windows[40].mux.a1[0] -5093,2237,main.pedersen.segments[0].windows[40].mux.a1[1] -5094,2238,main.pedersen.segments[0].windows[40].mux.a0[0] -5095,2239,main.pedersen.segments[0].windows[40].mux.a0[1] -5096,2209,main.pedersen.segments[0].windows[40].mux.a[0] -5097,2210,main.pedersen.segments[0].windows[40].mux.a[1] -5098,2240,main.pedersen.segments[0].windows[40].mux.s10 -5099,2209,main.pedersen.segments[0].windows[40].dbl2.in[0] -5100,2210,main.pedersen.segments[0].windows[40].dbl2.in[1] -5101,2215,main.pedersen.segments[0].windows[40].dbl2.out[0] -5102,2221,main.pedersen.segments[0].windows[40].dbl2.out[1] -5103,2241,main.pedersen.segments[0].windows[40].dbl2.lamda -5104,2242,main.pedersen.segments[0].windows[40].dbl2.x1_2 -5105,2209,main.pedersen.segments[0].windows[40].adr3.in1[0] -5106,2210,main.pedersen.segments[0].windows[40].adr3.in1[1] -5107,2215,main.pedersen.segments[0].windows[40].adr3.in2[0] -5108,2221,main.pedersen.segments[0].windows[40].adr3.in2[1] -5109,2216,main.pedersen.segments[0].windows[40].adr3.out[0] -5110,2222,main.pedersen.segments[0].windows[40].adr3.out[1] -5111,2243,main.pedersen.segments[0].windows[40].adr3.lamda -5112,2209,main.pedersen.segments[0].windows[40].adr4.in1[0] -5113,2210,main.pedersen.segments[0].windows[40].adr4.in1[1] -5114,2216,main.pedersen.segments[0].windows[40].adr4.in2[0] -5115,2222,main.pedersen.segments[0].windows[40].adr4.in2[1] -5116,2217,main.pedersen.segments[0].windows[40].adr4.out[0] -5117,2223,main.pedersen.segments[0].windows[40].adr4.out[1] -5118,2244,main.pedersen.segments[0].windows[40].adr4.lamda -5119,2209,main.pedersen.segments[0].windows[40].adr5.in1[0] -5120,2210,main.pedersen.segments[0].windows[40].adr5.in1[1] -5121,2217,main.pedersen.segments[0].windows[40].adr5.in2[0] -5122,2223,main.pedersen.segments[0].windows[40].adr5.in2[1] -5123,2218,main.pedersen.segments[0].windows[40].adr5.out[0] -5124,2224,main.pedersen.segments[0].windows[40].adr5.out[1] -5125,2245,main.pedersen.segments[0].windows[40].adr5.lamda -5126,2209,main.pedersen.segments[0].windows[40].adr6.in1[0] -5127,2210,main.pedersen.segments[0].windows[40].adr6.in1[1] -5128,2218,main.pedersen.segments[0].windows[40].adr6.in2[0] -5129,2224,main.pedersen.segments[0].windows[40].adr6.in2[1] -5130,2219,main.pedersen.segments[0].windows[40].adr6.out[0] -5131,2225,main.pedersen.segments[0].windows[40].adr6.out[1] -5132,2246,main.pedersen.segments[0].windows[40].adr6.lamda -5133,2209,main.pedersen.segments[0].windows[40].adr7.in1[0] -5134,2210,main.pedersen.segments[0].windows[40].adr7.in1[1] -5135,2219,main.pedersen.segments[0].windows[40].adr7.in2[0] -5136,2225,main.pedersen.segments[0].windows[40].adr7.in2[1] -5137,2220,main.pedersen.segments[0].windows[40].adr7.out[0] -5138,2226,main.pedersen.segments[0].windows[40].adr7.out[1] -5139,2247,main.pedersen.segments[0].windows[40].adr7.lamda -5140,2209,main.pedersen.segments[0].windows[40].adr8.in1[0] -5141,2210,main.pedersen.segments[0].windows[40].adr8.in1[1] -5142,2220,main.pedersen.segments[0].windows[40].adr8.in2[0] -5143,2226,main.pedersen.segments[0].windows[40].adr8.in2[1] -5144,2213,main.pedersen.segments[0].windows[40].adr8.out[0] -5145,2214,main.pedersen.segments[0].windows[40].adr8.out[1] -5146,2248,main.pedersen.segments[0].windows[40].adr8.lamda -5166,167,main.pedersen.segments[0].windows[41].in[0] -5167,168,main.pedersen.segments[0].windows[41].in[1] -5168,169,main.pedersen.segments[0].windows[41].in[2] -5169,170,main.pedersen.segments[0].windows[41].in[3] -5170,2258,main.pedersen.segments[0].windows[41].base[0] -5171,2259,main.pedersen.segments[0].windows[41].base[1] -5172,2260,main.pedersen.segments[0].windows[41].out[0] -5173,2261,main.pedersen.segments[0].windows[41].out[1] -5174,2262,main.pedersen.segments[0].windows[41].out8[0] -5175,2263,main.pedersen.segments[0].windows[41].out8[1] -5176,2258,main.pedersen.segments[0].windows[41].mux.c[0][0] -5177,2264,main.pedersen.segments[0].windows[41].mux.c[0][1] -5178,2265,main.pedersen.segments[0].windows[41].mux.c[0][2] -5179,2266,main.pedersen.segments[0].windows[41].mux.c[0][3] -5180,2267,main.pedersen.segments[0].windows[41].mux.c[0][4] -5181,2268,main.pedersen.segments[0].windows[41].mux.c[0][5] -5182,2269,main.pedersen.segments[0].windows[41].mux.c[0][6] -5183,2262,main.pedersen.segments[0].windows[41].mux.c[0][7] -5184,2259,main.pedersen.segments[0].windows[41].mux.c[1][0] -5185,2270,main.pedersen.segments[0].windows[41].mux.c[1][1] -5186,2271,main.pedersen.segments[0].windows[41].mux.c[1][2] -5187,2272,main.pedersen.segments[0].windows[41].mux.c[1][3] -5188,2273,main.pedersen.segments[0].windows[41].mux.c[1][4] -5189,2274,main.pedersen.segments[0].windows[41].mux.c[1][5] -5190,2275,main.pedersen.segments[0].windows[41].mux.c[1][6] -5191,2263,main.pedersen.segments[0].windows[41].mux.c[1][7] -5192,167,main.pedersen.segments[0].windows[41].mux.s[0] -5193,168,main.pedersen.segments[0].windows[41].mux.s[1] -5194,169,main.pedersen.segments[0].windows[41].mux.s[2] -5195,2260,main.pedersen.segments[0].windows[41].mux.out[0] -5196,2276,main.pedersen.segments[0].windows[41].mux.out[1] -5197,2277,main.pedersen.segments[0].windows[41].mux.a210[0] -5198,2278,main.pedersen.segments[0].windows[41].mux.a210[1] -5199,2279,main.pedersen.segments[0].windows[41].mux.a21[0] -5200,2280,main.pedersen.segments[0].windows[41].mux.a21[1] -5201,2281,main.pedersen.segments[0].windows[41].mux.a20[0] -5202,2282,main.pedersen.segments[0].windows[41].mux.a20[1] -5203,3465,main.pedersen.segments[0].windows[41].mux.a2[0] -5204,3466,main.pedersen.segments[0].windows[41].mux.a2[1] -5205,2283,main.pedersen.segments[0].windows[41].mux.a10[0] -5206,2284,main.pedersen.segments[0].windows[41].mux.a10[1] -5207,2285,main.pedersen.segments[0].windows[41].mux.a1[0] -5208,2286,main.pedersen.segments[0].windows[41].mux.a1[1] -5209,2287,main.pedersen.segments[0].windows[41].mux.a0[0] -5210,2288,main.pedersen.segments[0].windows[41].mux.a0[1] -5211,2258,main.pedersen.segments[0].windows[41].mux.a[0] -5212,2259,main.pedersen.segments[0].windows[41].mux.a[1] -5213,2289,main.pedersen.segments[0].windows[41].mux.s10 -5214,2258,main.pedersen.segments[0].windows[41].dbl2.in[0] -5215,2259,main.pedersen.segments[0].windows[41].dbl2.in[1] -5216,2264,main.pedersen.segments[0].windows[41].dbl2.out[0] -5217,2270,main.pedersen.segments[0].windows[41].dbl2.out[1] -5218,2290,main.pedersen.segments[0].windows[41].dbl2.lamda -5219,2291,main.pedersen.segments[0].windows[41].dbl2.x1_2 -5220,2258,main.pedersen.segments[0].windows[41].adr3.in1[0] -5221,2259,main.pedersen.segments[0].windows[41].adr3.in1[1] -5222,2264,main.pedersen.segments[0].windows[41].adr3.in2[0] -5223,2270,main.pedersen.segments[0].windows[41].adr3.in2[1] -5224,2265,main.pedersen.segments[0].windows[41].adr3.out[0] -5225,2271,main.pedersen.segments[0].windows[41].adr3.out[1] -5226,2292,main.pedersen.segments[0].windows[41].adr3.lamda -5227,2258,main.pedersen.segments[0].windows[41].adr4.in1[0] -5228,2259,main.pedersen.segments[0].windows[41].adr4.in1[1] -5229,2265,main.pedersen.segments[0].windows[41].adr4.in2[0] -5230,2271,main.pedersen.segments[0].windows[41].adr4.in2[1] -5231,2266,main.pedersen.segments[0].windows[41].adr4.out[0] -5232,2272,main.pedersen.segments[0].windows[41].adr4.out[1] -5233,2293,main.pedersen.segments[0].windows[41].adr4.lamda -5234,2258,main.pedersen.segments[0].windows[41].adr5.in1[0] -5235,2259,main.pedersen.segments[0].windows[41].adr5.in1[1] -5236,2266,main.pedersen.segments[0].windows[41].adr5.in2[0] -5237,2272,main.pedersen.segments[0].windows[41].adr5.in2[1] -5238,2267,main.pedersen.segments[0].windows[41].adr5.out[0] -5239,2273,main.pedersen.segments[0].windows[41].adr5.out[1] -5240,2294,main.pedersen.segments[0].windows[41].adr5.lamda -5241,2258,main.pedersen.segments[0].windows[41].adr6.in1[0] -5242,2259,main.pedersen.segments[0].windows[41].adr6.in1[1] -5243,2267,main.pedersen.segments[0].windows[41].adr6.in2[0] -5244,2273,main.pedersen.segments[0].windows[41].adr6.in2[1] -5245,2268,main.pedersen.segments[0].windows[41].adr6.out[0] -5246,2274,main.pedersen.segments[0].windows[41].adr6.out[1] -5247,2295,main.pedersen.segments[0].windows[41].adr6.lamda -5248,2258,main.pedersen.segments[0].windows[41].adr7.in1[0] -5249,2259,main.pedersen.segments[0].windows[41].adr7.in1[1] -5250,2268,main.pedersen.segments[0].windows[41].adr7.in2[0] -5251,2274,main.pedersen.segments[0].windows[41].adr7.in2[1] -5252,2269,main.pedersen.segments[0].windows[41].adr7.out[0] -5253,2275,main.pedersen.segments[0].windows[41].adr7.out[1] -5254,2296,main.pedersen.segments[0].windows[41].adr7.lamda -5255,2258,main.pedersen.segments[0].windows[41].adr8.in1[0] -5256,2259,main.pedersen.segments[0].windows[41].adr8.in1[1] -5257,2269,main.pedersen.segments[0].windows[41].adr8.in2[0] -5258,2275,main.pedersen.segments[0].windows[41].adr8.in2[1] -5259,2262,main.pedersen.segments[0].windows[41].adr8.out[0] -5260,2263,main.pedersen.segments[0].windows[41].adr8.out[1] -5261,2297,main.pedersen.segments[0].windows[41].adr8.lamda -5281,171,main.pedersen.segments[0].windows[42].in[0] -5282,172,main.pedersen.segments[0].windows[42].in[1] -5283,173,main.pedersen.segments[0].windows[42].in[2] -5284,174,main.pedersen.segments[0].windows[42].in[3] -5285,2307,main.pedersen.segments[0].windows[42].base[0] -5286,2308,main.pedersen.segments[0].windows[42].base[1] -5287,2309,main.pedersen.segments[0].windows[42].out[0] -5288,2310,main.pedersen.segments[0].windows[42].out[1] -5289,2311,main.pedersen.segments[0].windows[42].out8[0] -5290,2312,main.pedersen.segments[0].windows[42].out8[1] -5291,2307,main.pedersen.segments[0].windows[42].mux.c[0][0] -5292,2313,main.pedersen.segments[0].windows[42].mux.c[0][1] -5293,2314,main.pedersen.segments[0].windows[42].mux.c[0][2] -5294,2315,main.pedersen.segments[0].windows[42].mux.c[0][3] -5295,2316,main.pedersen.segments[0].windows[42].mux.c[0][4] -5296,2317,main.pedersen.segments[0].windows[42].mux.c[0][5] -5297,2318,main.pedersen.segments[0].windows[42].mux.c[0][6] -5298,2311,main.pedersen.segments[0].windows[42].mux.c[0][7] -5299,2308,main.pedersen.segments[0].windows[42].mux.c[1][0] -5300,2319,main.pedersen.segments[0].windows[42].mux.c[1][1] -5301,2320,main.pedersen.segments[0].windows[42].mux.c[1][2] -5302,2321,main.pedersen.segments[0].windows[42].mux.c[1][3] -5303,2322,main.pedersen.segments[0].windows[42].mux.c[1][4] -5304,2323,main.pedersen.segments[0].windows[42].mux.c[1][5] -5305,2324,main.pedersen.segments[0].windows[42].mux.c[1][6] -5306,2312,main.pedersen.segments[0].windows[42].mux.c[1][7] -5307,171,main.pedersen.segments[0].windows[42].mux.s[0] -5308,172,main.pedersen.segments[0].windows[42].mux.s[1] -5309,173,main.pedersen.segments[0].windows[42].mux.s[2] -5310,2309,main.pedersen.segments[0].windows[42].mux.out[0] -5311,2325,main.pedersen.segments[0].windows[42].mux.out[1] -5312,2326,main.pedersen.segments[0].windows[42].mux.a210[0] -5313,2327,main.pedersen.segments[0].windows[42].mux.a210[1] -5314,2328,main.pedersen.segments[0].windows[42].mux.a21[0] -5315,2329,main.pedersen.segments[0].windows[42].mux.a21[1] -5316,2330,main.pedersen.segments[0].windows[42].mux.a20[0] -5317,2331,main.pedersen.segments[0].windows[42].mux.a20[1] -5318,3467,main.pedersen.segments[0].windows[42].mux.a2[0] -5319,3468,main.pedersen.segments[0].windows[42].mux.a2[1] -5320,2332,main.pedersen.segments[0].windows[42].mux.a10[0] -5321,2333,main.pedersen.segments[0].windows[42].mux.a10[1] -5322,2334,main.pedersen.segments[0].windows[42].mux.a1[0] -5323,2335,main.pedersen.segments[0].windows[42].mux.a1[1] -5324,2336,main.pedersen.segments[0].windows[42].mux.a0[0] -5325,2337,main.pedersen.segments[0].windows[42].mux.a0[1] -5326,2307,main.pedersen.segments[0].windows[42].mux.a[0] -5327,2308,main.pedersen.segments[0].windows[42].mux.a[1] -5328,2338,main.pedersen.segments[0].windows[42].mux.s10 -5329,2307,main.pedersen.segments[0].windows[42].dbl2.in[0] -5330,2308,main.pedersen.segments[0].windows[42].dbl2.in[1] -5331,2313,main.pedersen.segments[0].windows[42].dbl2.out[0] -5332,2319,main.pedersen.segments[0].windows[42].dbl2.out[1] -5333,2339,main.pedersen.segments[0].windows[42].dbl2.lamda -5334,2340,main.pedersen.segments[0].windows[42].dbl2.x1_2 -5335,2307,main.pedersen.segments[0].windows[42].adr3.in1[0] -5336,2308,main.pedersen.segments[0].windows[42].adr3.in1[1] -5337,2313,main.pedersen.segments[0].windows[42].adr3.in2[0] -5338,2319,main.pedersen.segments[0].windows[42].adr3.in2[1] -5339,2314,main.pedersen.segments[0].windows[42].adr3.out[0] -5340,2320,main.pedersen.segments[0].windows[42].adr3.out[1] -5341,2341,main.pedersen.segments[0].windows[42].adr3.lamda -5342,2307,main.pedersen.segments[0].windows[42].adr4.in1[0] -5343,2308,main.pedersen.segments[0].windows[42].adr4.in1[1] -5344,2314,main.pedersen.segments[0].windows[42].adr4.in2[0] -5345,2320,main.pedersen.segments[0].windows[42].adr4.in2[1] -5346,2315,main.pedersen.segments[0].windows[42].adr4.out[0] -5347,2321,main.pedersen.segments[0].windows[42].adr4.out[1] -5348,2342,main.pedersen.segments[0].windows[42].adr4.lamda -5349,2307,main.pedersen.segments[0].windows[42].adr5.in1[0] -5350,2308,main.pedersen.segments[0].windows[42].adr5.in1[1] -5351,2315,main.pedersen.segments[0].windows[42].adr5.in2[0] -5352,2321,main.pedersen.segments[0].windows[42].adr5.in2[1] -5353,2316,main.pedersen.segments[0].windows[42].adr5.out[0] -5354,2322,main.pedersen.segments[0].windows[42].adr5.out[1] -5355,2343,main.pedersen.segments[0].windows[42].adr5.lamda -5356,2307,main.pedersen.segments[0].windows[42].adr6.in1[0] -5357,2308,main.pedersen.segments[0].windows[42].adr6.in1[1] -5358,2316,main.pedersen.segments[0].windows[42].adr6.in2[0] -5359,2322,main.pedersen.segments[0].windows[42].adr6.in2[1] -5360,2317,main.pedersen.segments[0].windows[42].adr6.out[0] -5361,2323,main.pedersen.segments[0].windows[42].adr6.out[1] -5362,2344,main.pedersen.segments[0].windows[42].adr6.lamda -5363,2307,main.pedersen.segments[0].windows[42].adr7.in1[0] -5364,2308,main.pedersen.segments[0].windows[42].adr7.in1[1] -5365,2317,main.pedersen.segments[0].windows[42].adr7.in2[0] -5366,2323,main.pedersen.segments[0].windows[42].adr7.in2[1] -5367,2318,main.pedersen.segments[0].windows[42].adr7.out[0] -5368,2324,main.pedersen.segments[0].windows[42].adr7.out[1] -5369,2345,main.pedersen.segments[0].windows[42].adr7.lamda -5370,2307,main.pedersen.segments[0].windows[42].adr8.in1[0] -5371,2308,main.pedersen.segments[0].windows[42].adr8.in1[1] -5372,2318,main.pedersen.segments[0].windows[42].adr8.in2[0] -5373,2324,main.pedersen.segments[0].windows[42].adr8.in2[1] -5374,2311,main.pedersen.segments[0].windows[42].adr8.out[0] -5375,2312,main.pedersen.segments[0].windows[42].adr8.out[1] -5376,2346,main.pedersen.segments[0].windows[42].adr8.lamda -5396,175,main.pedersen.segments[0].windows[43].in[0] -5397,176,main.pedersen.segments[0].windows[43].in[1] -5398,177,main.pedersen.segments[0].windows[43].in[2] -5399,178,main.pedersen.segments[0].windows[43].in[3] -5400,2356,main.pedersen.segments[0].windows[43].base[0] -5401,2357,main.pedersen.segments[0].windows[43].base[1] -5402,2358,main.pedersen.segments[0].windows[43].out[0] -5403,2359,main.pedersen.segments[0].windows[43].out[1] -5404,2360,main.pedersen.segments[0].windows[43].out8[0] -5405,2361,main.pedersen.segments[0].windows[43].out8[1] -5406,2356,main.pedersen.segments[0].windows[43].mux.c[0][0] -5407,2362,main.pedersen.segments[0].windows[43].mux.c[0][1] -5408,2363,main.pedersen.segments[0].windows[43].mux.c[0][2] -5409,2364,main.pedersen.segments[0].windows[43].mux.c[0][3] -5410,2365,main.pedersen.segments[0].windows[43].mux.c[0][4] -5411,2366,main.pedersen.segments[0].windows[43].mux.c[0][5] -5412,2367,main.pedersen.segments[0].windows[43].mux.c[0][6] -5413,2360,main.pedersen.segments[0].windows[43].mux.c[0][7] -5414,2357,main.pedersen.segments[0].windows[43].mux.c[1][0] -5415,2368,main.pedersen.segments[0].windows[43].mux.c[1][1] -5416,2369,main.pedersen.segments[0].windows[43].mux.c[1][2] -5417,2370,main.pedersen.segments[0].windows[43].mux.c[1][3] -5418,2371,main.pedersen.segments[0].windows[43].mux.c[1][4] -5419,2372,main.pedersen.segments[0].windows[43].mux.c[1][5] -5420,2373,main.pedersen.segments[0].windows[43].mux.c[1][6] -5421,2361,main.pedersen.segments[0].windows[43].mux.c[1][7] -5422,175,main.pedersen.segments[0].windows[43].mux.s[0] -5423,176,main.pedersen.segments[0].windows[43].mux.s[1] -5424,177,main.pedersen.segments[0].windows[43].mux.s[2] -5425,2358,main.pedersen.segments[0].windows[43].mux.out[0] -5426,2374,main.pedersen.segments[0].windows[43].mux.out[1] -5427,2375,main.pedersen.segments[0].windows[43].mux.a210[0] -5428,2376,main.pedersen.segments[0].windows[43].mux.a210[1] -5429,2377,main.pedersen.segments[0].windows[43].mux.a21[0] -5430,2378,main.pedersen.segments[0].windows[43].mux.a21[1] -5431,2379,main.pedersen.segments[0].windows[43].mux.a20[0] -5432,2380,main.pedersen.segments[0].windows[43].mux.a20[1] -5433,3469,main.pedersen.segments[0].windows[43].mux.a2[0] -5434,3470,main.pedersen.segments[0].windows[43].mux.a2[1] -5435,2381,main.pedersen.segments[0].windows[43].mux.a10[0] -5436,2382,main.pedersen.segments[0].windows[43].mux.a10[1] -5437,2383,main.pedersen.segments[0].windows[43].mux.a1[0] -5438,2384,main.pedersen.segments[0].windows[43].mux.a1[1] -5439,2385,main.pedersen.segments[0].windows[43].mux.a0[0] -5440,2386,main.pedersen.segments[0].windows[43].mux.a0[1] -5441,2356,main.pedersen.segments[0].windows[43].mux.a[0] -5442,2357,main.pedersen.segments[0].windows[43].mux.a[1] -5443,2387,main.pedersen.segments[0].windows[43].mux.s10 -5444,2356,main.pedersen.segments[0].windows[43].dbl2.in[0] -5445,2357,main.pedersen.segments[0].windows[43].dbl2.in[1] -5446,2362,main.pedersen.segments[0].windows[43].dbl2.out[0] -5447,2368,main.pedersen.segments[0].windows[43].dbl2.out[1] -5448,2388,main.pedersen.segments[0].windows[43].dbl2.lamda -5449,2389,main.pedersen.segments[0].windows[43].dbl2.x1_2 -5450,2356,main.pedersen.segments[0].windows[43].adr3.in1[0] -5451,2357,main.pedersen.segments[0].windows[43].adr3.in1[1] -5452,2362,main.pedersen.segments[0].windows[43].adr3.in2[0] -5453,2368,main.pedersen.segments[0].windows[43].adr3.in2[1] -5454,2363,main.pedersen.segments[0].windows[43].adr3.out[0] -5455,2369,main.pedersen.segments[0].windows[43].adr3.out[1] -5456,2390,main.pedersen.segments[0].windows[43].adr3.lamda -5457,2356,main.pedersen.segments[0].windows[43].adr4.in1[0] -5458,2357,main.pedersen.segments[0].windows[43].adr4.in1[1] -5459,2363,main.pedersen.segments[0].windows[43].adr4.in2[0] -5460,2369,main.pedersen.segments[0].windows[43].adr4.in2[1] -5461,2364,main.pedersen.segments[0].windows[43].adr4.out[0] -5462,2370,main.pedersen.segments[0].windows[43].adr4.out[1] -5463,2391,main.pedersen.segments[0].windows[43].adr4.lamda -5464,2356,main.pedersen.segments[0].windows[43].adr5.in1[0] -5465,2357,main.pedersen.segments[0].windows[43].adr5.in1[1] -5466,2364,main.pedersen.segments[0].windows[43].adr5.in2[0] -5467,2370,main.pedersen.segments[0].windows[43].adr5.in2[1] -5468,2365,main.pedersen.segments[0].windows[43].adr5.out[0] -5469,2371,main.pedersen.segments[0].windows[43].adr5.out[1] -5470,2392,main.pedersen.segments[0].windows[43].adr5.lamda -5471,2356,main.pedersen.segments[0].windows[43].adr6.in1[0] -5472,2357,main.pedersen.segments[0].windows[43].adr6.in1[1] -5473,2365,main.pedersen.segments[0].windows[43].adr6.in2[0] -5474,2371,main.pedersen.segments[0].windows[43].adr6.in2[1] -5475,2366,main.pedersen.segments[0].windows[43].adr6.out[0] -5476,2372,main.pedersen.segments[0].windows[43].adr6.out[1] -5477,2393,main.pedersen.segments[0].windows[43].adr6.lamda -5478,2356,main.pedersen.segments[0].windows[43].adr7.in1[0] -5479,2357,main.pedersen.segments[0].windows[43].adr7.in1[1] -5480,2366,main.pedersen.segments[0].windows[43].adr7.in2[0] -5481,2372,main.pedersen.segments[0].windows[43].adr7.in2[1] -5482,2367,main.pedersen.segments[0].windows[43].adr7.out[0] -5483,2373,main.pedersen.segments[0].windows[43].adr7.out[1] -5484,2394,main.pedersen.segments[0].windows[43].adr7.lamda -5485,2356,main.pedersen.segments[0].windows[43].adr8.in1[0] -5486,2357,main.pedersen.segments[0].windows[43].adr8.in1[1] -5487,2367,main.pedersen.segments[0].windows[43].adr8.in2[0] -5488,2373,main.pedersen.segments[0].windows[43].adr8.in2[1] -5489,2360,main.pedersen.segments[0].windows[43].adr8.out[0] -5490,2361,main.pedersen.segments[0].windows[43].adr8.out[1] -5491,2395,main.pedersen.segments[0].windows[43].adr8.lamda -5511,179,main.pedersen.segments[0].windows[44].in[0] -5512,180,main.pedersen.segments[0].windows[44].in[1] -5513,181,main.pedersen.segments[0].windows[44].in[2] -5514,182,main.pedersen.segments[0].windows[44].in[3] -5515,2405,main.pedersen.segments[0].windows[44].base[0] -5516,2406,main.pedersen.segments[0].windows[44].base[1] -5517,2407,main.pedersen.segments[0].windows[44].out[0] -5518,2408,main.pedersen.segments[0].windows[44].out[1] -5519,2409,main.pedersen.segments[0].windows[44].out8[0] -5520,2410,main.pedersen.segments[0].windows[44].out8[1] -5521,2405,main.pedersen.segments[0].windows[44].mux.c[0][0] -5522,2411,main.pedersen.segments[0].windows[44].mux.c[0][1] -5523,2412,main.pedersen.segments[0].windows[44].mux.c[0][2] -5524,2413,main.pedersen.segments[0].windows[44].mux.c[0][3] -5525,2414,main.pedersen.segments[0].windows[44].mux.c[0][4] -5526,2415,main.pedersen.segments[0].windows[44].mux.c[0][5] -5527,2416,main.pedersen.segments[0].windows[44].mux.c[0][6] -5528,2409,main.pedersen.segments[0].windows[44].mux.c[0][7] -5529,2406,main.pedersen.segments[0].windows[44].mux.c[1][0] -5530,2417,main.pedersen.segments[0].windows[44].mux.c[1][1] -5531,2418,main.pedersen.segments[0].windows[44].mux.c[1][2] -5532,2419,main.pedersen.segments[0].windows[44].mux.c[1][3] -5533,2420,main.pedersen.segments[0].windows[44].mux.c[1][4] -5534,2421,main.pedersen.segments[0].windows[44].mux.c[1][5] -5535,2422,main.pedersen.segments[0].windows[44].mux.c[1][6] -5536,2410,main.pedersen.segments[0].windows[44].mux.c[1][7] -5537,179,main.pedersen.segments[0].windows[44].mux.s[0] -5538,180,main.pedersen.segments[0].windows[44].mux.s[1] -5539,181,main.pedersen.segments[0].windows[44].mux.s[2] -5540,2407,main.pedersen.segments[0].windows[44].mux.out[0] -5541,2423,main.pedersen.segments[0].windows[44].mux.out[1] -5542,2424,main.pedersen.segments[0].windows[44].mux.a210[0] -5543,2425,main.pedersen.segments[0].windows[44].mux.a210[1] -5544,2426,main.pedersen.segments[0].windows[44].mux.a21[0] -5545,2427,main.pedersen.segments[0].windows[44].mux.a21[1] -5546,2428,main.pedersen.segments[0].windows[44].mux.a20[0] -5547,2429,main.pedersen.segments[0].windows[44].mux.a20[1] -5548,3471,main.pedersen.segments[0].windows[44].mux.a2[0] -5549,3472,main.pedersen.segments[0].windows[44].mux.a2[1] -5550,2430,main.pedersen.segments[0].windows[44].mux.a10[0] -5551,2431,main.pedersen.segments[0].windows[44].mux.a10[1] -5552,2432,main.pedersen.segments[0].windows[44].mux.a1[0] -5553,2433,main.pedersen.segments[0].windows[44].mux.a1[1] -5554,2434,main.pedersen.segments[0].windows[44].mux.a0[0] -5555,2435,main.pedersen.segments[0].windows[44].mux.a0[1] -5556,2405,main.pedersen.segments[0].windows[44].mux.a[0] -5557,2406,main.pedersen.segments[0].windows[44].mux.a[1] -5558,2436,main.pedersen.segments[0].windows[44].mux.s10 -5559,2405,main.pedersen.segments[0].windows[44].dbl2.in[0] -5560,2406,main.pedersen.segments[0].windows[44].dbl2.in[1] -5561,2411,main.pedersen.segments[0].windows[44].dbl2.out[0] -5562,2417,main.pedersen.segments[0].windows[44].dbl2.out[1] -5563,2437,main.pedersen.segments[0].windows[44].dbl2.lamda -5564,2438,main.pedersen.segments[0].windows[44].dbl2.x1_2 -5565,2405,main.pedersen.segments[0].windows[44].adr3.in1[0] -5566,2406,main.pedersen.segments[0].windows[44].adr3.in1[1] -5567,2411,main.pedersen.segments[0].windows[44].adr3.in2[0] -5568,2417,main.pedersen.segments[0].windows[44].adr3.in2[1] -5569,2412,main.pedersen.segments[0].windows[44].adr3.out[0] -5570,2418,main.pedersen.segments[0].windows[44].adr3.out[1] -5571,2439,main.pedersen.segments[0].windows[44].adr3.lamda -5572,2405,main.pedersen.segments[0].windows[44].adr4.in1[0] -5573,2406,main.pedersen.segments[0].windows[44].adr4.in1[1] -5574,2412,main.pedersen.segments[0].windows[44].adr4.in2[0] -5575,2418,main.pedersen.segments[0].windows[44].adr4.in2[1] -5576,2413,main.pedersen.segments[0].windows[44].adr4.out[0] -5577,2419,main.pedersen.segments[0].windows[44].adr4.out[1] -5578,2440,main.pedersen.segments[0].windows[44].adr4.lamda -5579,2405,main.pedersen.segments[0].windows[44].adr5.in1[0] -5580,2406,main.pedersen.segments[0].windows[44].adr5.in1[1] -5581,2413,main.pedersen.segments[0].windows[44].adr5.in2[0] -5582,2419,main.pedersen.segments[0].windows[44].adr5.in2[1] -5583,2414,main.pedersen.segments[0].windows[44].adr5.out[0] -5584,2420,main.pedersen.segments[0].windows[44].adr5.out[1] -5585,2441,main.pedersen.segments[0].windows[44].adr5.lamda -5586,2405,main.pedersen.segments[0].windows[44].adr6.in1[0] -5587,2406,main.pedersen.segments[0].windows[44].adr6.in1[1] -5588,2414,main.pedersen.segments[0].windows[44].adr6.in2[0] -5589,2420,main.pedersen.segments[0].windows[44].adr6.in2[1] -5590,2415,main.pedersen.segments[0].windows[44].adr6.out[0] -5591,2421,main.pedersen.segments[0].windows[44].adr6.out[1] -5592,2442,main.pedersen.segments[0].windows[44].adr6.lamda -5593,2405,main.pedersen.segments[0].windows[44].adr7.in1[0] -5594,2406,main.pedersen.segments[0].windows[44].adr7.in1[1] -5595,2415,main.pedersen.segments[0].windows[44].adr7.in2[0] -5596,2421,main.pedersen.segments[0].windows[44].adr7.in2[1] -5597,2416,main.pedersen.segments[0].windows[44].adr7.out[0] -5598,2422,main.pedersen.segments[0].windows[44].adr7.out[1] -5599,2443,main.pedersen.segments[0].windows[44].adr7.lamda -5600,2405,main.pedersen.segments[0].windows[44].adr8.in1[0] -5601,2406,main.pedersen.segments[0].windows[44].adr8.in1[1] -5602,2416,main.pedersen.segments[0].windows[44].adr8.in2[0] -5603,2422,main.pedersen.segments[0].windows[44].adr8.in2[1] -5604,2409,main.pedersen.segments[0].windows[44].adr8.out[0] -5605,2410,main.pedersen.segments[0].windows[44].adr8.out[1] -5606,2444,main.pedersen.segments[0].windows[44].adr8.lamda -5626,183,main.pedersen.segments[0].windows[45].in[0] -5627,184,main.pedersen.segments[0].windows[45].in[1] -5628,185,main.pedersen.segments[0].windows[45].in[2] -5629,186,main.pedersen.segments[0].windows[45].in[3] -5630,2454,main.pedersen.segments[0].windows[45].base[0] -5631,2455,main.pedersen.segments[0].windows[45].base[1] -5632,2456,main.pedersen.segments[0].windows[45].out[0] -5633,2457,main.pedersen.segments[0].windows[45].out[1] -5634,2458,main.pedersen.segments[0].windows[45].out8[0] -5635,2459,main.pedersen.segments[0].windows[45].out8[1] -5636,2454,main.pedersen.segments[0].windows[45].mux.c[0][0] -5637,2460,main.pedersen.segments[0].windows[45].mux.c[0][1] -5638,2461,main.pedersen.segments[0].windows[45].mux.c[0][2] -5639,2462,main.pedersen.segments[0].windows[45].mux.c[0][3] -5640,2463,main.pedersen.segments[0].windows[45].mux.c[0][4] -5641,2464,main.pedersen.segments[0].windows[45].mux.c[0][5] -5642,2465,main.pedersen.segments[0].windows[45].mux.c[0][6] -5643,2458,main.pedersen.segments[0].windows[45].mux.c[0][7] -5644,2455,main.pedersen.segments[0].windows[45].mux.c[1][0] -5645,2466,main.pedersen.segments[0].windows[45].mux.c[1][1] -5646,2467,main.pedersen.segments[0].windows[45].mux.c[1][2] -5647,2468,main.pedersen.segments[0].windows[45].mux.c[1][3] -5648,2469,main.pedersen.segments[0].windows[45].mux.c[1][4] -5649,2470,main.pedersen.segments[0].windows[45].mux.c[1][5] -5650,2471,main.pedersen.segments[0].windows[45].mux.c[1][6] -5651,2459,main.pedersen.segments[0].windows[45].mux.c[1][7] -5652,183,main.pedersen.segments[0].windows[45].mux.s[0] -5653,184,main.pedersen.segments[0].windows[45].mux.s[1] -5654,185,main.pedersen.segments[0].windows[45].mux.s[2] -5655,2456,main.pedersen.segments[0].windows[45].mux.out[0] -5656,2472,main.pedersen.segments[0].windows[45].mux.out[1] -5657,2473,main.pedersen.segments[0].windows[45].mux.a210[0] -5658,2474,main.pedersen.segments[0].windows[45].mux.a210[1] -5659,2475,main.pedersen.segments[0].windows[45].mux.a21[0] -5660,2476,main.pedersen.segments[0].windows[45].mux.a21[1] -5661,2477,main.pedersen.segments[0].windows[45].mux.a20[0] -5662,2478,main.pedersen.segments[0].windows[45].mux.a20[1] -5663,3473,main.pedersen.segments[0].windows[45].mux.a2[0] -5664,3474,main.pedersen.segments[0].windows[45].mux.a2[1] -5665,2479,main.pedersen.segments[0].windows[45].mux.a10[0] -5666,2480,main.pedersen.segments[0].windows[45].mux.a10[1] -5667,2481,main.pedersen.segments[0].windows[45].mux.a1[0] -5668,2482,main.pedersen.segments[0].windows[45].mux.a1[1] -5669,2483,main.pedersen.segments[0].windows[45].mux.a0[0] -5670,2484,main.pedersen.segments[0].windows[45].mux.a0[1] -5671,2454,main.pedersen.segments[0].windows[45].mux.a[0] -5672,2455,main.pedersen.segments[0].windows[45].mux.a[1] -5673,2485,main.pedersen.segments[0].windows[45].mux.s10 -5674,2454,main.pedersen.segments[0].windows[45].dbl2.in[0] -5675,2455,main.pedersen.segments[0].windows[45].dbl2.in[1] -5676,2460,main.pedersen.segments[0].windows[45].dbl2.out[0] -5677,2466,main.pedersen.segments[0].windows[45].dbl2.out[1] -5678,2486,main.pedersen.segments[0].windows[45].dbl2.lamda -5679,2487,main.pedersen.segments[0].windows[45].dbl2.x1_2 -5680,2454,main.pedersen.segments[0].windows[45].adr3.in1[0] -5681,2455,main.pedersen.segments[0].windows[45].adr3.in1[1] -5682,2460,main.pedersen.segments[0].windows[45].adr3.in2[0] -5683,2466,main.pedersen.segments[0].windows[45].adr3.in2[1] -5684,2461,main.pedersen.segments[0].windows[45].adr3.out[0] -5685,2467,main.pedersen.segments[0].windows[45].adr3.out[1] -5686,2488,main.pedersen.segments[0].windows[45].adr3.lamda -5687,2454,main.pedersen.segments[0].windows[45].adr4.in1[0] -5688,2455,main.pedersen.segments[0].windows[45].adr4.in1[1] -5689,2461,main.pedersen.segments[0].windows[45].adr4.in2[0] -5690,2467,main.pedersen.segments[0].windows[45].adr4.in2[1] -5691,2462,main.pedersen.segments[0].windows[45].adr4.out[0] -5692,2468,main.pedersen.segments[0].windows[45].adr4.out[1] -5693,2489,main.pedersen.segments[0].windows[45].adr4.lamda -5694,2454,main.pedersen.segments[0].windows[45].adr5.in1[0] -5695,2455,main.pedersen.segments[0].windows[45].adr5.in1[1] -5696,2462,main.pedersen.segments[0].windows[45].adr5.in2[0] -5697,2468,main.pedersen.segments[0].windows[45].adr5.in2[1] -5698,2463,main.pedersen.segments[0].windows[45].adr5.out[0] -5699,2469,main.pedersen.segments[0].windows[45].adr5.out[1] -5700,2490,main.pedersen.segments[0].windows[45].adr5.lamda -5701,2454,main.pedersen.segments[0].windows[45].adr6.in1[0] -5702,2455,main.pedersen.segments[0].windows[45].adr6.in1[1] -5703,2463,main.pedersen.segments[0].windows[45].adr6.in2[0] -5704,2469,main.pedersen.segments[0].windows[45].adr6.in2[1] -5705,2464,main.pedersen.segments[0].windows[45].adr6.out[0] -5706,2470,main.pedersen.segments[0].windows[45].adr6.out[1] -5707,2491,main.pedersen.segments[0].windows[45].adr6.lamda -5708,2454,main.pedersen.segments[0].windows[45].adr7.in1[0] -5709,2455,main.pedersen.segments[0].windows[45].adr7.in1[1] -5710,2464,main.pedersen.segments[0].windows[45].adr7.in2[0] -5711,2470,main.pedersen.segments[0].windows[45].adr7.in2[1] -5712,2465,main.pedersen.segments[0].windows[45].adr7.out[0] -5713,2471,main.pedersen.segments[0].windows[45].adr7.out[1] -5714,2492,main.pedersen.segments[0].windows[45].adr7.lamda -5715,2454,main.pedersen.segments[0].windows[45].adr8.in1[0] -5716,2455,main.pedersen.segments[0].windows[45].adr8.in1[1] -5717,2465,main.pedersen.segments[0].windows[45].adr8.in2[0] -5718,2471,main.pedersen.segments[0].windows[45].adr8.in2[1] -5719,2458,main.pedersen.segments[0].windows[45].adr8.out[0] -5720,2459,main.pedersen.segments[0].windows[45].adr8.out[1] -5721,2493,main.pedersen.segments[0].windows[45].adr8.lamda -5741,187,main.pedersen.segments[0].windows[46].in[0] -5742,188,main.pedersen.segments[0].windows[46].in[1] -5743,189,main.pedersen.segments[0].windows[46].in[2] -5744,190,main.pedersen.segments[0].windows[46].in[3] -5745,2503,main.pedersen.segments[0].windows[46].base[0] -5746,2504,main.pedersen.segments[0].windows[46].base[1] -5747,2505,main.pedersen.segments[0].windows[46].out[0] -5748,2506,main.pedersen.segments[0].windows[46].out[1] -5749,2507,main.pedersen.segments[0].windows[46].out8[0] -5750,2508,main.pedersen.segments[0].windows[46].out8[1] -5751,2503,main.pedersen.segments[0].windows[46].mux.c[0][0] -5752,2509,main.pedersen.segments[0].windows[46].mux.c[0][1] -5753,2510,main.pedersen.segments[0].windows[46].mux.c[0][2] -5754,2511,main.pedersen.segments[0].windows[46].mux.c[0][3] -5755,2512,main.pedersen.segments[0].windows[46].mux.c[0][4] -5756,2513,main.pedersen.segments[0].windows[46].mux.c[0][5] -5757,2514,main.pedersen.segments[0].windows[46].mux.c[0][6] -5758,2507,main.pedersen.segments[0].windows[46].mux.c[0][7] -5759,2504,main.pedersen.segments[0].windows[46].mux.c[1][0] -5760,2515,main.pedersen.segments[0].windows[46].mux.c[1][1] -5761,2516,main.pedersen.segments[0].windows[46].mux.c[1][2] -5762,2517,main.pedersen.segments[0].windows[46].mux.c[1][3] -5763,2518,main.pedersen.segments[0].windows[46].mux.c[1][4] -5764,2519,main.pedersen.segments[0].windows[46].mux.c[1][5] -5765,2520,main.pedersen.segments[0].windows[46].mux.c[1][6] -5766,2508,main.pedersen.segments[0].windows[46].mux.c[1][7] -5767,187,main.pedersen.segments[0].windows[46].mux.s[0] -5768,188,main.pedersen.segments[0].windows[46].mux.s[1] -5769,189,main.pedersen.segments[0].windows[46].mux.s[2] -5770,2505,main.pedersen.segments[0].windows[46].mux.out[0] -5771,2521,main.pedersen.segments[0].windows[46].mux.out[1] -5772,2522,main.pedersen.segments[0].windows[46].mux.a210[0] -5773,2523,main.pedersen.segments[0].windows[46].mux.a210[1] -5774,2524,main.pedersen.segments[0].windows[46].mux.a21[0] -5775,2525,main.pedersen.segments[0].windows[46].mux.a21[1] -5776,2526,main.pedersen.segments[0].windows[46].mux.a20[0] -5777,2527,main.pedersen.segments[0].windows[46].mux.a20[1] -5778,3475,main.pedersen.segments[0].windows[46].mux.a2[0] -5779,3476,main.pedersen.segments[0].windows[46].mux.a2[1] -5780,2528,main.pedersen.segments[0].windows[46].mux.a10[0] -5781,2529,main.pedersen.segments[0].windows[46].mux.a10[1] -5782,2530,main.pedersen.segments[0].windows[46].mux.a1[0] -5783,2531,main.pedersen.segments[0].windows[46].mux.a1[1] -5784,2532,main.pedersen.segments[0].windows[46].mux.a0[0] -5785,2533,main.pedersen.segments[0].windows[46].mux.a0[1] -5786,2503,main.pedersen.segments[0].windows[46].mux.a[0] -5787,2504,main.pedersen.segments[0].windows[46].mux.a[1] -5788,2534,main.pedersen.segments[0].windows[46].mux.s10 -5789,2503,main.pedersen.segments[0].windows[46].dbl2.in[0] -5790,2504,main.pedersen.segments[0].windows[46].dbl2.in[1] -5791,2509,main.pedersen.segments[0].windows[46].dbl2.out[0] -5792,2515,main.pedersen.segments[0].windows[46].dbl2.out[1] -5793,2535,main.pedersen.segments[0].windows[46].dbl2.lamda -5794,2536,main.pedersen.segments[0].windows[46].dbl2.x1_2 -5795,2503,main.pedersen.segments[0].windows[46].adr3.in1[0] -5796,2504,main.pedersen.segments[0].windows[46].adr3.in1[1] -5797,2509,main.pedersen.segments[0].windows[46].adr3.in2[0] -5798,2515,main.pedersen.segments[0].windows[46].adr3.in2[1] -5799,2510,main.pedersen.segments[0].windows[46].adr3.out[0] -5800,2516,main.pedersen.segments[0].windows[46].adr3.out[1] -5801,2537,main.pedersen.segments[0].windows[46].adr3.lamda -5802,2503,main.pedersen.segments[0].windows[46].adr4.in1[0] -5803,2504,main.pedersen.segments[0].windows[46].adr4.in1[1] -5804,2510,main.pedersen.segments[0].windows[46].adr4.in2[0] -5805,2516,main.pedersen.segments[0].windows[46].adr4.in2[1] -5806,2511,main.pedersen.segments[0].windows[46].adr4.out[0] -5807,2517,main.pedersen.segments[0].windows[46].adr4.out[1] -5808,2538,main.pedersen.segments[0].windows[46].adr4.lamda -5809,2503,main.pedersen.segments[0].windows[46].adr5.in1[0] -5810,2504,main.pedersen.segments[0].windows[46].adr5.in1[1] -5811,2511,main.pedersen.segments[0].windows[46].adr5.in2[0] -5812,2517,main.pedersen.segments[0].windows[46].adr5.in2[1] -5813,2512,main.pedersen.segments[0].windows[46].adr5.out[0] -5814,2518,main.pedersen.segments[0].windows[46].adr5.out[1] -5815,2539,main.pedersen.segments[0].windows[46].adr5.lamda -5816,2503,main.pedersen.segments[0].windows[46].adr6.in1[0] -5817,2504,main.pedersen.segments[0].windows[46].adr6.in1[1] -5818,2512,main.pedersen.segments[0].windows[46].adr6.in2[0] -5819,2518,main.pedersen.segments[0].windows[46].adr6.in2[1] -5820,2513,main.pedersen.segments[0].windows[46].adr6.out[0] -5821,2519,main.pedersen.segments[0].windows[46].adr6.out[1] -5822,2540,main.pedersen.segments[0].windows[46].adr6.lamda -5823,2503,main.pedersen.segments[0].windows[46].adr7.in1[0] -5824,2504,main.pedersen.segments[0].windows[46].adr7.in1[1] -5825,2513,main.pedersen.segments[0].windows[46].adr7.in2[0] -5826,2519,main.pedersen.segments[0].windows[46].adr7.in2[1] -5827,2514,main.pedersen.segments[0].windows[46].adr7.out[0] -5828,2520,main.pedersen.segments[0].windows[46].adr7.out[1] -5829,2541,main.pedersen.segments[0].windows[46].adr7.lamda -5830,2503,main.pedersen.segments[0].windows[46].adr8.in1[0] -5831,2504,main.pedersen.segments[0].windows[46].adr8.in1[1] -5832,2514,main.pedersen.segments[0].windows[46].adr8.in2[0] -5833,2520,main.pedersen.segments[0].windows[46].adr8.in2[1] -5834,2507,main.pedersen.segments[0].windows[46].adr8.out[0] -5835,2508,main.pedersen.segments[0].windows[46].adr8.out[1] -5836,2542,main.pedersen.segments[0].windows[46].adr8.lamda -5856,191,main.pedersen.segments[0].windows[47].in[0] -5857,192,main.pedersen.segments[0].windows[47].in[1] -5858,193,main.pedersen.segments[0].windows[47].in[2] -5859,194,main.pedersen.segments[0].windows[47].in[3] -5860,2552,main.pedersen.segments[0].windows[47].base[0] -5861,2553,main.pedersen.segments[0].windows[47].base[1] -5862,2554,main.pedersen.segments[0].windows[47].out[0] -5863,2555,main.pedersen.segments[0].windows[47].out[1] -5864,2556,main.pedersen.segments[0].windows[47].out8[0] -5865,2557,main.pedersen.segments[0].windows[47].out8[1] -5866,2552,main.pedersen.segments[0].windows[47].mux.c[0][0] -5867,2558,main.pedersen.segments[0].windows[47].mux.c[0][1] -5868,2559,main.pedersen.segments[0].windows[47].mux.c[0][2] -5869,2560,main.pedersen.segments[0].windows[47].mux.c[0][3] -5870,2561,main.pedersen.segments[0].windows[47].mux.c[0][4] -5871,2562,main.pedersen.segments[0].windows[47].mux.c[0][5] -5872,2563,main.pedersen.segments[0].windows[47].mux.c[0][6] -5873,2556,main.pedersen.segments[0].windows[47].mux.c[0][7] -5874,2553,main.pedersen.segments[0].windows[47].mux.c[1][0] -5875,2564,main.pedersen.segments[0].windows[47].mux.c[1][1] -5876,2565,main.pedersen.segments[0].windows[47].mux.c[1][2] -5877,2566,main.pedersen.segments[0].windows[47].mux.c[1][3] -5878,2567,main.pedersen.segments[0].windows[47].mux.c[1][4] -5879,2568,main.pedersen.segments[0].windows[47].mux.c[1][5] -5880,2569,main.pedersen.segments[0].windows[47].mux.c[1][6] -5881,2557,main.pedersen.segments[0].windows[47].mux.c[1][7] -5882,191,main.pedersen.segments[0].windows[47].mux.s[0] -5883,192,main.pedersen.segments[0].windows[47].mux.s[1] -5884,193,main.pedersen.segments[0].windows[47].mux.s[2] -5885,2554,main.pedersen.segments[0].windows[47].mux.out[0] -5886,2570,main.pedersen.segments[0].windows[47].mux.out[1] -5887,2571,main.pedersen.segments[0].windows[47].mux.a210[0] -5888,2572,main.pedersen.segments[0].windows[47].mux.a210[1] -5889,2573,main.pedersen.segments[0].windows[47].mux.a21[0] -5890,2574,main.pedersen.segments[0].windows[47].mux.a21[1] -5891,2575,main.pedersen.segments[0].windows[47].mux.a20[0] -5892,2576,main.pedersen.segments[0].windows[47].mux.a20[1] -5893,3477,main.pedersen.segments[0].windows[47].mux.a2[0] -5894,3478,main.pedersen.segments[0].windows[47].mux.a2[1] -5895,2577,main.pedersen.segments[0].windows[47].mux.a10[0] -5896,2578,main.pedersen.segments[0].windows[47].mux.a10[1] -5897,2579,main.pedersen.segments[0].windows[47].mux.a1[0] -5898,2580,main.pedersen.segments[0].windows[47].mux.a1[1] -5899,2581,main.pedersen.segments[0].windows[47].mux.a0[0] -5900,2582,main.pedersen.segments[0].windows[47].mux.a0[1] -5901,2552,main.pedersen.segments[0].windows[47].mux.a[0] -5902,2553,main.pedersen.segments[0].windows[47].mux.a[1] -5903,2583,main.pedersen.segments[0].windows[47].mux.s10 -5904,2552,main.pedersen.segments[0].windows[47].dbl2.in[0] -5905,2553,main.pedersen.segments[0].windows[47].dbl2.in[1] -5906,2558,main.pedersen.segments[0].windows[47].dbl2.out[0] -5907,2564,main.pedersen.segments[0].windows[47].dbl2.out[1] -5908,2584,main.pedersen.segments[0].windows[47].dbl2.lamda -5909,2585,main.pedersen.segments[0].windows[47].dbl2.x1_2 -5910,2552,main.pedersen.segments[0].windows[47].adr3.in1[0] -5911,2553,main.pedersen.segments[0].windows[47].adr3.in1[1] -5912,2558,main.pedersen.segments[0].windows[47].adr3.in2[0] -5913,2564,main.pedersen.segments[0].windows[47].adr3.in2[1] -5914,2559,main.pedersen.segments[0].windows[47].adr3.out[0] -5915,2565,main.pedersen.segments[0].windows[47].adr3.out[1] -5916,2586,main.pedersen.segments[0].windows[47].adr3.lamda -5917,2552,main.pedersen.segments[0].windows[47].adr4.in1[0] -5918,2553,main.pedersen.segments[0].windows[47].adr4.in1[1] -5919,2559,main.pedersen.segments[0].windows[47].adr4.in2[0] -5920,2565,main.pedersen.segments[0].windows[47].adr4.in2[1] -5921,2560,main.pedersen.segments[0].windows[47].adr4.out[0] -5922,2566,main.pedersen.segments[0].windows[47].adr4.out[1] -5923,2587,main.pedersen.segments[0].windows[47].adr4.lamda -5924,2552,main.pedersen.segments[0].windows[47].adr5.in1[0] -5925,2553,main.pedersen.segments[0].windows[47].adr5.in1[1] -5926,2560,main.pedersen.segments[0].windows[47].adr5.in2[0] -5927,2566,main.pedersen.segments[0].windows[47].adr5.in2[1] -5928,2561,main.pedersen.segments[0].windows[47].adr5.out[0] -5929,2567,main.pedersen.segments[0].windows[47].adr5.out[1] -5930,2588,main.pedersen.segments[0].windows[47].adr5.lamda -5931,2552,main.pedersen.segments[0].windows[47].adr6.in1[0] -5932,2553,main.pedersen.segments[0].windows[47].adr6.in1[1] -5933,2561,main.pedersen.segments[0].windows[47].adr6.in2[0] -5934,2567,main.pedersen.segments[0].windows[47].adr6.in2[1] -5935,2562,main.pedersen.segments[0].windows[47].adr6.out[0] -5936,2568,main.pedersen.segments[0].windows[47].adr6.out[1] -5937,2589,main.pedersen.segments[0].windows[47].adr6.lamda -5938,2552,main.pedersen.segments[0].windows[47].adr7.in1[0] -5939,2553,main.pedersen.segments[0].windows[47].adr7.in1[1] -5940,2562,main.pedersen.segments[0].windows[47].adr7.in2[0] -5941,2568,main.pedersen.segments[0].windows[47].adr7.in2[1] -5942,2563,main.pedersen.segments[0].windows[47].adr7.out[0] -5943,2569,main.pedersen.segments[0].windows[47].adr7.out[1] -5944,2590,main.pedersen.segments[0].windows[47].adr7.lamda -5945,2552,main.pedersen.segments[0].windows[47].adr8.in1[0] -5946,2553,main.pedersen.segments[0].windows[47].adr8.in1[1] -5947,2563,main.pedersen.segments[0].windows[47].adr8.in2[0] -5948,2569,main.pedersen.segments[0].windows[47].adr8.in2[1] -5949,2556,main.pedersen.segments[0].windows[47].adr8.out[0] -5950,2557,main.pedersen.segments[0].windows[47].adr8.out[1] -5951,2591,main.pedersen.segments[0].windows[47].adr8.lamda -5971,195,main.pedersen.segments[0].windows[48].in[0] -5972,196,main.pedersen.segments[0].windows[48].in[1] -5973,197,main.pedersen.segments[0].windows[48].in[2] -5974,198,main.pedersen.segments[0].windows[48].in[3] -5975,2601,main.pedersen.segments[0].windows[48].base[0] -5976,2602,main.pedersen.segments[0].windows[48].base[1] -5977,2603,main.pedersen.segments[0].windows[48].out[0] -5978,2604,main.pedersen.segments[0].windows[48].out[1] -5979,2605,main.pedersen.segments[0].windows[48].out8[0] -5980,2606,main.pedersen.segments[0].windows[48].out8[1] -5981,2601,main.pedersen.segments[0].windows[48].mux.c[0][0] -5982,2607,main.pedersen.segments[0].windows[48].mux.c[0][1] -5983,2608,main.pedersen.segments[0].windows[48].mux.c[0][2] -5984,2609,main.pedersen.segments[0].windows[48].mux.c[0][3] -5985,2610,main.pedersen.segments[0].windows[48].mux.c[0][4] -5986,2611,main.pedersen.segments[0].windows[48].mux.c[0][5] -5987,2612,main.pedersen.segments[0].windows[48].mux.c[0][6] -5988,2605,main.pedersen.segments[0].windows[48].mux.c[0][7] -5989,2602,main.pedersen.segments[0].windows[48].mux.c[1][0] -5990,2613,main.pedersen.segments[0].windows[48].mux.c[1][1] -5991,2614,main.pedersen.segments[0].windows[48].mux.c[1][2] -5992,2615,main.pedersen.segments[0].windows[48].mux.c[1][3] -5993,2616,main.pedersen.segments[0].windows[48].mux.c[1][4] -5994,2617,main.pedersen.segments[0].windows[48].mux.c[1][5] -5995,2618,main.pedersen.segments[0].windows[48].mux.c[1][6] -5996,2606,main.pedersen.segments[0].windows[48].mux.c[1][7] -5997,195,main.pedersen.segments[0].windows[48].mux.s[0] -5998,196,main.pedersen.segments[0].windows[48].mux.s[1] -5999,197,main.pedersen.segments[0].windows[48].mux.s[2] -6000,2603,main.pedersen.segments[0].windows[48].mux.out[0] -6001,2619,main.pedersen.segments[0].windows[48].mux.out[1] -6002,2620,main.pedersen.segments[0].windows[48].mux.a210[0] -6003,2621,main.pedersen.segments[0].windows[48].mux.a210[1] -6004,2622,main.pedersen.segments[0].windows[48].mux.a21[0] -6005,2623,main.pedersen.segments[0].windows[48].mux.a21[1] -6006,2624,main.pedersen.segments[0].windows[48].mux.a20[0] -6007,2625,main.pedersen.segments[0].windows[48].mux.a20[1] -6008,3479,main.pedersen.segments[0].windows[48].mux.a2[0] -6009,3480,main.pedersen.segments[0].windows[48].mux.a2[1] -6010,2626,main.pedersen.segments[0].windows[48].mux.a10[0] -6011,2627,main.pedersen.segments[0].windows[48].mux.a10[1] -6012,2628,main.pedersen.segments[0].windows[48].mux.a1[0] -6013,2629,main.pedersen.segments[0].windows[48].mux.a1[1] -6014,2630,main.pedersen.segments[0].windows[48].mux.a0[0] -6015,2631,main.pedersen.segments[0].windows[48].mux.a0[1] -6016,2601,main.pedersen.segments[0].windows[48].mux.a[0] -6017,2602,main.pedersen.segments[0].windows[48].mux.a[1] -6018,2632,main.pedersen.segments[0].windows[48].mux.s10 -6019,2601,main.pedersen.segments[0].windows[48].dbl2.in[0] -6020,2602,main.pedersen.segments[0].windows[48].dbl2.in[1] -6021,2607,main.pedersen.segments[0].windows[48].dbl2.out[0] -6022,2613,main.pedersen.segments[0].windows[48].dbl2.out[1] -6023,2633,main.pedersen.segments[0].windows[48].dbl2.lamda -6024,2634,main.pedersen.segments[0].windows[48].dbl2.x1_2 -6025,2601,main.pedersen.segments[0].windows[48].adr3.in1[0] -6026,2602,main.pedersen.segments[0].windows[48].adr3.in1[1] -6027,2607,main.pedersen.segments[0].windows[48].adr3.in2[0] -6028,2613,main.pedersen.segments[0].windows[48].adr3.in2[1] -6029,2608,main.pedersen.segments[0].windows[48].adr3.out[0] -6030,2614,main.pedersen.segments[0].windows[48].adr3.out[1] -6031,2635,main.pedersen.segments[0].windows[48].adr3.lamda -6032,2601,main.pedersen.segments[0].windows[48].adr4.in1[0] -6033,2602,main.pedersen.segments[0].windows[48].adr4.in1[1] -6034,2608,main.pedersen.segments[0].windows[48].adr4.in2[0] -6035,2614,main.pedersen.segments[0].windows[48].adr4.in2[1] -6036,2609,main.pedersen.segments[0].windows[48].adr4.out[0] -6037,2615,main.pedersen.segments[0].windows[48].adr4.out[1] -6038,2636,main.pedersen.segments[0].windows[48].adr4.lamda -6039,2601,main.pedersen.segments[0].windows[48].adr5.in1[0] -6040,2602,main.pedersen.segments[0].windows[48].adr5.in1[1] -6041,2609,main.pedersen.segments[0].windows[48].adr5.in2[0] -6042,2615,main.pedersen.segments[0].windows[48].adr5.in2[1] -6043,2610,main.pedersen.segments[0].windows[48].adr5.out[0] -6044,2616,main.pedersen.segments[0].windows[48].adr5.out[1] -6045,2637,main.pedersen.segments[0].windows[48].adr5.lamda -6046,2601,main.pedersen.segments[0].windows[48].adr6.in1[0] -6047,2602,main.pedersen.segments[0].windows[48].adr6.in1[1] -6048,2610,main.pedersen.segments[0].windows[48].adr6.in2[0] -6049,2616,main.pedersen.segments[0].windows[48].adr6.in2[1] -6050,2611,main.pedersen.segments[0].windows[48].adr6.out[0] -6051,2617,main.pedersen.segments[0].windows[48].adr6.out[1] -6052,2638,main.pedersen.segments[0].windows[48].adr6.lamda -6053,2601,main.pedersen.segments[0].windows[48].adr7.in1[0] -6054,2602,main.pedersen.segments[0].windows[48].adr7.in1[1] -6055,2611,main.pedersen.segments[0].windows[48].adr7.in2[0] -6056,2617,main.pedersen.segments[0].windows[48].adr7.in2[1] -6057,2612,main.pedersen.segments[0].windows[48].adr7.out[0] -6058,2618,main.pedersen.segments[0].windows[48].adr7.out[1] -6059,2639,main.pedersen.segments[0].windows[48].adr7.lamda -6060,2601,main.pedersen.segments[0].windows[48].adr8.in1[0] -6061,2602,main.pedersen.segments[0].windows[48].adr8.in1[1] -6062,2612,main.pedersen.segments[0].windows[48].adr8.in2[0] -6063,2618,main.pedersen.segments[0].windows[48].adr8.in2[1] -6064,2605,main.pedersen.segments[0].windows[48].adr8.out[0] -6065,2606,main.pedersen.segments[0].windows[48].adr8.out[1] -6066,2640,main.pedersen.segments[0].windows[48].adr8.lamda -6086,199,main.pedersen.segments[0].windows[49].in[0] -6087,200,main.pedersen.segments[0].windows[49].in[1] -6088,201,main.pedersen.segments[0].windows[49].in[2] -6089,202,main.pedersen.segments[0].windows[49].in[3] -6090,2650,main.pedersen.segments[0].windows[49].base[0] -6091,2651,main.pedersen.segments[0].windows[49].base[1] -6092,2652,main.pedersen.segments[0].windows[49].out[0] -6093,2653,main.pedersen.segments[0].windows[49].out[1] -6094,2654,main.pedersen.segments[0].windows[49].out8[0] -6095,2655,main.pedersen.segments[0].windows[49].out8[1] -6096,2650,main.pedersen.segments[0].windows[49].mux.c[0][0] -6097,2656,main.pedersen.segments[0].windows[49].mux.c[0][1] -6098,2657,main.pedersen.segments[0].windows[49].mux.c[0][2] -6099,2658,main.pedersen.segments[0].windows[49].mux.c[0][3] -6100,2659,main.pedersen.segments[0].windows[49].mux.c[0][4] -6101,2660,main.pedersen.segments[0].windows[49].mux.c[0][5] -6102,2661,main.pedersen.segments[0].windows[49].mux.c[0][6] -6103,2654,main.pedersen.segments[0].windows[49].mux.c[0][7] -6104,2651,main.pedersen.segments[0].windows[49].mux.c[1][0] -6105,2662,main.pedersen.segments[0].windows[49].mux.c[1][1] -6106,2663,main.pedersen.segments[0].windows[49].mux.c[1][2] -6107,2664,main.pedersen.segments[0].windows[49].mux.c[1][3] -6108,2665,main.pedersen.segments[0].windows[49].mux.c[1][4] -6109,2666,main.pedersen.segments[0].windows[49].mux.c[1][5] -6110,2667,main.pedersen.segments[0].windows[49].mux.c[1][6] -6111,2655,main.pedersen.segments[0].windows[49].mux.c[1][7] -6112,199,main.pedersen.segments[0].windows[49].mux.s[0] -6113,200,main.pedersen.segments[0].windows[49].mux.s[1] -6114,201,main.pedersen.segments[0].windows[49].mux.s[2] -6115,2652,main.pedersen.segments[0].windows[49].mux.out[0] -6116,2668,main.pedersen.segments[0].windows[49].mux.out[1] -6117,2669,main.pedersen.segments[0].windows[49].mux.a210[0] -6118,2670,main.pedersen.segments[0].windows[49].mux.a210[1] -6119,2671,main.pedersen.segments[0].windows[49].mux.a21[0] -6120,2672,main.pedersen.segments[0].windows[49].mux.a21[1] -6121,2673,main.pedersen.segments[0].windows[49].mux.a20[0] -6122,2674,main.pedersen.segments[0].windows[49].mux.a20[1] -6123,3481,main.pedersen.segments[0].windows[49].mux.a2[0] -6124,3482,main.pedersen.segments[0].windows[49].mux.a2[1] -6125,2675,main.pedersen.segments[0].windows[49].mux.a10[0] -6126,2676,main.pedersen.segments[0].windows[49].mux.a10[1] -6127,2677,main.pedersen.segments[0].windows[49].mux.a1[0] -6128,2678,main.pedersen.segments[0].windows[49].mux.a1[1] -6129,2679,main.pedersen.segments[0].windows[49].mux.a0[0] -6130,2680,main.pedersen.segments[0].windows[49].mux.a0[1] -6131,2650,main.pedersen.segments[0].windows[49].mux.a[0] -6132,2651,main.pedersen.segments[0].windows[49].mux.a[1] -6133,2681,main.pedersen.segments[0].windows[49].mux.s10 -6134,2650,main.pedersen.segments[0].windows[49].dbl2.in[0] -6135,2651,main.pedersen.segments[0].windows[49].dbl2.in[1] -6136,2656,main.pedersen.segments[0].windows[49].dbl2.out[0] -6137,2662,main.pedersen.segments[0].windows[49].dbl2.out[1] -6138,2682,main.pedersen.segments[0].windows[49].dbl2.lamda -6139,2683,main.pedersen.segments[0].windows[49].dbl2.x1_2 -6140,2650,main.pedersen.segments[0].windows[49].adr3.in1[0] -6141,2651,main.pedersen.segments[0].windows[49].adr3.in1[1] -6142,2656,main.pedersen.segments[0].windows[49].adr3.in2[0] -6143,2662,main.pedersen.segments[0].windows[49].adr3.in2[1] -6144,2657,main.pedersen.segments[0].windows[49].adr3.out[0] -6145,2663,main.pedersen.segments[0].windows[49].adr3.out[1] -6146,2684,main.pedersen.segments[0].windows[49].adr3.lamda -6147,2650,main.pedersen.segments[0].windows[49].adr4.in1[0] -6148,2651,main.pedersen.segments[0].windows[49].adr4.in1[1] -6149,2657,main.pedersen.segments[0].windows[49].adr4.in2[0] -6150,2663,main.pedersen.segments[0].windows[49].adr4.in2[1] -6151,2658,main.pedersen.segments[0].windows[49].adr4.out[0] -6152,2664,main.pedersen.segments[0].windows[49].adr4.out[1] -6153,2685,main.pedersen.segments[0].windows[49].adr4.lamda -6154,2650,main.pedersen.segments[0].windows[49].adr5.in1[0] -6155,2651,main.pedersen.segments[0].windows[49].adr5.in1[1] -6156,2658,main.pedersen.segments[0].windows[49].adr5.in2[0] -6157,2664,main.pedersen.segments[0].windows[49].adr5.in2[1] -6158,2659,main.pedersen.segments[0].windows[49].adr5.out[0] -6159,2665,main.pedersen.segments[0].windows[49].adr5.out[1] -6160,2686,main.pedersen.segments[0].windows[49].adr5.lamda -6161,2650,main.pedersen.segments[0].windows[49].adr6.in1[0] -6162,2651,main.pedersen.segments[0].windows[49].adr6.in1[1] -6163,2659,main.pedersen.segments[0].windows[49].adr6.in2[0] -6164,2665,main.pedersen.segments[0].windows[49].adr6.in2[1] -6165,2660,main.pedersen.segments[0].windows[49].adr6.out[0] -6166,2666,main.pedersen.segments[0].windows[49].adr6.out[1] -6167,2687,main.pedersen.segments[0].windows[49].adr6.lamda -6168,2650,main.pedersen.segments[0].windows[49].adr7.in1[0] -6169,2651,main.pedersen.segments[0].windows[49].adr7.in1[1] -6170,2660,main.pedersen.segments[0].windows[49].adr7.in2[0] -6171,2666,main.pedersen.segments[0].windows[49].adr7.in2[1] -6172,2661,main.pedersen.segments[0].windows[49].adr7.out[0] -6173,2667,main.pedersen.segments[0].windows[49].adr7.out[1] -6174,2688,main.pedersen.segments[0].windows[49].adr7.lamda -6175,2650,main.pedersen.segments[0].windows[49].adr8.in1[0] -6176,2651,main.pedersen.segments[0].windows[49].adr8.in1[1] -6177,2661,main.pedersen.segments[0].windows[49].adr8.in2[0] -6178,2667,main.pedersen.segments[0].windows[49].adr8.in2[1] -6179,2654,main.pedersen.segments[0].windows[49].adr8.out[0] -6180,2655,main.pedersen.segments[0].windows[49].adr8.out[1] -6181,2689,main.pedersen.segments[0].windows[49].adr8.lamda -662,260,main.pedersen.segments[0].doublers1[0].in[0] -663,261,main.pedersen.segments[0].doublers1[0].in[1] -664,338,main.pedersen.segments[0].doublers1[0].out[0] -665,339,main.pedersen.segments[0].doublers1[0].out[1] -666,340,main.pedersen.segments[0].doublers1[0].lamda -667,341,main.pedersen.segments[0].doublers1[0].x1_2 -777,302,main.pedersen.segments[0].doublers1[1].in[0] -778,303,main.pedersen.segments[0].doublers1[1].in[1] -779,387,main.pedersen.segments[0].doublers1[1].out[0] -780,388,main.pedersen.segments[0].doublers1[1].out[1] -781,389,main.pedersen.segments[0].doublers1[1].lamda -782,390,main.pedersen.segments[0].doublers1[1].x1_2 -892,351,main.pedersen.segments[0].doublers1[2].in[0] -893,352,main.pedersen.segments[0].doublers1[2].in[1] -894,436,main.pedersen.segments[0].doublers1[2].out[0] -895,437,main.pedersen.segments[0].doublers1[2].out[1] -896,438,main.pedersen.segments[0].doublers1[2].lamda -897,439,main.pedersen.segments[0].doublers1[2].x1_2 -1007,400,main.pedersen.segments[0].doublers1[3].in[0] -1008,401,main.pedersen.segments[0].doublers1[3].in[1] -1009,485,main.pedersen.segments[0].doublers1[3].out[0] -1010,486,main.pedersen.segments[0].doublers1[3].out[1] -1011,487,main.pedersen.segments[0].doublers1[3].lamda -1012,488,main.pedersen.segments[0].doublers1[3].x1_2 -1122,449,main.pedersen.segments[0].doublers1[4].in[0] -1123,450,main.pedersen.segments[0].doublers1[4].in[1] -1124,534,main.pedersen.segments[0].doublers1[4].out[0] -1125,535,main.pedersen.segments[0].doublers1[4].out[1] -1126,536,main.pedersen.segments[0].doublers1[4].lamda -1127,537,main.pedersen.segments[0].doublers1[4].x1_2 -1237,498,main.pedersen.segments[0].doublers1[5].in[0] -1238,499,main.pedersen.segments[0].doublers1[5].in[1] -1239,583,main.pedersen.segments[0].doublers1[5].out[0] -1240,584,main.pedersen.segments[0].doublers1[5].out[1] -1241,585,main.pedersen.segments[0].doublers1[5].lamda -1242,586,main.pedersen.segments[0].doublers1[5].x1_2 -1352,547,main.pedersen.segments[0].doublers1[6].in[0] -1353,548,main.pedersen.segments[0].doublers1[6].in[1] -1354,632,main.pedersen.segments[0].doublers1[6].out[0] -1355,633,main.pedersen.segments[0].doublers1[6].out[1] -1356,634,main.pedersen.segments[0].doublers1[6].lamda -1357,635,main.pedersen.segments[0].doublers1[6].x1_2 -1467,596,main.pedersen.segments[0].doublers1[7].in[0] -1468,597,main.pedersen.segments[0].doublers1[7].in[1] -1469,681,main.pedersen.segments[0].doublers1[7].out[0] -1470,682,main.pedersen.segments[0].doublers1[7].out[1] -1471,683,main.pedersen.segments[0].doublers1[7].lamda -1472,684,main.pedersen.segments[0].doublers1[7].x1_2 -1582,645,main.pedersen.segments[0].doublers1[8].in[0] -1583,646,main.pedersen.segments[0].doublers1[8].in[1] -1584,730,main.pedersen.segments[0].doublers1[8].out[0] -1585,731,main.pedersen.segments[0].doublers1[8].out[1] -1586,732,main.pedersen.segments[0].doublers1[8].lamda -1587,733,main.pedersen.segments[0].doublers1[8].x1_2 -1697,694,main.pedersen.segments[0].doublers1[9].in[0] -1698,695,main.pedersen.segments[0].doublers1[9].in[1] -1699,779,main.pedersen.segments[0].doublers1[9].out[0] -1700,780,main.pedersen.segments[0].doublers1[9].out[1] -1701,781,main.pedersen.segments[0].doublers1[9].lamda -1702,782,main.pedersen.segments[0].doublers1[9].x1_2 -1812,743,main.pedersen.segments[0].doublers1[10].in[0] -1813,744,main.pedersen.segments[0].doublers1[10].in[1] -1814,828,main.pedersen.segments[0].doublers1[10].out[0] -1815,829,main.pedersen.segments[0].doublers1[10].out[1] -1816,830,main.pedersen.segments[0].doublers1[10].lamda -1817,831,main.pedersen.segments[0].doublers1[10].x1_2 -1927,792,main.pedersen.segments[0].doublers1[11].in[0] -1928,793,main.pedersen.segments[0].doublers1[11].in[1] -1929,877,main.pedersen.segments[0].doublers1[11].out[0] -1930,878,main.pedersen.segments[0].doublers1[11].out[1] -1931,879,main.pedersen.segments[0].doublers1[11].lamda -1932,880,main.pedersen.segments[0].doublers1[11].x1_2 -2042,841,main.pedersen.segments[0].doublers1[12].in[0] -2043,842,main.pedersen.segments[0].doublers1[12].in[1] -2044,926,main.pedersen.segments[0].doublers1[12].out[0] -2045,927,main.pedersen.segments[0].doublers1[12].out[1] -2046,928,main.pedersen.segments[0].doublers1[12].lamda -2047,929,main.pedersen.segments[0].doublers1[12].x1_2 -2157,890,main.pedersen.segments[0].doublers1[13].in[0] -2158,891,main.pedersen.segments[0].doublers1[13].in[1] -2159,975,main.pedersen.segments[0].doublers1[13].out[0] -2160,976,main.pedersen.segments[0].doublers1[13].out[1] -2161,977,main.pedersen.segments[0].doublers1[13].lamda -2162,978,main.pedersen.segments[0].doublers1[13].x1_2 -2272,939,main.pedersen.segments[0].doublers1[14].in[0] -2273,940,main.pedersen.segments[0].doublers1[14].in[1] -2274,1024,main.pedersen.segments[0].doublers1[14].out[0] -2275,1025,main.pedersen.segments[0].doublers1[14].out[1] -2276,1026,main.pedersen.segments[0].doublers1[14].lamda -2277,1027,main.pedersen.segments[0].doublers1[14].x1_2 -2387,988,main.pedersen.segments[0].doublers1[15].in[0] -2388,989,main.pedersen.segments[0].doublers1[15].in[1] -2389,1073,main.pedersen.segments[0].doublers1[15].out[0] -2390,1074,main.pedersen.segments[0].doublers1[15].out[1] -2391,1075,main.pedersen.segments[0].doublers1[15].lamda -2392,1076,main.pedersen.segments[0].doublers1[15].x1_2 -2502,1037,main.pedersen.segments[0].doublers1[16].in[0] -2503,1038,main.pedersen.segments[0].doublers1[16].in[1] -2504,1122,main.pedersen.segments[0].doublers1[16].out[0] -2505,1123,main.pedersen.segments[0].doublers1[16].out[1] -2506,1124,main.pedersen.segments[0].doublers1[16].lamda -2507,1125,main.pedersen.segments[0].doublers1[16].x1_2 -2617,1086,main.pedersen.segments[0].doublers1[17].in[0] -2618,1087,main.pedersen.segments[0].doublers1[17].in[1] -2619,1171,main.pedersen.segments[0].doublers1[17].out[0] -2620,1172,main.pedersen.segments[0].doublers1[17].out[1] -2621,1173,main.pedersen.segments[0].doublers1[17].lamda -2622,1174,main.pedersen.segments[0].doublers1[17].x1_2 -2732,1135,main.pedersen.segments[0].doublers1[18].in[0] -2733,1136,main.pedersen.segments[0].doublers1[18].in[1] -2734,1220,main.pedersen.segments[0].doublers1[18].out[0] -2735,1221,main.pedersen.segments[0].doublers1[18].out[1] -2736,1222,main.pedersen.segments[0].doublers1[18].lamda -2737,1223,main.pedersen.segments[0].doublers1[18].x1_2 -2847,1184,main.pedersen.segments[0].doublers1[19].in[0] -2848,1185,main.pedersen.segments[0].doublers1[19].in[1] -2849,1269,main.pedersen.segments[0].doublers1[19].out[0] -2850,1270,main.pedersen.segments[0].doublers1[19].out[1] -2851,1271,main.pedersen.segments[0].doublers1[19].lamda -2852,1272,main.pedersen.segments[0].doublers1[19].x1_2 -2962,1233,main.pedersen.segments[0].doublers1[20].in[0] -2963,1234,main.pedersen.segments[0].doublers1[20].in[1] -2964,1318,main.pedersen.segments[0].doublers1[20].out[0] -2965,1319,main.pedersen.segments[0].doublers1[20].out[1] -2966,1320,main.pedersen.segments[0].doublers1[20].lamda -2967,1321,main.pedersen.segments[0].doublers1[20].x1_2 -3077,1282,main.pedersen.segments[0].doublers1[21].in[0] -3078,1283,main.pedersen.segments[0].doublers1[21].in[1] -3079,1367,main.pedersen.segments[0].doublers1[21].out[0] -3080,1368,main.pedersen.segments[0].doublers1[21].out[1] -3081,1369,main.pedersen.segments[0].doublers1[21].lamda -3082,1370,main.pedersen.segments[0].doublers1[21].x1_2 -3192,1331,main.pedersen.segments[0].doublers1[22].in[0] -3193,1332,main.pedersen.segments[0].doublers1[22].in[1] -3194,1416,main.pedersen.segments[0].doublers1[22].out[0] -3195,1417,main.pedersen.segments[0].doublers1[22].out[1] -3196,1418,main.pedersen.segments[0].doublers1[22].lamda -3197,1419,main.pedersen.segments[0].doublers1[22].x1_2 -3307,1380,main.pedersen.segments[0].doublers1[23].in[0] -3308,1381,main.pedersen.segments[0].doublers1[23].in[1] -3309,1465,main.pedersen.segments[0].doublers1[23].out[0] -3310,1466,main.pedersen.segments[0].doublers1[23].out[1] -3311,1467,main.pedersen.segments[0].doublers1[23].lamda -3312,1468,main.pedersen.segments[0].doublers1[23].x1_2 -3422,1429,main.pedersen.segments[0].doublers1[24].in[0] -3423,1430,main.pedersen.segments[0].doublers1[24].in[1] -3424,1514,main.pedersen.segments[0].doublers1[24].out[0] -3425,1515,main.pedersen.segments[0].doublers1[24].out[1] -3426,1516,main.pedersen.segments[0].doublers1[24].lamda -3427,1517,main.pedersen.segments[0].doublers1[24].x1_2 -3537,1478,main.pedersen.segments[0].doublers1[25].in[0] -3538,1479,main.pedersen.segments[0].doublers1[25].in[1] -3539,1563,main.pedersen.segments[0].doublers1[25].out[0] -3540,1564,main.pedersen.segments[0].doublers1[25].out[1] -3541,1565,main.pedersen.segments[0].doublers1[25].lamda -3542,1566,main.pedersen.segments[0].doublers1[25].x1_2 -3652,1527,main.pedersen.segments[0].doublers1[26].in[0] -3653,1528,main.pedersen.segments[0].doublers1[26].in[1] -3654,1612,main.pedersen.segments[0].doublers1[26].out[0] -3655,1613,main.pedersen.segments[0].doublers1[26].out[1] -3656,1614,main.pedersen.segments[0].doublers1[26].lamda -3657,1615,main.pedersen.segments[0].doublers1[26].x1_2 -3767,1576,main.pedersen.segments[0].doublers1[27].in[0] -3768,1577,main.pedersen.segments[0].doublers1[27].in[1] -3769,1661,main.pedersen.segments[0].doublers1[27].out[0] -3770,1662,main.pedersen.segments[0].doublers1[27].out[1] -3771,1663,main.pedersen.segments[0].doublers1[27].lamda -3772,1664,main.pedersen.segments[0].doublers1[27].x1_2 -3882,1625,main.pedersen.segments[0].doublers1[28].in[0] -3883,1626,main.pedersen.segments[0].doublers1[28].in[1] -3884,1710,main.pedersen.segments[0].doublers1[28].out[0] -3885,1711,main.pedersen.segments[0].doublers1[28].out[1] -3886,1712,main.pedersen.segments[0].doublers1[28].lamda -3887,1713,main.pedersen.segments[0].doublers1[28].x1_2 -3997,1674,main.pedersen.segments[0].doublers1[29].in[0] -3998,1675,main.pedersen.segments[0].doublers1[29].in[1] -3999,1759,main.pedersen.segments[0].doublers1[29].out[0] -4000,1760,main.pedersen.segments[0].doublers1[29].out[1] -4001,1761,main.pedersen.segments[0].doublers1[29].lamda -4002,1762,main.pedersen.segments[0].doublers1[29].x1_2 -4112,1723,main.pedersen.segments[0].doublers1[30].in[0] -4113,1724,main.pedersen.segments[0].doublers1[30].in[1] -4114,1808,main.pedersen.segments[0].doublers1[30].out[0] -4115,1809,main.pedersen.segments[0].doublers1[30].out[1] -4116,1810,main.pedersen.segments[0].doublers1[30].lamda -4117,1811,main.pedersen.segments[0].doublers1[30].x1_2 -4227,1772,main.pedersen.segments[0].doublers1[31].in[0] -4228,1773,main.pedersen.segments[0].doublers1[31].in[1] -4229,1857,main.pedersen.segments[0].doublers1[31].out[0] -4230,1858,main.pedersen.segments[0].doublers1[31].out[1] -4231,1859,main.pedersen.segments[0].doublers1[31].lamda -4232,1860,main.pedersen.segments[0].doublers1[31].x1_2 -4342,1821,main.pedersen.segments[0].doublers1[32].in[0] -4343,1822,main.pedersen.segments[0].doublers1[32].in[1] -4344,1906,main.pedersen.segments[0].doublers1[32].out[0] -4345,1907,main.pedersen.segments[0].doublers1[32].out[1] -4346,1908,main.pedersen.segments[0].doublers1[32].lamda -4347,1909,main.pedersen.segments[0].doublers1[32].x1_2 -4457,1870,main.pedersen.segments[0].doublers1[33].in[0] -4458,1871,main.pedersen.segments[0].doublers1[33].in[1] -4459,1955,main.pedersen.segments[0].doublers1[33].out[0] -4460,1956,main.pedersen.segments[0].doublers1[33].out[1] -4461,1957,main.pedersen.segments[0].doublers1[33].lamda -4462,1958,main.pedersen.segments[0].doublers1[33].x1_2 -4572,1919,main.pedersen.segments[0].doublers1[34].in[0] -4573,1920,main.pedersen.segments[0].doublers1[34].in[1] -4574,2004,main.pedersen.segments[0].doublers1[34].out[0] -4575,2005,main.pedersen.segments[0].doublers1[34].out[1] -4576,2006,main.pedersen.segments[0].doublers1[34].lamda -4577,2007,main.pedersen.segments[0].doublers1[34].x1_2 -4687,1968,main.pedersen.segments[0].doublers1[35].in[0] -4688,1969,main.pedersen.segments[0].doublers1[35].in[1] -4689,2053,main.pedersen.segments[0].doublers1[35].out[0] -4690,2054,main.pedersen.segments[0].doublers1[35].out[1] -4691,2055,main.pedersen.segments[0].doublers1[35].lamda -4692,2056,main.pedersen.segments[0].doublers1[35].x1_2 -4802,2017,main.pedersen.segments[0].doublers1[36].in[0] -4803,2018,main.pedersen.segments[0].doublers1[36].in[1] -4804,2102,main.pedersen.segments[0].doublers1[36].out[0] -4805,2103,main.pedersen.segments[0].doublers1[36].out[1] -4806,2104,main.pedersen.segments[0].doublers1[36].lamda -4807,2105,main.pedersen.segments[0].doublers1[36].x1_2 -4917,2066,main.pedersen.segments[0].doublers1[37].in[0] -4918,2067,main.pedersen.segments[0].doublers1[37].in[1] -4919,2151,main.pedersen.segments[0].doublers1[37].out[0] -4920,2152,main.pedersen.segments[0].doublers1[37].out[1] -4921,2153,main.pedersen.segments[0].doublers1[37].lamda -4922,2154,main.pedersen.segments[0].doublers1[37].x1_2 -5032,2115,main.pedersen.segments[0].doublers1[38].in[0] -5033,2116,main.pedersen.segments[0].doublers1[38].in[1] -5034,2200,main.pedersen.segments[0].doublers1[38].out[0] -5035,2201,main.pedersen.segments[0].doublers1[38].out[1] -5036,2202,main.pedersen.segments[0].doublers1[38].lamda -5037,2203,main.pedersen.segments[0].doublers1[38].x1_2 -5147,2164,main.pedersen.segments[0].doublers1[39].in[0] -5148,2165,main.pedersen.segments[0].doublers1[39].in[1] -5149,2249,main.pedersen.segments[0].doublers1[39].out[0] -5150,2250,main.pedersen.segments[0].doublers1[39].out[1] -5151,2251,main.pedersen.segments[0].doublers1[39].lamda -5152,2252,main.pedersen.segments[0].doublers1[39].x1_2 -5262,2213,main.pedersen.segments[0].doublers1[40].in[0] -5263,2214,main.pedersen.segments[0].doublers1[40].in[1] -5264,2298,main.pedersen.segments[0].doublers1[40].out[0] -5265,2299,main.pedersen.segments[0].doublers1[40].out[1] -5266,2300,main.pedersen.segments[0].doublers1[40].lamda -5267,2301,main.pedersen.segments[0].doublers1[40].x1_2 -5377,2262,main.pedersen.segments[0].doublers1[41].in[0] -5378,2263,main.pedersen.segments[0].doublers1[41].in[1] -5379,2347,main.pedersen.segments[0].doublers1[41].out[0] -5380,2348,main.pedersen.segments[0].doublers1[41].out[1] -5381,2349,main.pedersen.segments[0].doublers1[41].lamda -5382,2350,main.pedersen.segments[0].doublers1[41].x1_2 -5492,2311,main.pedersen.segments[0].doublers1[42].in[0] -5493,2312,main.pedersen.segments[0].doublers1[42].in[1] -5494,2396,main.pedersen.segments[0].doublers1[42].out[0] -5495,2397,main.pedersen.segments[0].doublers1[42].out[1] -5496,2398,main.pedersen.segments[0].doublers1[42].lamda -5497,2399,main.pedersen.segments[0].doublers1[42].x1_2 -5607,2360,main.pedersen.segments[0].doublers1[43].in[0] -5608,2361,main.pedersen.segments[0].doublers1[43].in[1] -5609,2445,main.pedersen.segments[0].doublers1[43].out[0] -5610,2446,main.pedersen.segments[0].doublers1[43].out[1] -5611,2447,main.pedersen.segments[0].doublers1[43].lamda -5612,2448,main.pedersen.segments[0].doublers1[43].x1_2 -5722,2409,main.pedersen.segments[0].doublers1[44].in[0] -5723,2410,main.pedersen.segments[0].doublers1[44].in[1] -5724,2494,main.pedersen.segments[0].doublers1[44].out[0] -5725,2495,main.pedersen.segments[0].doublers1[44].out[1] -5726,2496,main.pedersen.segments[0].doublers1[44].lamda -5727,2497,main.pedersen.segments[0].doublers1[44].x1_2 -5837,2458,main.pedersen.segments[0].doublers1[45].in[0] -5838,2459,main.pedersen.segments[0].doublers1[45].in[1] -5839,2543,main.pedersen.segments[0].doublers1[45].out[0] -5840,2544,main.pedersen.segments[0].doublers1[45].out[1] -5841,2545,main.pedersen.segments[0].doublers1[45].lamda -5842,2546,main.pedersen.segments[0].doublers1[45].x1_2 -5952,2507,main.pedersen.segments[0].doublers1[46].in[0] -5953,2508,main.pedersen.segments[0].doublers1[46].in[1] -5954,2592,main.pedersen.segments[0].doublers1[46].out[0] -5955,2593,main.pedersen.segments[0].doublers1[46].out[1] -5956,2594,main.pedersen.segments[0].doublers1[46].lamda -5957,2595,main.pedersen.segments[0].doublers1[46].x1_2 -6067,2556,main.pedersen.segments[0].doublers1[47].in[0] -6068,2557,main.pedersen.segments[0].doublers1[47].in[1] -6069,2641,main.pedersen.segments[0].doublers1[47].out[0] -6070,2642,main.pedersen.segments[0].doublers1[47].out[1] -6071,2643,main.pedersen.segments[0].doublers1[47].lamda -6072,2644,main.pedersen.segments[0].doublers1[47].x1_2 -6182,2605,main.pedersen.segments[0].doublers1[48].in[0] -6183,2606,main.pedersen.segments[0].doublers1[48].in[1] -6184,2690,main.pedersen.segments[0].doublers1[48].out[0] -6185,2691,main.pedersen.segments[0].doublers1[48].out[1] -6186,2692,main.pedersen.segments[0].doublers1[48].lamda -6187,2693,main.pedersen.segments[0].doublers1[48].x1_2 -668,338,main.pedersen.segments[0].doublers2[0].in[0] -669,339,main.pedersen.segments[0].doublers2[0].in[1] -670,298,main.pedersen.segments[0].doublers2[0].out[0] -671,299,main.pedersen.segments[0].doublers2[0].out[1] -672,342,main.pedersen.segments[0].doublers2[0].lamda -673,343,main.pedersen.segments[0].doublers2[0].x1_2 -783,387,main.pedersen.segments[0].doublers2[1].in[0] -784,388,main.pedersen.segments[0].doublers2[1].in[1] -785,347,main.pedersen.segments[0].doublers2[1].out[0] -786,348,main.pedersen.segments[0].doublers2[1].out[1] -787,391,main.pedersen.segments[0].doublers2[1].lamda -788,392,main.pedersen.segments[0].doublers2[1].x1_2 -898,436,main.pedersen.segments[0].doublers2[2].in[0] -899,437,main.pedersen.segments[0].doublers2[2].in[1] -900,396,main.pedersen.segments[0].doublers2[2].out[0] -901,397,main.pedersen.segments[0].doublers2[2].out[1] -902,440,main.pedersen.segments[0].doublers2[2].lamda -903,441,main.pedersen.segments[0].doublers2[2].x1_2 -1013,485,main.pedersen.segments[0].doublers2[3].in[0] -1014,486,main.pedersen.segments[0].doublers2[3].in[1] -1015,445,main.pedersen.segments[0].doublers2[3].out[0] -1016,446,main.pedersen.segments[0].doublers2[3].out[1] -1017,489,main.pedersen.segments[0].doublers2[3].lamda -1018,490,main.pedersen.segments[0].doublers2[3].x1_2 -1128,534,main.pedersen.segments[0].doublers2[4].in[0] -1129,535,main.pedersen.segments[0].doublers2[4].in[1] -1130,494,main.pedersen.segments[0].doublers2[4].out[0] -1131,495,main.pedersen.segments[0].doublers2[4].out[1] -1132,538,main.pedersen.segments[0].doublers2[4].lamda -1133,539,main.pedersen.segments[0].doublers2[4].x1_2 -1243,583,main.pedersen.segments[0].doublers2[5].in[0] -1244,584,main.pedersen.segments[0].doublers2[5].in[1] -1245,543,main.pedersen.segments[0].doublers2[5].out[0] -1246,544,main.pedersen.segments[0].doublers2[5].out[1] -1247,587,main.pedersen.segments[0].doublers2[5].lamda -1248,588,main.pedersen.segments[0].doublers2[5].x1_2 -1358,632,main.pedersen.segments[0].doublers2[6].in[0] -1359,633,main.pedersen.segments[0].doublers2[6].in[1] -1360,592,main.pedersen.segments[0].doublers2[6].out[0] -1361,593,main.pedersen.segments[0].doublers2[6].out[1] -1362,636,main.pedersen.segments[0].doublers2[6].lamda -1363,637,main.pedersen.segments[0].doublers2[6].x1_2 -1473,681,main.pedersen.segments[0].doublers2[7].in[0] -1474,682,main.pedersen.segments[0].doublers2[7].in[1] -1475,641,main.pedersen.segments[0].doublers2[7].out[0] -1476,642,main.pedersen.segments[0].doublers2[7].out[1] -1477,685,main.pedersen.segments[0].doublers2[7].lamda -1478,686,main.pedersen.segments[0].doublers2[7].x1_2 -1588,730,main.pedersen.segments[0].doublers2[8].in[0] -1589,731,main.pedersen.segments[0].doublers2[8].in[1] -1590,690,main.pedersen.segments[0].doublers2[8].out[0] -1591,691,main.pedersen.segments[0].doublers2[8].out[1] -1592,734,main.pedersen.segments[0].doublers2[8].lamda -1593,735,main.pedersen.segments[0].doublers2[8].x1_2 -1703,779,main.pedersen.segments[0].doublers2[9].in[0] -1704,780,main.pedersen.segments[0].doublers2[9].in[1] -1705,739,main.pedersen.segments[0].doublers2[9].out[0] -1706,740,main.pedersen.segments[0].doublers2[9].out[1] -1707,783,main.pedersen.segments[0].doublers2[9].lamda -1708,784,main.pedersen.segments[0].doublers2[9].x1_2 -1818,828,main.pedersen.segments[0].doublers2[10].in[0] -1819,829,main.pedersen.segments[0].doublers2[10].in[1] -1820,788,main.pedersen.segments[0].doublers2[10].out[0] -1821,789,main.pedersen.segments[0].doublers2[10].out[1] -1822,832,main.pedersen.segments[0].doublers2[10].lamda -1823,833,main.pedersen.segments[0].doublers2[10].x1_2 -1933,877,main.pedersen.segments[0].doublers2[11].in[0] -1934,878,main.pedersen.segments[0].doublers2[11].in[1] -1935,837,main.pedersen.segments[0].doublers2[11].out[0] -1936,838,main.pedersen.segments[0].doublers2[11].out[1] -1937,881,main.pedersen.segments[0].doublers2[11].lamda -1938,882,main.pedersen.segments[0].doublers2[11].x1_2 -2048,926,main.pedersen.segments[0].doublers2[12].in[0] -2049,927,main.pedersen.segments[0].doublers2[12].in[1] -2050,886,main.pedersen.segments[0].doublers2[12].out[0] -2051,887,main.pedersen.segments[0].doublers2[12].out[1] -2052,930,main.pedersen.segments[0].doublers2[12].lamda -2053,931,main.pedersen.segments[0].doublers2[12].x1_2 -2163,975,main.pedersen.segments[0].doublers2[13].in[0] -2164,976,main.pedersen.segments[0].doublers2[13].in[1] -2165,935,main.pedersen.segments[0].doublers2[13].out[0] -2166,936,main.pedersen.segments[0].doublers2[13].out[1] -2167,979,main.pedersen.segments[0].doublers2[13].lamda -2168,980,main.pedersen.segments[0].doublers2[13].x1_2 -2278,1024,main.pedersen.segments[0].doublers2[14].in[0] -2279,1025,main.pedersen.segments[0].doublers2[14].in[1] -2280,984,main.pedersen.segments[0].doublers2[14].out[0] -2281,985,main.pedersen.segments[0].doublers2[14].out[1] -2282,1028,main.pedersen.segments[0].doublers2[14].lamda -2283,1029,main.pedersen.segments[0].doublers2[14].x1_2 -2393,1073,main.pedersen.segments[0].doublers2[15].in[0] -2394,1074,main.pedersen.segments[0].doublers2[15].in[1] -2395,1033,main.pedersen.segments[0].doublers2[15].out[0] -2396,1034,main.pedersen.segments[0].doublers2[15].out[1] -2397,1077,main.pedersen.segments[0].doublers2[15].lamda -2398,1078,main.pedersen.segments[0].doublers2[15].x1_2 -2508,1122,main.pedersen.segments[0].doublers2[16].in[0] -2509,1123,main.pedersen.segments[0].doublers2[16].in[1] -2510,1082,main.pedersen.segments[0].doublers2[16].out[0] -2511,1083,main.pedersen.segments[0].doublers2[16].out[1] -2512,1126,main.pedersen.segments[0].doublers2[16].lamda -2513,1127,main.pedersen.segments[0].doublers2[16].x1_2 -2623,1171,main.pedersen.segments[0].doublers2[17].in[0] -2624,1172,main.pedersen.segments[0].doublers2[17].in[1] -2625,1131,main.pedersen.segments[0].doublers2[17].out[0] -2626,1132,main.pedersen.segments[0].doublers2[17].out[1] -2627,1175,main.pedersen.segments[0].doublers2[17].lamda -2628,1176,main.pedersen.segments[0].doublers2[17].x1_2 -2738,1220,main.pedersen.segments[0].doublers2[18].in[0] -2739,1221,main.pedersen.segments[0].doublers2[18].in[1] -2740,1180,main.pedersen.segments[0].doublers2[18].out[0] -2741,1181,main.pedersen.segments[0].doublers2[18].out[1] -2742,1224,main.pedersen.segments[0].doublers2[18].lamda -2743,1225,main.pedersen.segments[0].doublers2[18].x1_2 -2853,1269,main.pedersen.segments[0].doublers2[19].in[0] -2854,1270,main.pedersen.segments[0].doublers2[19].in[1] -2855,1229,main.pedersen.segments[0].doublers2[19].out[0] -2856,1230,main.pedersen.segments[0].doublers2[19].out[1] -2857,1273,main.pedersen.segments[0].doublers2[19].lamda -2858,1274,main.pedersen.segments[0].doublers2[19].x1_2 -2968,1318,main.pedersen.segments[0].doublers2[20].in[0] -2969,1319,main.pedersen.segments[0].doublers2[20].in[1] -2970,1278,main.pedersen.segments[0].doublers2[20].out[0] -2971,1279,main.pedersen.segments[0].doublers2[20].out[1] -2972,1322,main.pedersen.segments[0].doublers2[20].lamda -2973,1323,main.pedersen.segments[0].doublers2[20].x1_2 -3083,1367,main.pedersen.segments[0].doublers2[21].in[0] -3084,1368,main.pedersen.segments[0].doublers2[21].in[1] -3085,1327,main.pedersen.segments[0].doublers2[21].out[0] -3086,1328,main.pedersen.segments[0].doublers2[21].out[1] -3087,1371,main.pedersen.segments[0].doublers2[21].lamda -3088,1372,main.pedersen.segments[0].doublers2[21].x1_2 -3198,1416,main.pedersen.segments[0].doublers2[22].in[0] -3199,1417,main.pedersen.segments[0].doublers2[22].in[1] -3200,1376,main.pedersen.segments[0].doublers2[22].out[0] -3201,1377,main.pedersen.segments[0].doublers2[22].out[1] -3202,1420,main.pedersen.segments[0].doublers2[22].lamda -3203,1421,main.pedersen.segments[0].doublers2[22].x1_2 -3313,1465,main.pedersen.segments[0].doublers2[23].in[0] -3314,1466,main.pedersen.segments[0].doublers2[23].in[1] -3315,1425,main.pedersen.segments[0].doublers2[23].out[0] -3316,1426,main.pedersen.segments[0].doublers2[23].out[1] -3317,1469,main.pedersen.segments[0].doublers2[23].lamda -3318,1470,main.pedersen.segments[0].doublers2[23].x1_2 -3428,1514,main.pedersen.segments[0].doublers2[24].in[0] -3429,1515,main.pedersen.segments[0].doublers2[24].in[1] -3430,1474,main.pedersen.segments[0].doublers2[24].out[0] -3431,1475,main.pedersen.segments[0].doublers2[24].out[1] -3432,1518,main.pedersen.segments[0].doublers2[24].lamda -3433,1519,main.pedersen.segments[0].doublers2[24].x1_2 -3543,1563,main.pedersen.segments[0].doublers2[25].in[0] -3544,1564,main.pedersen.segments[0].doublers2[25].in[1] -3545,1523,main.pedersen.segments[0].doublers2[25].out[0] -3546,1524,main.pedersen.segments[0].doublers2[25].out[1] -3547,1567,main.pedersen.segments[0].doublers2[25].lamda -3548,1568,main.pedersen.segments[0].doublers2[25].x1_2 -3658,1612,main.pedersen.segments[0].doublers2[26].in[0] -3659,1613,main.pedersen.segments[0].doublers2[26].in[1] -3660,1572,main.pedersen.segments[0].doublers2[26].out[0] -3661,1573,main.pedersen.segments[0].doublers2[26].out[1] -3662,1616,main.pedersen.segments[0].doublers2[26].lamda -3663,1617,main.pedersen.segments[0].doublers2[26].x1_2 -3773,1661,main.pedersen.segments[0].doublers2[27].in[0] -3774,1662,main.pedersen.segments[0].doublers2[27].in[1] -3775,1621,main.pedersen.segments[0].doublers2[27].out[0] -3776,1622,main.pedersen.segments[0].doublers2[27].out[1] -3777,1665,main.pedersen.segments[0].doublers2[27].lamda -3778,1666,main.pedersen.segments[0].doublers2[27].x1_2 -3888,1710,main.pedersen.segments[0].doublers2[28].in[0] -3889,1711,main.pedersen.segments[0].doublers2[28].in[1] -3890,1670,main.pedersen.segments[0].doublers2[28].out[0] -3891,1671,main.pedersen.segments[0].doublers2[28].out[1] -3892,1714,main.pedersen.segments[0].doublers2[28].lamda -3893,1715,main.pedersen.segments[0].doublers2[28].x1_2 -4003,1759,main.pedersen.segments[0].doublers2[29].in[0] -4004,1760,main.pedersen.segments[0].doublers2[29].in[1] -4005,1719,main.pedersen.segments[0].doublers2[29].out[0] -4006,1720,main.pedersen.segments[0].doublers2[29].out[1] -4007,1763,main.pedersen.segments[0].doublers2[29].lamda -4008,1764,main.pedersen.segments[0].doublers2[29].x1_2 -4118,1808,main.pedersen.segments[0].doublers2[30].in[0] -4119,1809,main.pedersen.segments[0].doublers2[30].in[1] -4120,1768,main.pedersen.segments[0].doublers2[30].out[0] -4121,1769,main.pedersen.segments[0].doublers2[30].out[1] -4122,1812,main.pedersen.segments[0].doublers2[30].lamda -4123,1813,main.pedersen.segments[0].doublers2[30].x1_2 -4233,1857,main.pedersen.segments[0].doublers2[31].in[0] -4234,1858,main.pedersen.segments[0].doublers2[31].in[1] -4235,1817,main.pedersen.segments[0].doublers2[31].out[0] -4236,1818,main.pedersen.segments[0].doublers2[31].out[1] -4237,1861,main.pedersen.segments[0].doublers2[31].lamda -4238,1862,main.pedersen.segments[0].doublers2[31].x1_2 -4348,1906,main.pedersen.segments[0].doublers2[32].in[0] -4349,1907,main.pedersen.segments[0].doublers2[32].in[1] -4350,1866,main.pedersen.segments[0].doublers2[32].out[0] -4351,1867,main.pedersen.segments[0].doublers2[32].out[1] -4352,1910,main.pedersen.segments[0].doublers2[32].lamda -4353,1911,main.pedersen.segments[0].doublers2[32].x1_2 -4463,1955,main.pedersen.segments[0].doublers2[33].in[0] -4464,1956,main.pedersen.segments[0].doublers2[33].in[1] -4465,1915,main.pedersen.segments[0].doublers2[33].out[0] -4466,1916,main.pedersen.segments[0].doublers2[33].out[1] -4467,1959,main.pedersen.segments[0].doublers2[33].lamda -4468,1960,main.pedersen.segments[0].doublers2[33].x1_2 -4578,2004,main.pedersen.segments[0].doublers2[34].in[0] -4579,2005,main.pedersen.segments[0].doublers2[34].in[1] -4580,1964,main.pedersen.segments[0].doublers2[34].out[0] -4581,1965,main.pedersen.segments[0].doublers2[34].out[1] -4582,2008,main.pedersen.segments[0].doublers2[34].lamda -4583,2009,main.pedersen.segments[0].doublers2[34].x1_2 -4693,2053,main.pedersen.segments[0].doublers2[35].in[0] -4694,2054,main.pedersen.segments[0].doublers2[35].in[1] -4695,2013,main.pedersen.segments[0].doublers2[35].out[0] -4696,2014,main.pedersen.segments[0].doublers2[35].out[1] -4697,2057,main.pedersen.segments[0].doublers2[35].lamda -4698,2058,main.pedersen.segments[0].doublers2[35].x1_2 -4808,2102,main.pedersen.segments[0].doublers2[36].in[0] -4809,2103,main.pedersen.segments[0].doublers2[36].in[1] -4810,2062,main.pedersen.segments[0].doublers2[36].out[0] -4811,2063,main.pedersen.segments[0].doublers2[36].out[1] -4812,2106,main.pedersen.segments[0].doublers2[36].lamda -4813,2107,main.pedersen.segments[0].doublers2[36].x1_2 -4923,2151,main.pedersen.segments[0].doublers2[37].in[0] -4924,2152,main.pedersen.segments[0].doublers2[37].in[1] -4925,2111,main.pedersen.segments[0].doublers2[37].out[0] -4926,2112,main.pedersen.segments[0].doublers2[37].out[1] -4927,2155,main.pedersen.segments[0].doublers2[37].lamda -4928,2156,main.pedersen.segments[0].doublers2[37].x1_2 -5038,2200,main.pedersen.segments[0].doublers2[38].in[0] -5039,2201,main.pedersen.segments[0].doublers2[38].in[1] -5040,2160,main.pedersen.segments[0].doublers2[38].out[0] -5041,2161,main.pedersen.segments[0].doublers2[38].out[1] -5042,2204,main.pedersen.segments[0].doublers2[38].lamda -5043,2205,main.pedersen.segments[0].doublers2[38].x1_2 -5153,2249,main.pedersen.segments[0].doublers2[39].in[0] -5154,2250,main.pedersen.segments[0].doublers2[39].in[1] -5155,2209,main.pedersen.segments[0].doublers2[39].out[0] -5156,2210,main.pedersen.segments[0].doublers2[39].out[1] -5157,2253,main.pedersen.segments[0].doublers2[39].lamda -5158,2254,main.pedersen.segments[0].doublers2[39].x1_2 -5268,2298,main.pedersen.segments[0].doublers2[40].in[0] -5269,2299,main.pedersen.segments[0].doublers2[40].in[1] -5270,2258,main.pedersen.segments[0].doublers2[40].out[0] -5271,2259,main.pedersen.segments[0].doublers2[40].out[1] -5272,2302,main.pedersen.segments[0].doublers2[40].lamda -5273,2303,main.pedersen.segments[0].doublers2[40].x1_2 -5383,2347,main.pedersen.segments[0].doublers2[41].in[0] -5384,2348,main.pedersen.segments[0].doublers2[41].in[1] -5385,2307,main.pedersen.segments[0].doublers2[41].out[0] -5386,2308,main.pedersen.segments[0].doublers2[41].out[1] -5387,2351,main.pedersen.segments[0].doublers2[41].lamda -5388,2352,main.pedersen.segments[0].doublers2[41].x1_2 -5498,2396,main.pedersen.segments[0].doublers2[42].in[0] -5499,2397,main.pedersen.segments[0].doublers2[42].in[1] -5500,2356,main.pedersen.segments[0].doublers2[42].out[0] -5501,2357,main.pedersen.segments[0].doublers2[42].out[1] -5502,2400,main.pedersen.segments[0].doublers2[42].lamda -5503,2401,main.pedersen.segments[0].doublers2[42].x1_2 -5613,2445,main.pedersen.segments[0].doublers2[43].in[0] -5614,2446,main.pedersen.segments[0].doublers2[43].in[1] -5615,2405,main.pedersen.segments[0].doublers2[43].out[0] -5616,2406,main.pedersen.segments[0].doublers2[43].out[1] -5617,2449,main.pedersen.segments[0].doublers2[43].lamda -5618,2450,main.pedersen.segments[0].doublers2[43].x1_2 -5728,2494,main.pedersen.segments[0].doublers2[44].in[0] -5729,2495,main.pedersen.segments[0].doublers2[44].in[1] -5730,2454,main.pedersen.segments[0].doublers2[44].out[0] -5731,2455,main.pedersen.segments[0].doublers2[44].out[1] -5732,2498,main.pedersen.segments[0].doublers2[44].lamda -5733,2499,main.pedersen.segments[0].doublers2[44].x1_2 -5843,2543,main.pedersen.segments[0].doublers2[45].in[0] -5844,2544,main.pedersen.segments[0].doublers2[45].in[1] -5845,2503,main.pedersen.segments[0].doublers2[45].out[0] -5846,2504,main.pedersen.segments[0].doublers2[45].out[1] -5847,2547,main.pedersen.segments[0].doublers2[45].lamda -5848,2548,main.pedersen.segments[0].doublers2[45].x1_2 -5958,2592,main.pedersen.segments[0].doublers2[46].in[0] -5959,2593,main.pedersen.segments[0].doublers2[46].in[1] -5960,2552,main.pedersen.segments[0].doublers2[46].out[0] -5961,2553,main.pedersen.segments[0].doublers2[46].out[1] -5962,2596,main.pedersen.segments[0].doublers2[46].lamda -5963,2597,main.pedersen.segments[0].doublers2[46].x1_2 -6073,2641,main.pedersen.segments[0].doublers2[47].in[0] -6074,2642,main.pedersen.segments[0].doublers2[47].in[1] -6075,2601,main.pedersen.segments[0].doublers2[47].out[0] -6076,2602,main.pedersen.segments[0].doublers2[47].out[1] -6077,2645,main.pedersen.segments[0].doublers2[47].lamda -6078,2646,main.pedersen.segments[0].doublers2[47].x1_2 -6188,2690,main.pedersen.segments[0].doublers2[48].in[0] -6189,2691,main.pedersen.segments[0].doublers2[48].in[1] -6190,2650,main.pedersen.segments[0].doublers2[48].out[0] -6191,2651,main.pedersen.segments[0].doublers2[48].out[1] -6192,2694,main.pedersen.segments[0].doublers2[48].lamda -6193,2695,main.pedersen.segments[0].doublers2[48].x1_2 -674,258,main.pedersen.segments[0].adders[0].in1[0] -675,259,main.pedersen.segments[0].adders[0].in1[1] -676,300,main.pedersen.segments[0].adders[0].in2[0] -677,301,main.pedersen.segments[0].adders[0].in2[1] -678,344,main.pedersen.segments[0].adders[0].out[0] -679,345,main.pedersen.segments[0].adders[0].out[1] -680,346,main.pedersen.segments[0].adders[0].lamda -789,344,main.pedersen.segments[0].adders[1].in1[0] -790,345,main.pedersen.segments[0].adders[1].in1[1] -791,349,main.pedersen.segments[0].adders[1].in2[0] -792,350,main.pedersen.segments[0].adders[1].in2[1] -793,393,main.pedersen.segments[0].adders[1].out[0] -794,394,main.pedersen.segments[0].adders[1].out[1] -795,395,main.pedersen.segments[0].adders[1].lamda -904,393,main.pedersen.segments[0].adders[2].in1[0] -905,394,main.pedersen.segments[0].adders[2].in1[1] -906,398,main.pedersen.segments[0].adders[2].in2[0] -907,399,main.pedersen.segments[0].adders[2].in2[1] -908,442,main.pedersen.segments[0].adders[2].out[0] -909,443,main.pedersen.segments[0].adders[2].out[1] -910,444,main.pedersen.segments[0].adders[2].lamda -1019,442,main.pedersen.segments[0].adders[3].in1[0] -1020,443,main.pedersen.segments[0].adders[3].in1[1] -1021,447,main.pedersen.segments[0].adders[3].in2[0] -1022,448,main.pedersen.segments[0].adders[3].in2[1] -1023,491,main.pedersen.segments[0].adders[3].out[0] -1024,492,main.pedersen.segments[0].adders[3].out[1] -1025,493,main.pedersen.segments[0].adders[3].lamda -1134,491,main.pedersen.segments[0].adders[4].in1[0] -1135,492,main.pedersen.segments[0].adders[4].in1[1] -1136,496,main.pedersen.segments[0].adders[4].in2[0] -1137,497,main.pedersen.segments[0].adders[4].in2[1] -1138,540,main.pedersen.segments[0].adders[4].out[0] -1139,541,main.pedersen.segments[0].adders[4].out[1] -1140,542,main.pedersen.segments[0].adders[4].lamda -1249,540,main.pedersen.segments[0].adders[5].in1[0] -1250,541,main.pedersen.segments[0].adders[5].in1[1] -1251,545,main.pedersen.segments[0].adders[5].in2[0] -1252,546,main.pedersen.segments[0].adders[5].in2[1] -1253,589,main.pedersen.segments[0].adders[5].out[0] -1254,590,main.pedersen.segments[0].adders[5].out[1] -1255,591,main.pedersen.segments[0].adders[5].lamda -1364,589,main.pedersen.segments[0].adders[6].in1[0] -1365,590,main.pedersen.segments[0].adders[6].in1[1] -1366,594,main.pedersen.segments[0].adders[6].in2[0] -1367,595,main.pedersen.segments[0].adders[6].in2[1] -1368,638,main.pedersen.segments[0].adders[6].out[0] -1369,639,main.pedersen.segments[0].adders[6].out[1] -1370,640,main.pedersen.segments[0].adders[6].lamda -1479,638,main.pedersen.segments[0].adders[7].in1[0] -1480,639,main.pedersen.segments[0].adders[7].in1[1] -1481,643,main.pedersen.segments[0].adders[7].in2[0] -1482,644,main.pedersen.segments[0].adders[7].in2[1] -1483,687,main.pedersen.segments[0].adders[7].out[0] -1484,688,main.pedersen.segments[0].adders[7].out[1] -1485,689,main.pedersen.segments[0].adders[7].lamda -1594,687,main.pedersen.segments[0].adders[8].in1[0] -1595,688,main.pedersen.segments[0].adders[8].in1[1] -1596,692,main.pedersen.segments[0].adders[8].in2[0] -1597,693,main.pedersen.segments[0].adders[8].in2[1] -1598,736,main.pedersen.segments[0].adders[8].out[0] -1599,737,main.pedersen.segments[0].adders[8].out[1] -1600,738,main.pedersen.segments[0].adders[8].lamda -1709,736,main.pedersen.segments[0].adders[9].in1[0] -1710,737,main.pedersen.segments[0].adders[9].in1[1] -1711,741,main.pedersen.segments[0].adders[9].in2[0] -1712,742,main.pedersen.segments[0].adders[9].in2[1] -1713,785,main.pedersen.segments[0].adders[9].out[0] -1714,786,main.pedersen.segments[0].adders[9].out[1] -1715,787,main.pedersen.segments[0].adders[9].lamda -1824,785,main.pedersen.segments[0].adders[10].in1[0] -1825,786,main.pedersen.segments[0].adders[10].in1[1] -1826,790,main.pedersen.segments[0].adders[10].in2[0] -1827,791,main.pedersen.segments[0].adders[10].in2[1] -1828,834,main.pedersen.segments[0].adders[10].out[0] -1829,835,main.pedersen.segments[0].adders[10].out[1] -1830,836,main.pedersen.segments[0].adders[10].lamda -1939,834,main.pedersen.segments[0].adders[11].in1[0] -1940,835,main.pedersen.segments[0].adders[11].in1[1] -1941,839,main.pedersen.segments[0].adders[11].in2[0] -1942,840,main.pedersen.segments[0].adders[11].in2[1] -1943,883,main.pedersen.segments[0].adders[11].out[0] -1944,884,main.pedersen.segments[0].adders[11].out[1] -1945,885,main.pedersen.segments[0].adders[11].lamda -2054,883,main.pedersen.segments[0].adders[12].in1[0] -2055,884,main.pedersen.segments[0].adders[12].in1[1] -2056,888,main.pedersen.segments[0].adders[12].in2[0] -2057,889,main.pedersen.segments[0].adders[12].in2[1] -2058,932,main.pedersen.segments[0].adders[12].out[0] -2059,933,main.pedersen.segments[0].adders[12].out[1] -2060,934,main.pedersen.segments[0].adders[12].lamda -2169,932,main.pedersen.segments[0].adders[13].in1[0] -2170,933,main.pedersen.segments[0].adders[13].in1[1] -2171,937,main.pedersen.segments[0].adders[13].in2[0] -2172,938,main.pedersen.segments[0].adders[13].in2[1] -2173,981,main.pedersen.segments[0].adders[13].out[0] -2174,982,main.pedersen.segments[0].adders[13].out[1] -2175,983,main.pedersen.segments[0].adders[13].lamda -2284,981,main.pedersen.segments[0].adders[14].in1[0] -2285,982,main.pedersen.segments[0].adders[14].in1[1] -2286,986,main.pedersen.segments[0].adders[14].in2[0] -2287,987,main.pedersen.segments[0].adders[14].in2[1] -2288,1030,main.pedersen.segments[0].adders[14].out[0] -2289,1031,main.pedersen.segments[0].adders[14].out[1] -2290,1032,main.pedersen.segments[0].adders[14].lamda -2399,1030,main.pedersen.segments[0].adders[15].in1[0] -2400,1031,main.pedersen.segments[0].adders[15].in1[1] -2401,1035,main.pedersen.segments[0].adders[15].in2[0] -2402,1036,main.pedersen.segments[0].adders[15].in2[1] -2403,1079,main.pedersen.segments[0].adders[15].out[0] -2404,1080,main.pedersen.segments[0].adders[15].out[1] -2405,1081,main.pedersen.segments[0].adders[15].lamda -2514,1079,main.pedersen.segments[0].adders[16].in1[0] -2515,1080,main.pedersen.segments[0].adders[16].in1[1] -2516,1084,main.pedersen.segments[0].adders[16].in2[0] -2517,1085,main.pedersen.segments[0].adders[16].in2[1] -2518,1128,main.pedersen.segments[0].adders[16].out[0] -2519,1129,main.pedersen.segments[0].adders[16].out[1] -2520,1130,main.pedersen.segments[0].adders[16].lamda -2629,1128,main.pedersen.segments[0].adders[17].in1[0] -2630,1129,main.pedersen.segments[0].adders[17].in1[1] -2631,1133,main.pedersen.segments[0].adders[17].in2[0] -2632,1134,main.pedersen.segments[0].adders[17].in2[1] -2633,1177,main.pedersen.segments[0].adders[17].out[0] -2634,1178,main.pedersen.segments[0].adders[17].out[1] -2635,1179,main.pedersen.segments[0].adders[17].lamda -2744,1177,main.pedersen.segments[0].adders[18].in1[0] -2745,1178,main.pedersen.segments[0].adders[18].in1[1] -2746,1182,main.pedersen.segments[0].adders[18].in2[0] -2747,1183,main.pedersen.segments[0].adders[18].in2[1] -2748,1226,main.pedersen.segments[0].adders[18].out[0] -2749,1227,main.pedersen.segments[0].adders[18].out[1] -2750,1228,main.pedersen.segments[0].adders[18].lamda -2859,1226,main.pedersen.segments[0].adders[19].in1[0] -2860,1227,main.pedersen.segments[0].adders[19].in1[1] -2861,1231,main.pedersen.segments[0].adders[19].in2[0] -2862,1232,main.pedersen.segments[0].adders[19].in2[1] -2863,1275,main.pedersen.segments[0].adders[19].out[0] -2864,1276,main.pedersen.segments[0].adders[19].out[1] -2865,1277,main.pedersen.segments[0].adders[19].lamda -2974,1275,main.pedersen.segments[0].adders[20].in1[0] -2975,1276,main.pedersen.segments[0].adders[20].in1[1] -2976,1280,main.pedersen.segments[0].adders[20].in2[0] -2977,1281,main.pedersen.segments[0].adders[20].in2[1] -2978,1324,main.pedersen.segments[0].adders[20].out[0] -2979,1325,main.pedersen.segments[0].adders[20].out[1] -2980,1326,main.pedersen.segments[0].adders[20].lamda -3089,1324,main.pedersen.segments[0].adders[21].in1[0] -3090,1325,main.pedersen.segments[0].adders[21].in1[1] -3091,1329,main.pedersen.segments[0].adders[21].in2[0] -3092,1330,main.pedersen.segments[0].adders[21].in2[1] -3093,1373,main.pedersen.segments[0].adders[21].out[0] -3094,1374,main.pedersen.segments[0].adders[21].out[1] -3095,1375,main.pedersen.segments[0].adders[21].lamda -3204,1373,main.pedersen.segments[0].adders[22].in1[0] -3205,1374,main.pedersen.segments[0].adders[22].in1[1] -3206,1378,main.pedersen.segments[0].adders[22].in2[0] -3207,1379,main.pedersen.segments[0].adders[22].in2[1] -3208,1422,main.pedersen.segments[0].adders[22].out[0] -3209,1423,main.pedersen.segments[0].adders[22].out[1] -3210,1424,main.pedersen.segments[0].adders[22].lamda -3319,1422,main.pedersen.segments[0].adders[23].in1[0] -3320,1423,main.pedersen.segments[0].adders[23].in1[1] -3321,1427,main.pedersen.segments[0].adders[23].in2[0] -3322,1428,main.pedersen.segments[0].adders[23].in2[1] -3323,1471,main.pedersen.segments[0].adders[23].out[0] -3324,1472,main.pedersen.segments[0].adders[23].out[1] -3325,1473,main.pedersen.segments[0].adders[23].lamda -3434,1471,main.pedersen.segments[0].adders[24].in1[0] -3435,1472,main.pedersen.segments[0].adders[24].in1[1] -3436,1476,main.pedersen.segments[0].adders[24].in2[0] -3437,1477,main.pedersen.segments[0].adders[24].in2[1] -3438,1520,main.pedersen.segments[0].adders[24].out[0] -3439,1521,main.pedersen.segments[0].adders[24].out[1] -3440,1522,main.pedersen.segments[0].adders[24].lamda -3549,1520,main.pedersen.segments[0].adders[25].in1[0] -3550,1521,main.pedersen.segments[0].adders[25].in1[1] -3551,1525,main.pedersen.segments[0].adders[25].in2[0] -3552,1526,main.pedersen.segments[0].adders[25].in2[1] -3553,1569,main.pedersen.segments[0].adders[25].out[0] -3554,1570,main.pedersen.segments[0].adders[25].out[1] -3555,1571,main.pedersen.segments[0].adders[25].lamda -3664,1569,main.pedersen.segments[0].adders[26].in1[0] -3665,1570,main.pedersen.segments[0].adders[26].in1[1] -3666,1574,main.pedersen.segments[0].adders[26].in2[0] -3667,1575,main.pedersen.segments[0].adders[26].in2[1] -3668,1618,main.pedersen.segments[0].adders[26].out[0] -3669,1619,main.pedersen.segments[0].adders[26].out[1] -3670,1620,main.pedersen.segments[0].adders[26].lamda -3779,1618,main.pedersen.segments[0].adders[27].in1[0] -3780,1619,main.pedersen.segments[0].adders[27].in1[1] -3781,1623,main.pedersen.segments[0].adders[27].in2[0] -3782,1624,main.pedersen.segments[0].adders[27].in2[1] -3783,1667,main.pedersen.segments[0].adders[27].out[0] -3784,1668,main.pedersen.segments[0].adders[27].out[1] -3785,1669,main.pedersen.segments[0].adders[27].lamda -3894,1667,main.pedersen.segments[0].adders[28].in1[0] -3895,1668,main.pedersen.segments[0].adders[28].in1[1] -3896,1672,main.pedersen.segments[0].adders[28].in2[0] -3897,1673,main.pedersen.segments[0].adders[28].in2[1] -3898,1716,main.pedersen.segments[0].adders[28].out[0] -3899,1717,main.pedersen.segments[0].adders[28].out[1] -3900,1718,main.pedersen.segments[0].adders[28].lamda -4009,1716,main.pedersen.segments[0].adders[29].in1[0] -4010,1717,main.pedersen.segments[0].adders[29].in1[1] -4011,1721,main.pedersen.segments[0].adders[29].in2[0] -4012,1722,main.pedersen.segments[0].adders[29].in2[1] -4013,1765,main.pedersen.segments[0].adders[29].out[0] -4014,1766,main.pedersen.segments[0].adders[29].out[1] -4015,1767,main.pedersen.segments[0].adders[29].lamda -4124,1765,main.pedersen.segments[0].adders[30].in1[0] -4125,1766,main.pedersen.segments[0].adders[30].in1[1] -4126,1770,main.pedersen.segments[0].adders[30].in2[0] -4127,1771,main.pedersen.segments[0].adders[30].in2[1] -4128,1814,main.pedersen.segments[0].adders[30].out[0] -4129,1815,main.pedersen.segments[0].adders[30].out[1] -4130,1816,main.pedersen.segments[0].adders[30].lamda -4239,1814,main.pedersen.segments[0].adders[31].in1[0] -4240,1815,main.pedersen.segments[0].adders[31].in1[1] -4241,1819,main.pedersen.segments[0].adders[31].in2[0] -4242,1820,main.pedersen.segments[0].adders[31].in2[1] -4243,1863,main.pedersen.segments[0].adders[31].out[0] -4244,1864,main.pedersen.segments[0].adders[31].out[1] -4245,1865,main.pedersen.segments[0].adders[31].lamda -4354,1863,main.pedersen.segments[0].adders[32].in1[0] -4355,1864,main.pedersen.segments[0].adders[32].in1[1] -4356,1868,main.pedersen.segments[0].adders[32].in2[0] -4357,1869,main.pedersen.segments[0].adders[32].in2[1] -4358,1912,main.pedersen.segments[0].adders[32].out[0] -4359,1913,main.pedersen.segments[0].adders[32].out[1] -4360,1914,main.pedersen.segments[0].adders[32].lamda -4469,1912,main.pedersen.segments[0].adders[33].in1[0] -4470,1913,main.pedersen.segments[0].adders[33].in1[1] -4471,1917,main.pedersen.segments[0].adders[33].in2[0] -4472,1918,main.pedersen.segments[0].adders[33].in2[1] -4473,1961,main.pedersen.segments[0].adders[33].out[0] -4474,1962,main.pedersen.segments[0].adders[33].out[1] -4475,1963,main.pedersen.segments[0].adders[33].lamda -4584,1961,main.pedersen.segments[0].adders[34].in1[0] -4585,1962,main.pedersen.segments[0].adders[34].in1[1] -4586,1966,main.pedersen.segments[0].adders[34].in2[0] -4587,1967,main.pedersen.segments[0].adders[34].in2[1] -4588,2010,main.pedersen.segments[0].adders[34].out[0] -4589,2011,main.pedersen.segments[0].adders[34].out[1] -4590,2012,main.pedersen.segments[0].adders[34].lamda -4699,2010,main.pedersen.segments[0].adders[35].in1[0] -4700,2011,main.pedersen.segments[0].adders[35].in1[1] -4701,2015,main.pedersen.segments[0].adders[35].in2[0] -4702,2016,main.pedersen.segments[0].adders[35].in2[1] -4703,2059,main.pedersen.segments[0].adders[35].out[0] -4704,2060,main.pedersen.segments[0].adders[35].out[1] -4705,2061,main.pedersen.segments[0].adders[35].lamda -4814,2059,main.pedersen.segments[0].adders[36].in1[0] -4815,2060,main.pedersen.segments[0].adders[36].in1[1] -4816,2064,main.pedersen.segments[0].adders[36].in2[0] -4817,2065,main.pedersen.segments[0].adders[36].in2[1] -4818,2108,main.pedersen.segments[0].adders[36].out[0] -4819,2109,main.pedersen.segments[0].adders[36].out[1] -4820,2110,main.pedersen.segments[0].adders[36].lamda -4929,2108,main.pedersen.segments[0].adders[37].in1[0] -4930,2109,main.pedersen.segments[0].adders[37].in1[1] -4931,2113,main.pedersen.segments[0].adders[37].in2[0] -4932,2114,main.pedersen.segments[0].adders[37].in2[1] -4933,2157,main.pedersen.segments[0].adders[37].out[0] -4934,2158,main.pedersen.segments[0].adders[37].out[1] -4935,2159,main.pedersen.segments[0].adders[37].lamda -5044,2157,main.pedersen.segments[0].adders[38].in1[0] -5045,2158,main.pedersen.segments[0].adders[38].in1[1] -5046,2162,main.pedersen.segments[0].adders[38].in2[0] -5047,2163,main.pedersen.segments[0].adders[38].in2[1] -5048,2206,main.pedersen.segments[0].adders[38].out[0] -5049,2207,main.pedersen.segments[0].adders[38].out[1] -5050,2208,main.pedersen.segments[0].adders[38].lamda -5159,2206,main.pedersen.segments[0].adders[39].in1[0] -5160,2207,main.pedersen.segments[0].adders[39].in1[1] -5161,2211,main.pedersen.segments[0].adders[39].in2[0] -5162,2212,main.pedersen.segments[0].adders[39].in2[1] -5163,2255,main.pedersen.segments[0].adders[39].out[0] -5164,2256,main.pedersen.segments[0].adders[39].out[1] -5165,2257,main.pedersen.segments[0].adders[39].lamda -5274,2255,main.pedersen.segments[0].adders[40].in1[0] -5275,2256,main.pedersen.segments[0].adders[40].in1[1] -5276,2260,main.pedersen.segments[0].adders[40].in2[0] -5277,2261,main.pedersen.segments[0].adders[40].in2[1] -5278,2304,main.pedersen.segments[0].adders[40].out[0] -5279,2305,main.pedersen.segments[0].adders[40].out[1] -5280,2306,main.pedersen.segments[0].adders[40].lamda -5389,2304,main.pedersen.segments[0].adders[41].in1[0] -5390,2305,main.pedersen.segments[0].adders[41].in1[1] -5391,2309,main.pedersen.segments[0].adders[41].in2[0] -5392,2310,main.pedersen.segments[0].adders[41].in2[1] -5393,2353,main.pedersen.segments[0].adders[41].out[0] -5394,2354,main.pedersen.segments[0].adders[41].out[1] -5395,2355,main.pedersen.segments[0].adders[41].lamda -5504,2353,main.pedersen.segments[0].adders[42].in1[0] -5505,2354,main.pedersen.segments[0].adders[42].in1[1] -5506,2358,main.pedersen.segments[0].adders[42].in2[0] -5507,2359,main.pedersen.segments[0].adders[42].in2[1] -5508,2402,main.pedersen.segments[0].adders[42].out[0] -5509,2403,main.pedersen.segments[0].adders[42].out[1] -5510,2404,main.pedersen.segments[0].adders[42].lamda -5619,2402,main.pedersen.segments[0].adders[43].in1[0] -5620,2403,main.pedersen.segments[0].adders[43].in1[1] -5621,2407,main.pedersen.segments[0].adders[43].in2[0] -5622,2408,main.pedersen.segments[0].adders[43].in2[1] -5623,2451,main.pedersen.segments[0].adders[43].out[0] -5624,2452,main.pedersen.segments[0].adders[43].out[1] -5625,2453,main.pedersen.segments[0].adders[43].lamda -5734,2451,main.pedersen.segments[0].adders[44].in1[0] -5735,2452,main.pedersen.segments[0].adders[44].in1[1] -5736,2456,main.pedersen.segments[0].adders[44].in2[0] -5737,2457,main.pedersen.segments[0].adders[44].in2[1] -5738,2500,main.pedersen.segments[0].adders[44].out[0] -5739,2501,main.pedersen.segments[0].adders[44].out[1] -5740,2502,main.pedersen.segments[0].adders[44].lamda -5849,2500,main.pedersen.segments[0].adders[45].in1[0] -5850,2501,main.pedersen.segments[0].adders[45].in1[1] -5851,2505,main.pedersen.segments[0].adders[45].in2[0] -5852,2506,main.pedersen.segments[0].adders[45].in2[1] -5853,2549,main.pedersen.segments[0].adders[45].out[0] -5854,2550,main.pedersen.segments[0].adders[45].out[1] -5855,2551,main.pedersen.segments[0].adders[45].lamda -5964,2549,main.pedersen.segments[0].adders[46].in1[0] -5965,2550,main.pedersen.segments[0].adders[46].in1[1] -5966,2554,main.pedersen.segments[0].adders[46].in2[0] -5967,2555,main.pedersen.segments[0].adders[46].in2[1] -5968,2598,main.pedersen.segments[0].adders[46].out[0] -5969,2599,main.pedersen.segments[0].adders[46].out[1] -5970,2600,main.pedersen.segments[0].adders[46].lamda -6079,2598,main.pedersen.segments[0].adders[47].in1[0] -6080,2599,main.pedersen.segments[0].adders[47].in1[1] -6081,2603,main.pedersen.segments[0].adders[47].in2[0] -6082,2604,main.pedersen.segments[0].adders[47].in2[1] -6083,2647,main.pedersen.segments[0].adders[47].out[0] -6084,2648,main.pedersen.segments[0].adders[47].out[1] -6085,2649,main.pedersen.segments[0].adders[47].lamda -6194,2647,main.pedersen.segments[0].adders[48].in1[0] -6195,2648,main.pedersen.segments[0].adders[48].in1[1] -6196,2652,main.pedersen.segments[0].adders[48].in2[0] -6197,2653,main.pedersen.segments[0].adders[48].in2[1] -6198,2696,main.pedersen.segments[0].adders[48].out[0] -6199,2697,main.pedersen.segments[0].adders[48].out[1] -6200,2698,main.pedersen.segments[0].adders[48].lamda -6201,2696,main.pedersen.segments[0].m2e.in[0] -6202,2697,main.pedersen.segments[0].m2e.in[1] -6203,256,main.pedersen.segments[0].m2e.out[0] -6204,257,main.pedersen.segments[0].m2e.out[1] -6205,203,main.pedersen.segments[1].in[0] -6206,204,main.pedersen.segments[1].in[1] -6207,205,main.pedersen.segments[1].in[2] -6208,206,main.pedersen.segments[1].in[3] -6209,207,main.pedersen.segments[1].in[4] -6210,208,main.pedersen.segments[1].in[5] -6211,209,main.pedersen.segments[1].in[6] -6212,210,main.pedersen.segments[1].in[7] -6213,211,main.pedersen.segments[1].in[8] -6214,212,main.pedersen.segments[1].in[9] -6215,213,main.pedersen.segments[1].in[10] -6216,214,main.pedersen.segments[1].in[11] -6217,215,main.pedersen.segments[1].in[12] -6218,216,main.pedersen.segments[1].in[13] -6219,217,main.pedersen.segments[1].in[14] -6220,218,main.pedersen.segments[1].in[15] -6221,219,main.pedersen.segments[1].in[16] -6222,220,main.pedersen.segments[1].in[17] -6223,221,main.pedersen.segments[1].in[18] -6224,222,main.pedersen.segments[1].in[19] -6225,223,main.pedersen.segments[1].in[20] -6226,224,main.pedersen.segments[1].in[21] -6227,225,main.pedersen.segments[1].in[22] -6228,226,main.pedersen.segments[1].in[23] -6229,227,main.pedersen.segments[1].in[24] -6230,228,main.pedersen.segments[1].in[25] -6231,229,main.pedersen.segments[1].in[26] -6232,230,main.pedersen.segments[1].in[27] -6233,231,main.pedersen.segments[1].in[28] -6234,232,main.pedersen.segments[1].in[29] -6235,233,main.pedersen.segments[1].in[30] -6236,234,main.pedersen.segments[1].in[31] -6237,235,main.pedersen.segments[1].in[32] -6238,236,main.pedersen.segments[1].in[33] -6239,237,main.pedersen.segments[1].in[34] -6240,238,main.pedersen.segments[1].in[35] -6241,239,main.pedersen.segments[1].in[36] -6242,240,main.pedersen.segments[1].in[37] -6243,241,main.pedersen.segments[1].in[38] -6244,242,main.pedersen.segments[1].in[39] -6245,243,main.pedersen.segments[1].in[40] -6246,244,main.pedersen.segments[1].in[41] -6247,245,main.pedersen.segments[1].in[42] -6248,246,main.pedersen.segments[1].in[43] -6249,247,main.pedersen.segments[1].in[44] -6250,248,main.pedersen.segments[1].in[45] -6251,249,main.pedersen.segments[1].in[46] -6252,250,main.pedersen.segments[1].in[47] -6253,251,main.pedersen.segments[1].in[48] -6254,252,main.pedersen.segments[1].in[49] -6255,253,main.pedersen.segments[1].in[50] -6256,254,main.pedersen.segments[1].in[51] -6257,255,main.pedersen.segments[1].in[52] -6258,3511,main.pedersen.segments[1].in[53] -6259,3512,main.pedersen.segments[1].in[54] -6260,3513,main.pedersen.segments[1].in[55] -6261,3516,main.pedersen.segments[1].base[0] -6262,3517,main.pedersen.segments[1].base[1] -6263,2699,main.pedersen.segments[1].out[0] -6264,2700,main.pedersen.segments[1].out[1] -6265,3516,main.pedersen.segments[1].e2m.in[0] -6266,3517,main.pedersen.segments[1].e2m.in[1] -6267,3483,main.pedersen.segments[1].e2m.out[0] -6268,3484,main.pedersen.segments[1].e2m.out[1] -6269,203,main.pedersen.segments[1].windows[0].in[0] -6270,204,main.pedersen.segments[1].windows[0].in[1] -6271,205,main.pedersen.segments[1].windows[0].in[2] -6272,206,main.pedersen.segments[1].windows[0].in[3] -6273,3483,main.pedersen.segments[1].windows[0].base[0] -6274,3484,main.pedersen.segments[1].windows[0].base[1] -6275,2701,main.pedersen.segments[1].windows[0].out[0] -6276,2702,main.pedersen.segments[1].windows[0].out[1] -6277,2703,main.pedersen.segments[1].windows[0].out8[0] -6278,2704,main.pedersen.segments[1].windows[0].out8[1] -6279,3483,main.pedersen.segments[1].windows[0].mux.c[0][0] -6280,2705,main.pedersen.segments[1].windows[0].mux.c[0][1] -6281,2706,main.pedersen.segments[1].windows[0].mux.c[0][2] -6282,2707,main.pedersen.segments[1].windows[0].mux.c[0][3] -6283,2708,main.pedersen.segments[1].windows[0].mux.c[0][4] -6284,2709,main.pedersen.segments[1].windows[0].mux.c[0][5] -6285,2710,main.pedersen.segments[1].windows[0].mux.c[0][6] -6286,2703,main.pedersen.segments[1].windows[0].mux.c[0][7] -6287,3484,main.pedersen.segments[1].windows[0].mux.c[1][0] -6288,2711,main.pedersen.segments[1].windows[0].mux.c[1][1] -6289,2712,main.pedersen.segments[1].windows[0].mux.c[1][2] -6290,2713,main.pedersen.segments[1].windows[0].mux.c[1][3] -6291,2714,main.pedersen.segments[1].windows[0].mux.c[1][4] -6292,2715,main.pedersen.segments[1].windows[0].mux.c[1][5] -6293,2716,main.pedersen.segments[1].windows[0].mux.c[1][6] -6294,2704,main.pedersen.segments[1].windows[0].mux.c[1][7] -6295,203,main.pedersen.segments[1].windows[0].mux.s[0] -6296,204,main.pedersen.segments[1].windows[0].mux.s[1] -6297,205,main.pedersen.segments[1].windows[0].mux.s[2] -6298,2701,main.pedersen.segments[1].windows[0].mux.out[0] -6299,2717,main.pedersen.segments[1].windows[0].mux.out[1] -6300,2718,main.pedersen.segments[1].windows[0].mux.a210[0] -6301,2719,main.pedersen.segments[1].windows[0].mux.a210[1] -6302,2720,main.pedersen.segments[1].windows[0].mux.a21[0] -6303,2721,main.pedersen.segments[1].windows[0].mux.a21[1] -6304,2722,main.pedersen.segments[1].windows[0].mux.a20[0] -6305,2723,main.pedersen.segments[1].windows[0].mux.a20[1] -6306,2724,main.pedersen.segments[1].windows[0].mux.a2[0] -6307,2725,main.pedersen.segments[1].windows[0].mux.a2[1] -6308,2726,main.pedersen.segments[1].windows[0].mux.a10[0] -6309,2727,main.pedersen.segments[1].windows[0].mux.a10[1] -6310,2728,main.pedersen.segments[1].windows[0].mux.a1[0] -6311,2729,main.pedersen.segments[1].windows[0].mux.a1[1] -6312,2730,main.pedersen.segments[1].windows[0].mux.a0[0] -6313,2731,main.pedersen.segments[1].windows[0].mux.a0[1] -6314,3483,main.pedersen.segments[1].windows[0].mux.a[0] -6315,3484,main.pedersen.segments[1].windows[0].mux.a[1] -6316,2732,main.pedersen.segments[1].windows[0].mux.s10 -6317,3483,main.pedersen.segments[1].windows[0].dbl2.in[0] -6318,3484,main.pedersen.segments[1].windows[0].dbl2.in[1] -6319,2705,main.pedersen.segments[1].windows[0].dbl2.out[0] -6320,2711,main.pedersen.segments[1].windows[0].dbl2.out[1] -6321,2733,main.pedersen.segments[1].windows[0].dbl2.lamda -6322,2734,main.pedersen.segments[1].windows[0].dbl2.x1_2 -6323,3483,main.pedersen.segments[1].windows[0].adr3.in1[0] -6324,3484,main.pedersen.segments[1].windows[0].adr3.in1[1] -6325,2705,main.pedersen.segments[1].windows[0].adr3.in2[0] -6326,2711,main.pedersen.segments[1].windows[0].adr3.in2[1] -6327,2706,main.pedersen.segments[1].windows[0].adr3.out[0] -6328,2712,main.pedersen.segments[1].windows[0].adr3.out[1] -6329,2735,main.pedersen.segments[1].windows[0].adr3.lamda -6330,3483,main.pedersen.segments[1].windows[0].adr4.in1[0] -6331,3484,main.pedersen.segments[1].windows[0].adr4.in1[1] -6332,2706,main.pedersen.segments[1].windows[0].adr4.in2[0] -6333,2712,main.pedersen.segments[1].windows[0].adr4.in2[1] -6334,2707,main.pedersen.segments[1].windows[0].adr4.out[0] -6335,2713,main.pedersen.segments[1].windows[0].adr4.out[1] -6336,2736,main.pedersen.segments[1].windows[0].adr4.lamda -6337,3483,main.pedersen.segments[1].windows[0].adr5.in1[0] -6338,3484,main.pedersen.segments[1].windows[0].adr5.in1[1] -6339,2707,main.pedersen.segments[1].windows[0].adr5.in2[0] -6340,2713,main.pedersen.segments[1].windows[0].adr5.in2[1] -6341,2708,main.pedersen.segments[1].windows[0].adr5.out[0] -6342,2714,main.pedersen.segments[1].windows[0].adr5.out[1] -6343,2737,main.pedersen.segments[1].windows[0].adr5.lamda -6344,3483,main.pedersen.segments[1].windows[0].adr6.in1[0] -6345,3484,main.pedersen.segments[1].windows[0].adr6.in1[1] -6346,2708,main.pedersen.segments[1].windows[0].adr6.in2[0] -6347,2714,main.pedersen.segments[1].windows[0].adr6.in2[1] -6348,2709,main.pedersen.segments[1].windows[0].adr6.out[0] -6349,2715,main.pedersen.segments[1].windows[0].adr6.out[1] -6350,2738,main.pedersen.segments[1].windows[0].adr6.lamda -6351,3483,main.pedersen.segments[1].windows[0].adr7.in1[0] -6352,3484,main.pedersen.segments[1].windows[0].adr7.in1[1] -6353,2709,main.pedersen.segments[1].windows[0].adr7.in2[0] -6354,2715,main.pedersen.segments[1].windows[0].adr7.in2[1] -6355,2710,main.pedersen.segments[1].windows[0].adr7.out[0] -6356,2716,main.pedersen.segments[1].windows[0].adr7.out[1] -6357,2739,main.pedersen.segments[1].windows[0].adr7.lamda -6358,3483,main.pedersen.segments[1].windows[0].adr8.in1[0] -6359,3484,main.pedersen.segments[1].windows[0].adr8.in1[1] -6360,2710,main.pedersen.segments[1].windows[0].adr8.in2[0] -6361,2716,main.pedersen.segments[1].windows[0].adr8.in2[1] -6362,2703,main.pedersen.segments[1].windows[0].adr8.out[0] -6363,2704,main.pedersen.segments[1].windows[0].adr8.out[1] -6364,2740,main.pedersen.segments[1].windows[0].adr8.lamda -6365,207,main.pedersen.segments[1].windows[1].in[0] -6366,208,main.pedersen.segments[1].windows[1].in[1] -6367,209,main.pedersen.segments[1].windows[1].in[2] -6368,210,main.pedersen.segments[1].windows[1].in[3] -6369,2741,main.pedersen.segments[1].windows[1].base[0] -6370,2742,main.pedersen.segments[1].windows[1].base[1] -6371,2743,main.pedersen.segments[1].windows[1].out[0] -6372,2744,main.pedersen.segments[1].windows[1].out[1] -6373,2745,main.pedersen.segments[1].windows[1].out8[0] -6374,2746,main.pedersen.segments[1].windows[1].out8[1] -6375,2741,main.pedersen.segments[1].windows[1].mux.c[0][0] -6376,2747,main.pedersen.segments[1].windows[1].mux.c[0][1] -6377,2748,main.pedersen.segments[1].windows[1].mux.c[0][2] -6378,2749,main.pedersen.segments[1].windows[1].mux.c[0][3] -6379,2750,main.pedersen.segments[1].windows[1].mux.c[0][4] -6380,2751,main.pedersen.segments[1].windows[1].mux.c[0][5] -6381,2752,main.pedersen.segments[1].windows[1].mux.c[0][6] -6382,2745,main.pedersen.segments[1].windows[1].mux.c[0][7] -6383,2742,main.pedersen.segments[1].windows[1].mux.c[1][0] -6384,2753,main.pedersen.segments[1].windows[1].mux.c[1][1] -6385,2754,main.pedersen.segments[1].windows[1].mux.c[1][2] -6386,2755,main.pedersen.segments[1].windows[1].mux.c[1][3] -6387,2756,main.pedersen.segments[1].windows[1].mux.c[1][4] -6388,2757,main.pedersen.segments[1].windows[1].mux.c[1][5] -6389,2758,main.pedersen.segments[1].windows[1].mux.c[1][6] -6390,2746,main.pedersen.segments[1].windows[1].mux.c[1][7] -6391,207,main.pedersen.segments[1].windows[1].mux.s[0] -6392,208,main.pedersen.segments[1].windows[1].mux.s[1] -6393,209,main.pedersen.segments[1].windows[1].mux.s[2] -6394,2743,main.pedersen.segments[1].windows[1].mux.out[0] -6395,2759,main.pedersen.segments[1].windows[1].mux.out[1] -6396,2760,main.pedersen.segments[1].windows[1].mux.a210[0] -6397,2761,main.pedersen.segments[1].windows[1].mux.a210[1] -6398,2762,main.pedersen.segments[1].windows[1].mux.a21[0] -6399,2763,main.pedersen.segments[1].windows[1].mux.a21[1] -6400,2764,main.pedersen.segments[1].windows[1].mux.a20[0] -6401,2765,main.pedersen.segments[1].windows[1].mux.a20[1] -6402,3485,main.pedersen.segments[1].windows[1].mux.a2[0] -6403,3486,main.pedersen.segments[1].windows[1].mux.a2[1] -6404,2766,main.pedersen.segments[1].windows[1].mux.a10[0] -6405,2767,main.pedersen.segments[1].windows[1].mux.a10[1] -6406,2768,main.pedersen.segments[1].windows[1].mux.a1[0] -6407,2769,main.pedersen.segments[1].windows[1].mux.a1[1] -6408,2770,main.pedersen.segments[1].windows[1].mux.a0[0] -6409,2771,main.pedersen.segments[1].windows[1].mux.a0[1] -6410,2741,main.pedersen.segments[1].windows[1].mux.a[0] -6411,2742,main.pedersen.segments[1].windows[1].mux.a[1] -6412,2772,main.pedersen.segments[1].windows[1].mux.s10 -6413,2741,main.pedersen.segments[1].windows[1].dbl2.in[0] -6414,2742,main.pedersen.segments[1].windows[1].dbl2.in[1] -6415,2747,main.pedersen.segments[1].windows[1].dbl2.out[0] -6416,2753,main.pedersen.segments[1].windows[1].dbl2.out[1] -6417,2773,main.pedersen.segments[1].windows[1].dbl2.lamda -6418,2774,main.pedersen.segments[1].windows[1].dbl2.x1_2 -6419,2741,main.pedersen.segments[1].windows[1].adr3.in1[0] -6420,2742,main.pedersen.segments[1].windows[1].adr3.in1[1] -6421,2747,main.pedersen.segments[1].windows[1].adr3.in2[0] -6422,2753,main.pedersen.segments[1].windows[1].adr3.in2[1] -6423,2748,main.pedersen.segments[1].windows[1].adr3.out[0] -6424,2754,main.pedersen.segments[1].windows[1].adr3.out[1] -6425,2775,main.pedersen.segments[1].windows[1].adr3.lamda -6426,2741,main.pedersen.segments[1].windows[1].adr4.in1[0] -6427,2742,main.pedersen.segments[1].windows[1].adr4.in1[1] -6428,2748,main.pedersen.segments[1].windows[1].adr4.in2[0] -6429,2754,main.pedersen.segments[1].windows[1].adr4.in2[1] -6430,2749,main.pedersen.segments[1].windows[1].adr4.out[0] -6431,2755,main.pedersen.segments[1].windows[1].adr4.out[1] -6432,2776,main.pedersen.segments[1].windows[1].adr4.lamda -6433,2741,main.pedersen.segments[1].windows[1].adr5.in1[0] -6434,2742,main.pedersen.segments[1].windows[1].adr5.in1[1] -6435,2749,main.pedersen.segments[1].windows[1].adr5.in2[0] -6436,2755,main.pedersen.segments[1].windows[1].adr5.in2[1] -6437,2750,main.pedersen.segments[1].windows[1].adr5.out[0] -6438,2756,main.pedersen.segments[1].windows[1].adr5.out[1] -6439,2777,main.pedersen.segments[1].windows[1].adr5.lamda -6440,2741,main.pedersen.segments[1].windows[1].adr6.in1[0] -6441,2742,main.pedersen.segments[1].windows[1].adr6.in1[1] -6442,2750,main.pedersen.segments[1].windows[1].adr6.in2[0] -6443,2756,main.pedersen.segments[1].windows[1].adr6.in2[1] -6444,2751,main.pedersen.segments[1].windows[1].adr6.out[0] -6445,2757,main.pedersen.segments[1].windows[1].adr6.out[1] -6446,2778,main.pedersen.segments[1].windows[1].adr6.lamda -6447,2741,main.pedersen.segments[1].windows[1].adr7.in1[0] -6448,2742,main.pedersen.segments[1].windows[1].adr7.in1[1] -6449,2751,main.pedersen.segments[1].windows[1].adr7.in2[0] -6450,2757,main.pedersen.segments[1].windows[1].adr7.in2[1] -6451,2752,main.pedersen.segments[1].windows[1].adr7.out[0] -6452,2758,main.pedersen.segments[1].windows[1].adr7.out[1] -6453,2779,main.pedersen.segments[1].windows[1].adr7.lamda -6454,2741,main.pedersen.segments[1].windows[1].adr8.in1[0] -6455,2742,main.pedersen.segments[1].windows[1].adr8.in1[1] -6456,2752,main.pedersen.segments[1].windows[1].adr8.in2[0] -6457,2758,main.pedersen.segments[1].windows[1].adr8.in2[1] -6458,2745,main.pedersen.segments[1].windows[1].adr8.out[0] -6459,2746,main.pedersen.segments[1].windows[1].adr8.out[1] -6460,2780,main.pedersen.segments[1].windows[1].adr8.lamda -6480,211,main.pedersen.segments[1].windows[2].in[0] -6481,212,main.pedersen.segments[1].windows[2].in[1] -6482,213,main.pedersen.segments[1].windows[2].in[2] -6483,214,main.pedersen.segments[1].windows[2].in[3] -6484,2790,main.pedersen.segments[1].windows[2].base[0] -6485,2791,main.pedersen.segments[1].windows[2].base[1] -6486,2792,main.pedersen.segments[1].windows[2].out[0] -6487,2793,main.pedersen.segments[1].windows[2].out[1] -6488,2794,main.pedersen.segments[1].windows[2].out8[0] -6489,2795,main.pedersen.segments[1].windows[2].out8[1] -6490,2790,main.pedersen.segments[1].windows[2].mux.c[0][0] -6491,2796,main.pedersen.segments[1].windows[2].mux.c[0][1] -6492,2797,main.pedersen.segments[1].windows[2].mux.c[0][2] -6493,2798,main.pedersen.segments[1].windows[2].mux.c[0][3] -6494,2799,main.pedersen.segments[1].windows[2].mux.c[0][4] -6495,2800,main.pedersen.segments[1].windows[2].mux.c[0][5] -6496,2801,main.pedersen.segments[1].windows[2].mux.c[0][6] -6497,2794,main.pedersen.segments[1].windows[2].mux.c[0][7] -6498,2791,main.pedersen.segments[1].windows[2].mux.c[1][0] -6499,2802,main.pedersen.segments[1].windows[2].mux.c[1][1] -6500,2803,main.pedersen.segments[1].windows[2].mux.c[1][2] -6501,2804,main.pedersen.segments[1].windows[2].mux.c[1][3] -6502,2805,main.pedersen.segments[1].windows[2].mux.c[1][4] -6503,2806,main.pedersen.segments[1].windows[2].mux.c[1][5] -6504,2807,main.pedersen.segments[1].windows[2].mux.c[1][6] -6505,2795,main.pedersen.segments[1].windows[2].mux.c[1][7] -6506,211,main.pedersen.segments[1].windows[2].mux.s[0] -6507,212,main.pedersen.segments[1].windows[2].mux.s[1] -6508,213,main.pedersen.segments[1].windows[2].mux.s[2] -6509,2792,main.pedersen.segments[1].windows[2].mux.out[0] -6510,2808,main.pedersen.segments[1].windows[2].mux.out[1] -6511,2809,main.pedersen.segments[1].windows[2].mux.a210[0] -6512,2810,main.pedersen.segments[1].windows[2].mux.a210[1] -6513,2811,main.pedersen.segments[1].windows[2].mux.a21[0] -6514,2812,main.pedersen.segments[1].windows[2].mux.a21[1] -6515,2813,main.pedersen.segments[1].windows[2].mux.a20[0] -6516,2814,main.pedersen.segments[1].windows[2].mux.a20[1] -6517,3487,main.pedersen.segments[1].windows[2].mux.a2[0] -6518,3488,main.pedersen.segments[1].windows[2].mux.a2[1] -6519,2815,main.pedersen.segments[1].windows[2].mux.a10[0] -6520,2816,main.pedersen.segments[1].windows[2].mux.a10[1] -6521,2817,main.pedersen.segments[1].windows[2].mux.a1[0] -6522,2818,main.pedersen.segments[1].windows[2].mux.a1[1] -6523,2819,main.pedersen.segments[1].windows[2].mux.a0[0] -6524,2820,main.pedersen.segments[1].windows[2].mux.a0[1] -6525,2790,main.pedersen.segments[1].windows[2].mux.a[0] -6526,2791,main.pedersen.segments[1].windows[2].mux.a[1] -6527,2821,main.pedersen.segments[1].windows[2].mux.s10 -6528,2790,main.pedersen.segments[1].windows[2].dbl2.in[0] -6529,2791,main.pedersen.segments[1].windows[2].dbl2.in[1] -6530,2796,main.pedersen.segments[1].windows[2].dbl2.out[0] -6531,2802,main.pedersen.segments[1].windows[2].dbl2.out[1] -6532,2822,main.pedersen.segments[1].windows[2].dbl2.lamda -6533,2823,main.pedersen.segments[1].windows[2].dbl2.x1_2 -6534,2790,main.pedersen.segments[1].windows[2].adr3.in1[0] -6535,2791,main.pedersen.segments[1].windows[2].adr3.in1[1] -6536,2796,main.pedersen.segments[1].windows[2].adr3.in2[0] -6537,2802,main.pedersen.segments[1].windows[2].adr3.in2[1] -6538,2797,main.pedersen.segments[1].windows[2].adr3.out[0] -6539,2803,main.pedersen.segments[1].windows[2].adr3.out[1] -6540,2824,main.pedersen.segments[1].windows[2].adr3.lamda -6541,2790,main.pedersen.segments[1].windows[2].adr4.in1[0] -6542,2791,main.pedersen.segments[1].windows[2].adr4.in1[1] -6543,2797,main.pedersen.segments[1].windows[2].adr4.in2[0] -6544,2803,main.pedersen.segments[1].windows[2].adr4.in2[1] -6545,2798,main.pedersen.segments[1].windows[2].adr4.out[0] -6546,2804,main.pedersen.segments[1].windows[2].adr4.out[1] -6547,2825,main.pedersen.segments[1].windows[2].adr4.lamda -6548,2790,main.pedersen.segments[1].windows[2].adr5.in1[0] -6549,2791,main.pedersen.segments[1].windows[2].adr5.in1[1] -6550,2798,main.pedersen.segments[1].windows[2].adr5.in2[0] -6551,2804,main.pedersen.segments[1].windows[2].adr5.in2[1] -6552,2799,main.pedersen.segments[1].windows[2].adr5.out[0] -6553,2805,main.pedersen.segments[1].windows[2].adr5.out[1] -6554,2826,main.pedersen.segments[1].windows[2].adr5.lamda -6555,2790,main.pedersen.segments[1].windows[2].adr6.in1[0] -6556,2791,main.pedersen.segments[1].windows[2].adr6.in1[1] -6557,2799,main.pedersen.segments[1].windows[2].adr6.in2[0] -6558,2805,main.pedersen.segments[1].windows[2].adr6.in2[1] -6559,2800,main.pedersen.segments[1].windows[2].adr6.out[0] -6560,2806,main.pedersen.segments[1].windows[2].adr6.out[1] -6561,2827,main.pedersen.segments[1].windows[2].adr6.lamda -6562,2790,main.pedersen.segments[1].windows[2].adr7.in1[0] -6563,2791,main.pedersen.segments[1].windows[2].adr7.in1[1] -6564,2800,main.pedersen.segments[1].windows[2].adr7.in2[0] -6565,2806,main.pedersen.segments[1].windows[2].adr7.in2[1] -6566,2801,main.pedersen.segments[1].windows[2].adr7.out[0] -6567,2807,main.pedersen.segments[1].windows[2].adr7.out[1] -6568,2828,main.pedersen.segments[1].windows[2].adr7.lamda -6569,2790,main.pedersen.segments[1].windows[2].adr8.in1[0] -6570,2791,main.pedersen.segments[1].windows[2].adr8.in1[1] -6571,2801,main.pedersen.segments[1].windows[2].adr8.in2[0] -6572,2807,main.pedersen.segments[1].windows[2].adr8.in2[1] -6573,2794,main.pedersen.segments[1].windows[2].adr8.out[0] -6574,2795,main.pedersen.segments[1].windows[2].adr8.out[1] -6575,2829,main.pedersen.segments[1].windows[2].adr8.lamda -6595,215,main.pedersen.segments[1].windows[3].in[0] -6596,216,main.pedersen.segments[1].windows[3].in[1] -6597,217,main.pedersen.segments[1].windows[3].in[2] -6598,218,main.pedersen.segments[1].windows[3].in[3] -6599,2839,main.pedersen.segments[1].windows[3].base[0] -6600,2840,main.pedersen.segments[1].windows[3].base[1] -6601,2841,main.pedersen.segments[1].windows[3].out[0] -6602,2842,main.pedersen.segments[1].windows[3].out[1] -6603,2843,main.pedersen.segments[1].windows[3].out8[0] -6604,2844,main.pedersen.segments[1].windows[3].out8[1] -6605,2839,main.pedersen.segments[1].windows[3].mux.c[0][0] -6606,2845,main.pedersen.segments[1].windows[3].mux.c[0][1] -6607,2846,main.pedersen.segments[1].windows[3].mux.c[0][2] -6608,2847,main.pedersen.segments[1].windows[3].mux.c[0][3] -6609,2848,main.pedersen.segments[1].windows[3].mux.c[0][4] -6610,2849,main.pedersen.segments[1].windows[3].mux.c[0][5] -6611,2850,main.pedersen.segments[1].windows[3].mux.c[0][6] -6612,2843,main.pedersen.segments[1].windows[3].mux.c[0][7] -6613,2840,main.pedersen.segments[1].windows[3].mux.c[1][0] -6614,2851,main.pedersen.segments[1].windows[3].mux.c[1][1] -6615,2852,main.pedersen.segments[1].windows[3].mux.c[1][2] -6616,2853,main.pedersen.segments[1].windows[3].mux.c[1][3] -6617,2854,main.pedersen.segments[1].windows[3].mux.c[1][4] -6618,2855,main.pedersen.segments[1].windows[3].mux.c[1][5] -6619,2856,main.pedersen.segments[1].windows[3].mux.c[1][6] -6620,2844,main.pedersen.segments[1].windows[3].mux.c[1][7] -6621,215,main.pedersen.segments[1].windows[3].mux.s[0] -6622,216,main.pedersen.segments[1].windows[3].mux.s[1] -6623,217,main.pedersen.segments[1].windows[3].mux.s[2] -6624,2841,main.pedersen.segments[1].windows[3].mux.out[0] -6625,2857,main.pedersen.segments[1].windows[3].mux.out[1] -6626,2858,main.pedersen.segments[1].windows[3].mux.a210[0] -6627,2859,main.pedersen.segments[1].windows[3].mux.a210[1] -6628,2860,main.pedersen.segments[1].windows[3].mux.a21[0] -6629,2861,main.pedersen.segments[1].windows[3].mux.a21[1] -6630,2862,main.pedersen.segments[1].windows[3].mux.a20[0] -6631,2863,main.pedersen.segments[1].windows[3].mux.a20[1] -6632,3489,main.pedersen.segments[1].windows[3].mux.a2[0] -6633,3490,main.pedersen.segments[1].windows[3].mux.a2[1] -6634,2864,main.pedersen.segments[1].windows[3].mux.a10[0] -6635,2865,main.pedersen.segments[1].windows[3].mux.a10[1] -6636,2866,main.pedersen.segments[1].windows[3].mux.a1[0] -6637,2867,main.pedersen.segments[1].windows[3].mux.a1[1] -6638,2868,main.pedersen.segments[1].windows[3].mux.a0[0] -6639,2869,main.pedersen.segments[1].windows[3].mux.a0[1] -6640,2839,main.pedersen.segments[1].windows[3].mux.a[0] -6641,2840,main.pedersen.segments[1].windows[3].mux.a[1] -6642,2870,main.pedersen.segments[1].windows[3].mux.s10 -6643,2839,main.pedersen.segments[1].windows[3].dbl2.in[0] -6644,2840,main.pedersen.segments[1].windows[3].dbl2.in[1] -6645,2845,main.pedersen.segments[1].windows[3].dbl2.out[0] -6646,2851,main.pedersen.segments[1].windows[3].dbl2.out[1] -6647,2871,main.pedersen.segments[1].windows[3].dbl2.lamda -6648,2872,main.pedersen.segments[1].windows[3].dbl2.x1_2 -6649,2839,main.pedersen.segments[1].windows[3].adr3.in1[0] -6650,2840,main.pedersen.segments[1].windows[3].adr3.in1[1] -6651,2845,main.pedersen.segments[1].windows[3].adr3.in2[0] -6652,2851,main.pedersen.segments[1].windows[3].adr3.in2[1] -6653,2846,main.pedersen.segments[1].windows[3].adr3.out[0] -6654,2852,main.pedersen.segments[1].windows[3].adr3.out[1] -6655,2873,main.pedersen.segments[1].windows[3].adr3.lamda -6656,2839,main.pedersen.segments[1].windows[3].adr4.in1[0] -6657,2840,main.pedersen.segments[1].windows[3].adr4.in1[1] -6658,2846,main.pedersen.segments[1].windows[3].adr4.in2[0] -6659,2852,main.pedersen.segments[1].windows[3].adr4.in2[1] -6660,2847,main.pedersen.segments[1].windows[3].adr4.out[0] -6661,2853,main.pedersen.segments[1].windows[3].adr4.out[1] -6662,2874,main.pedersen.segments[1].windows[3].adr4.lamda -6663,2839,main.pedersen.segments[1].windows[3].adr5.in1[0] -6664,2840,main.pedersen.segments[1].windows[3].adr5.in1[1] -6665,2847,main.pedersen.segments[1].windows[3].adr5.in2[0] -6666,2853,main.pedersen.segments[1].windows[3].adr5.in2[1] -6667,2848,main.pedersen.segments[1].windows[3].adr5.out[0] -6668,2854,main.pedersen.segments[1].windows[3].adr5.out[1] -6669,2875,main.pedersen.segments[1].windows[3].adr5.lamda -6670,2839,main.pedersen.segments[1].windows[3].adr6.in1[0] -6671,2840,main.pedersen.segments[1].windows[3].adr6.in1[1] -6672,2848,main.pedersen.segments[1].windows[3].adr6.in2[0] -6673,2854,main.pedersen.segments[1].windows[3].adr6.in2[1] -6674,2849,main.pedersen.segments[1].windows[3].adr6.out[0] -6675,2855,main.pedersen.segments[1].windows[3].adr6.out[1] -6676,2876,main.pedersen.segments[1].windows[3].adr6.lamda -6677,2839,main.pedersen.segments[1].windows[3].adr7.in1[0] -6678,2840,main.pedersen.segments[1].windows[3].adr7.in1[1] -6679,2849,main.pedersen.segments[1].windows[3].adr7.in2[0] -6680,2855,main.pedersen.segments[1].windows[3].adr7.in2[1] -6681,2850,main.pedersen.segments[1].windows[3].adr7.out[0] -6682,2856,main.pedersen.segments[1].windows[3].adr7.out[1] -6683,2877,main.pedersen.segments[1].windows[3].adr7.lamda -6684,2839,main.pedersen.segments[1].windows[3].adr8.in1[0] -6685,2840,main.pedersen.segments[1].windows[3].adr8.in1[1] -6686,2850,main.pedersen.segments[1].windows[3].adr8.in2[0] -6687,2856,main.pedersen.segments[1].windows[3].adr8.in2[1] -6688,2843,main.pedersen.segments[1].windows[3].adr8.out[0] -6689,2844,main.pedersen.segments[1].windows[3].adr8.out[1] -6690,2878,main.pedersen.segments[1].windows[3].adr8.lamda -6710,219,main.pedersen.segments[1].windows[4].in[0] -6711,220,main.pedersen.segments[1].windows[4].in[1] -6712,221,main.pedersen.segments[1].windows[4].in[2] -6713,222,main.pedersen.segments[1].windows[4].in[3] -6714,2888,main.pedersen.segments[1].windows[4].base[0] -6715,2889,main.pedersen.segments[1].windows[4].base[1] -6716,2890,main.pedersen.segments[1].windows[4].out[0] -6717,2891,main.pedersen.segments[1].windows[4].out[1] -6718,2892,main.pedersen.segments[1].windows[4].out8[0] -6719,2893,main.pedersen.segments[1].windows[4].out8[1] -6720,2888,main.pedersen.segments[1].windows[4].mux.c[0][0] -6721,2894,main.pedersen.segments[1].windows[4].mux.c[0][1] -6722,2895,main.pedersen.segments[1].windows[4].mux.c[0][2] -6723,2896,main.pedersen.segments[1].windows[4].mux.c[0][3] -6724,2897,main.pedersen.segments[1].windows[4].mux.c[0][4] -6725,2898,main.pedersen.segments[1].windows[4].mux.c[0][5] -6726,2899,main.pedersen.segments[1].windows[4].mux.c[0][6] -6727,2892,main.pedersen.segments[1].windows[4].mux.c[0][7] -6728,2889,main.pedersen.segments[1].windows[4].mux.c[1][0] -6729,2900,main.pedersen.segments[1].windows[4].mux.c[1][1] -6730,2901,main.pedersen.segments[1].windows[4].mux.c[1][2] -6731,2902,main.pedersen.segments[1].windows[4].mux.c[1][3] -6732,2903,main.pedersen.segments[1].windows[4].mux.c[1][4] -6733,2904,main.pedersen.segments[1].windows[4].mux.c[1][5] -6734,2905,main.pedersen.segments[1].windows[4].mux.c[1][6] -6735,2893,main.pedersen.segments[1].windows[4].mux.c[1][7] -6736,219,main.pedersen.segments[1].windows[4].mux.s[0] -6737,220,main.pedersen.segments[1].windows[4].mux.s[1] -6738,221,main.pedersen.segments[1].windows[4].mux.s[2] -6739,2890,main.pedersen.segments[1].windows[4].mux.out[0] -6740,2906,main.pedersen.segments[1].windows[4].mux.out[1] -6741,2907,main.pedersen.segments[1].windows[4].mux.a210[0] -6742,2908,main.pedersen.segments[1].windows[4].mux.a210[1] -6743,2909,main.pedersen.segments[1].windows[4].mux.a21[0] -6744,2910,main.pedersen.segments[1].windows[4].mux.a21[1] -6745,2911,main.pedersen.segments[1].windows[4].mux.a20[0] -6746,2912,main.pedersen.segments[1].windows[4].mux.a20[1] -6747,3491,main.pedersen.segments[1].windows[4].mux.a2[0] -6748,3492,main.pedersen.segments[1].windows[4].mux.a2[1] -6749,2913,main.pedersen.segments[1].windows[4].mux.a10[0] -6750,2914,main.pedersen.segments[1].windows[4].mux.a10[1] -6751,2915,main.pedersen.segments[1].windows[4].mux.a1[0] -6752,2916,main.pedersen.segments[1].windows[4].mux.a1[1] -6753,2917,main.pedersen.segments[1].windows[4].mux.a0[0] -6754,2918,main.pedersen.segments[1].windows[4].mux.a0[1] -6755,2888,main.pedersen.segments[1].windows[4].mux.a[0] -6756,2889,main.pedersen.segments[1].windows[4].mux.a[1] -6757,2919,main.pedersen.segments[1].windows[4].mux.s10 -6758,2888,main.pedersen.segments[1].windows[4].dbl2.in[0] -6759,2889,main.pedersen.segments[1].windows[4].dbl2.in[1] -6760,2894,main.pedersen.segments[1].windows[4].dbl2.out[0] -6761,2900,main.pedersen.segments[1].windows[4].dbl2.out[1] -6762,2920,main.pedersen.segments[1].windows[4].dbl2.lamda -6763,2921,main.pedersen.segments[1].windows[4].dbl2.x1_2 -6764,2888,main.pedersen.segments[1].windows[4].adr3.in1[0] -6765,2889,main.pedersen.segments[1].windows[4].adr3.in1[1] -6766,2894,main.pedersen.segments[1].windows[4].adr3.in2[0] -6767,2900,main.pedersen.segments[1].windows[4].adr3.in2[1] -6768,2895,main.pedersen.segments[1].windows[4].adr3.out[0] -6769,2901,main.pedersen.segments[1].windows[4].adr3.out[1] -6770,2922,main.pedersen.segments[1].windows[4].adr3.lamda -6771,2888,main.pedersen.segments[1].windows[4].adr4.in1[0] -6772,2889,main.pedersen.segments[1].windows[4].adr4.in1[1] -6773,2895,main.pedersen.segments[1].windows[4].adr4.in2[0] -6774,2901,main.pedersen.segments[1].windows[4].adr4.in2[1] -6775,2896,main.pedersen.segments[1].windows[4].adr4.out[0] -6776,2902,main.pedersen.segments[1].windows[4].adr4.out[1] -6777,2923,main.pedersen.segments[1].windows[4].adr4.lamda -6778,2888,main.pedersen.segments[1].windows[4].adr5.in1[0] -6779,2889,main.pedersen.segments[1].windows[4].adr5.in1[1] -6780,2896,main.pedersen.segments[1].windows[4].adr5.in2[0] -6781,2902,main.pedersen.segments[1].windows[4].adr5.in2[1] -6782,2897,main.pedersen.segments[1].windows[4].adr5.out[0] -6783,2903,main.pedersen.segments[1].windows[4].adr5.out[1] -6784,2924,main.pedersen.segments[1].windows[4].adr5.lamda -6785,2888,main.pedersen.segments[1].windows[4].adr6.in1[0] -6786,2889,main.pedersen.segments[1].windows[4].adr6.in1[1] -6787,2897,main.pedersen.segments[1].windows[4].adr6.in2[0] -6788,2903,main.pedersen.segments[1].windows[4].adr6.in2[1] -6789,2898,main.pedersen.segments[1].windows[4].adr6.out[0] -6790,2904,main.pedersen.segments[1].windows[4].adr6.out[1] -6791,2925,main.pedersen.segments[1].windows[4].adr6.lamda -6792,2888,main.pedersen.segments[1].windows[4].adr7.in1[0] -6793,2889,main.pedersen.segments[1].windows[4].adr7.in1[1] -6794,2898,main.pedersen.segments[1].windows[4].adr7.in2[0] -6795,2904,main.pedersen.segments[1].windows[4].adr7.in2[1] -6796,2899,main.pedersen.segments[1].windows[4].adr7.out[0] -6797,2905,main.pedersen.segments[1].windows[4].adr7.out[1] -6798,2926,main.pedersen.segments[1].windows[4].adr7.lamda -6799,2888,main.pedersen.segments[1].windows[4].adr8.in1[0] -6800,2889,main.pedersen.segments[1].windows[4].adr8.in1[1] -6801,2899,main.pedersen.segments[1].windows[4].adr8.in2[0] -6802,2905,main.pedersen.segments[1].windows[4].adr8.in2[1] -6803,2892,main.pedersen.segments[1].windows[4].adr8.out[0] -6804,2893,main.pedersen.segments[1].windows[4].adr8.out[1] -6805,2927,main.pedersen.segments[1].windows[4].adr8.lamda -6825,223,main.pedersen.segments[1].windows[5].in[0] -6826,224,main.pedersen.segments[1].windows[5].in[1] -6827,225,main.pedersen.segments[1].windows[5].in[2] -6828,226,main.pedersen.segments[1].windows[5].in[3] -6829,2937,main.pedersen.segments[1].windows[5].base[0] -6830,2938,main.pedersen.segments[1].windows[5].base[1] -6831,2939,main.pedersen.segments[1].windows[5].out[0] -6832,2940,main.pedersen.segments[1].windows[5].out[1] -6833,2941,main.pedersen.segments[1].windows[5].out8[0] -6834,2942,main.pedersen.segments[1].windows[5].out8[1] -6835,2937,main.pedersen.segments[1].windows[5].mux.c[0][0] -6836,2943,main.pedersen.segments[1].windows[5].mux.c[0][1] -6837,2944,main.pedersen.segments[1].windows[5].mux.c[0][2] -6838,2945,main.pedersen.segments[1].windows[5].mux.c[0][3] -6839,2946,main.pedersen.segments[1].windows[5].mux.c[0][4] -6840,2947,main.pedersen.segments[1].windows[5].mux.c[0][5] -6841,2948,main.pedersen.segments[1].windows[5].mux.c[0][6] -6842,2941,main.pedersen.segments[1].windows[5].mux.c[0][7] -6843,2938,main.pedersen.segments[1].windows[5].mux.c[1][0] -6844,2949,main.pedersen.segments[1].windows[5].mux.c[1][1] -6845,2950,main.pedersen.segments[1].windows[5].mux.c[1][2] -6846,2951,main.pedersen.segments[1].windows[5].mux.c[1][3] -6847,2952,main.pedersen.segments[1].windows[5].mux.c[1][4] -6848,2953,main.pedersen.segments[1].windows[5].mux.c[1][5] -6849,2954,main.pedersen.segments[1].windows[5].mux.c[1][6] -6850,2942,main.pedersen.segments[1].windows[5].mux.c[1][7] -6851,223,main.pedersen.segments[1].windows[5].mux.s[0] -6852,224,main.pedersen.segments[1].windows[5].mux.s[1] -6853,225,main.pedersen.segments[1].windows[5].mux.s[2] -6854,2939,main.pedersen.segments[1].windows[5].mux.out[0] -6855,2955,main.pedersen.segments[1].windows[5].mux.out[1] -6856,2956,main.pedersen.segments[1].windows[5].mux.a210[0] -6857,2957,main.pedersen.segments[1].windows[5].mux.a210[1] -6858,2958,main.pedersen.segments[1].windows[5].mux.a21[0] -6859,2959,main.pedersen.segments[1].windows[5].mux.a21[1] -6860,2960,main.pedersen.segments[1].windows[5].mux.a20[0] -6861,2961,main.pedersen.segments[1].windows[5].mux.a20[1] -6862,3493,main.pedersen.segments[1].windows[5].mux.a2[0] -6863,3494,main.pedersen.segments[1].windows[5].mux.a2[1] -6864,2962,main.pedersen.segments[1].windows[5].mux.a10[0] -6865,2963,main.pedersen.segments[1].windows[5].mux.a10[1] -6866,2964,main.pedersen.segments[1].windows[5].mux.a1[0] -6867,2965,main.pedersen.segments[1].windows[5].mux.a1[1] -6868,2966,main.pedersen.segments[1].windows[5].mux.a0[0] -6869,2967,main.pedersen.segments[1].windows[5].mux.a0[1] -6870,2937,main.pedersen.segments[1].windows[5].mux.a[0] -6871,2938,main.pedersen.segments[1].windows[5].mux.a[1] -6872,2968,main.pedersen.segments[1].windows[5].mux.s10 -6873,2937,main.pedersen.segments[1].windows[5].dbl2.in[0] -6874,2938,main.pedersen.segments[1].windows[5].dbl2.in[1] -6875,2943,main.pedersen.segments[1].windows[5].dbl2.out[0] -6876,2949,main.pedersen.segments[1].windows[5].dbl2.out[1] -6877,2969,main.pedersen.segments[1].windows[5].dbl2.lamda -6878,2970,main.pedersen.segments[1].windows[5].dbl2.x1_2 -6879,2937,main.pedersen.segments[1].windows[5].adr3.in1[0] -6880,2938,main.pedersen.segments[1].windows[5].adr3.in1[1] -6881,2943,main.pedersen.segments[1].windows[5].adr3.in2[0] -6882,2949,main.pedersen.segments[1].windows[5].adr3.in2[1] -6883,2944,main.pedersen.segments[1].windows[5].adr3.out[0] -6884,2950,main.pedersen.segments[1].windows[5].adr3.out[1] -6885,2971,main.pedersen.segments[1].windows[5].adr3.lamda -6886,2937,main.pedersen.segments[1].windows[5].adr4.in1[0] -6887,2938,main.pedersen.segments[1].windows[5].adr4.in1[1] -6888,2944,main.pedersen.segments[1].windows[5].adr4.in2[0] -6889,2950,main.pedersen.segments[1].windows[5].adr4.in2[1] -6890,2945,main.pedersen.segments[1].windows[5].adr4.out[0] -6891,2951,main.pedersen.segments[1].windows[5].adr4.out[1] -6892,2972,main.pedersen.segments[1].windows[5].adr4.lamda -6893,2937,main.pedersen.segments[1].windows[5].adr5.in1[0] -6894,2938,main.pedersen.segments[1].windows[5].adr5.in1[1] -6895,2945,main.pedersen.segments[1].windows[5].adr5.in2[0] -6896,2951,main.pedersen.segments[1].windows[5].adr5.in2[1] -6897,2946,main.pedersen.segments[1].windows[5].adr5.out[0] -6898,2952,main.pedersen.segments[1].windows[5].adr5.out[1] -6899,2973,main.pedersen.segments[1].windows[5].adr5.lamda -6900,2937,main.pedersen.segments[1].windows[5].adr6.in1[0] -6901,2938,main.pedersen.segments[1].windows[5].adr6.in1[1] -6902,2946,main.pedersen.segments[1].windows[5].adr6.in2[0] -6903,2952,main.pedersen.segments[1].windows[5].adr6.in2[1] -6904,2947,main.pedersen.segments[1].windows[5].adr6.out[0] -6905,2953,main.pedersen.segments[1].windows[5].adr6.out[1] -6906,2974,main.pedersen.segments[1].windows[5].adr6.lamda -6907,2937,main.pedersen.segments[1].windows[5].adr7.in1[0] -6908,2938,main.pedersen.segments[1].windows[5].adr7.in1[1] -6909,2947,main.pedersen.segments[1].windows[5].adr7.in2[0] -6910,2953,main.pedersen.segments[1].windows[5].adr7.in2[1] -6911,2948,main.pedersen.segments[1].windows[5].adr7.out[0] -6912,2954,main.pedersen.segments[1].windows[5].adr7.out[1] -6913,2975,main.pedersen.segments[1].windows[5].adr7.lamda -6914,2937,main.pedersen.segments[1].windows[5].adr8.in1[0] -6915,2938,main.pedersen.segments[1].windows[5].adr8.in1[1] -6916,2948,main.pedersen.segments[1].windows[5].adr8.in2[0] -6917,2954,main.pedersen.segments[1].windows[5].adr8.in2[1] -6918,2941,main.pedersen.segments[1].windows[5].adr8.out[0] -6919,2942,main.pedersen.segments[1].windows[5].adr8.out[1] -6920,2976,main.pedersen.segments[1].windows[5].adr8.lamda -6940,227,main.pedersen.segments[1].windows[6].in[0] -6941,228,main.pedersen.segments[1].windows[6].in[1] -6942,229,main.pedersen.segments[1].windows[6].in[2] -6943,230,main.pedersen.segments[1].windows[6].in[3] -6944,2986,main.pedersen.segments[1].windows[6].base[0] -6945,2987,main.pedersen.segments[1].windows[6].base[1] -6946,2988,main.pedersen.segments[1].windows[6].out[0] -6947,2989,main.pedersen.segments[1].windows[6].out[1] -6948,2990,main.pedersen.segments[1].windows[6].out8[0] -6949,2991,main.pedersen.segments[1].windows[6].out8[1] -6950,2986,main.pedersen.segments[1].windows[6].mux.c[0][0] -6951,2992,main.pedersen.segments[1].windows[6].mux.c[0][1] -6952,2993,main.pedersen.segments[1].windows[6].mux.c[0][2] -6953,2994,main.pedersen.segments[1].windows[6].mux.c[0][3] -6954,2995,main.pedersen.segments[1].windows[6].mux.c[0][4] -6955,2996,main.pedersen.segments[1].windows[6].mux.c[0][5] -6956,2997,main.pedersen.segments[1].windows[6].mux.c[0][6] -6957,2990,main.pedersen.segments[1].windows[6].mux.c[0][7] -6958,2987,main.pedersen.segments[1].windows[6].mux.c[1][0] -6959,2998,main.pedersen.segments[1].windows[6].mux.c[1][1] -6960,2999,main.pedersen.segments[1].windows[6].mux.c[1][2] -6961,3000,main.pedersen.segments[1].windows[6].mux.c[1][3] -6962,3001,main.pedersen.segments[1].windows[6].mux.c[1][4] -6963,3002,main.pedersen.segments[1].windows[6].mux.c[1][5] -6964,3003,main.pedersen.segments[1].windows[6].mux.c[1][6] -6965,2991,main.pedersen.segments[1].windows[6].mux.c[1][7] -6966,227,main.pedersen.segments[1].windows[6].mux.s[0] -6967,228,main.pedersen.segments[1].windows[6].mux.s[1] -6968,229,main.pedersen.segments[1].windows[6].mux.s[2] -6969,2988,main.pedersen.segments[1].windows[6].mux.out[0] -6970,3004,main.pedersen.segments[1].windows[6].mux.out[1] -6971,3005,main.pedersen.segments[1].windows[6].mux.a210[0] -6972,3006,main.pedersen.segments[1].windows[6].mux.a210[1] -6973,3007,main.pedersen.segments[1].windows[6].mux.a21[0] -6974,3008,main.pedersen.segments[1].windows[6].mux.a21[1] -6975,3009,main.pedersen.segments[1].windows[6].mux.a20[0] -6976,3010,main.pedersen.segments[1].windows[6].mux.a20[1] -6977,3495,main.pedersen.segments[1].windows[6].mux.a2[0] -6978,3496,main.pedersen.segments[1].windows[6].mux.a2[1] -6979,3011,main.pedersen.segments[1].windows[6].mux.a10[0] -6980,3012,main.pedersen.segments[1].windows[6].mux.a10[1] -6981,3013,main.pedersen.segments[1].windows[6].mux.a1[0] -6982,3014,main.pedersen.segments[1].windows[6].mux.a1[1] -6983,3015,main.pedersen.segments[1].windows[6].mux.a0[0] -6984,3016,main.pedersen.segments[1].windows[6].mux.a0[1] -6985,2986,main.pedersen.segments[1].windows[6].mux.a[0] -6986,2987,main.pedersen.segments[1].windows[6].mux.a[1] -6987,3017,main.pedersen.segments[1].windows[6].mux.s10 -6988,2986,main.pedersen.segments[1].windows[6].dbl2.in[0] -6989,2987,main.pedersen.segments[1].windows[6].dbl2.in[1] -6990,2992,main.pedersen.segments[1].windows[6].dbl2.out[0] -6991,2998,main.pedersen.segments[1].windows[6].dbl2.out[1] -6992,3018,main.pedersen.segments[1].windows[6].dbl2.lamda -6993,3019,main.pedersen.segments[1].windows[6].dbl2.x1_2 -6994,2986,main.pedersen.segments[1].windows[6].adr3.in1[0] -6995,2987,main.pedersen.segments[1].windows[6].adr3.in1[1] -6996,2992,main.pedersen.segments[1].windows[6].adr3.in2[0] -6997,2998,main.pedersen.segments[1].windows[6].adr3.in2[1] -6998,2993,main.pedersen.segments[1].windows[6].adr3.out[0] -6999,2999,main.pedersen.segments[1].windows[6].adr3.out[1] -7000,3020,main.pedersen.segments[1].windows[6].adr3.lamda -7001,2986,main.pedersen.segments[1].windows[6].adr4.in1[0] -7002,2987,main.pedersen.segments[1].windows[6].adr4.in1[1] -7003,2993,main.pedersen.segments[1].windows[6].adr4.in2[0] -7004,2999,main.pedersen.segments[1].windows[6].adr4.in2[1] -7005,2994,main.pedersen.segments[1].windows[6].adr4.out[0] -7006,3000,main.pedersen.segments[1].windows[6].adr4.out[1] -7007,3021,main.pedersen.segments[1].windows[6].adr4.lamda -7008,2986,main.pedersen.segments[1].windows[6].adr5.in1[0] -7009,2987,main.pedersen.segments[1].windows[6].adr5.in1[1] -7010,2994,main.pedersen.segments[1].windows[6].adr5.in2[0] -7011,3000,main.pedersen.segments[1].windows[6].adr5.in2[1] -7012,2995,main.pedersen.segments[1].windows[6].adr5.out[0] -7013,3001,main.pedersen.segments[1].windows[6].adr5.out[1] -7014,3022,main.pedersen.segments[1].windows[6].adr5.lamda -7015,2986,main.pedersen.segments[1].windows[6].adr6.in1[0] -7016,2987,main.pedersen.segments[1].windows[6].adr6.in1[1] -7017,2995,main.pedersen.segments[1].windows[6].adr6.in2[0] -7018,3001,main.pedersen.segments[1].windows[6].adr6.in2[1] -7019,2996,main.pedersen.segments[1].windows[6].adr6.out[0] -7020,3002,main.pedersen.segments[1].windows[6].adr6.out[1] -7021,3023,main.pedersen.segments[1].windows[6].adr6.lamda -7022,2986,main.pedersen.segments[1].windows[6].adr7.in1[0] -7023,2987,main.pedersen.segments[1].windows[6].adr7.in1[1] -7024,2996,main.pedersen.segments[1].windows[6].adr7.in2[0] -7025,3002,main.pedersen.segments[1].windows[6].adr7.in2[1] -7026,2997,main.pedersen.segments[1].windows[6].adr7.out[0] -7027,3003,main.pedersen.segments[1].windows[6].adr7.out[1] -7028,3024,main.pedersen.segments[1].windows[6].adr7.lamda -7029,2986,main.pedersen.segments[1].windows[6].adr8.in1[0] -7030,2987,main.pedersen.segments[1].windows[6].adr8.in1[1] -7031,2997,main.pedersen.segments[1].windows[6].adr8.in2[0] -7032,3003,main.pedersen.segments[1].windows[6].adr8.in2[1] -7033,2990,main.pedersen.segments[1].windows[6].adr8.out[0] -7034,2991,main.pedersen.segments[1].windows[6].adr8.out[1] -7035,3025,main.pedersen.segments[1].windows[6].adr8.lamda -7055,231,main.pedersen.segments[1].windows[7].in[0] -7056,232,main.pedersen.segments[1].windows[7].in[1] -7057,233,main.pedersen.segments[1].windows[7].in[2] -7058,234,main.pedersen.segments[1].windows[7].in[3] -7059,3035,main.pedersen.segments[1].windows[7].base[0] -7060,3036,main.pedersen.segments[1].windows[7].base[1] -7061,3037,main.pedersen.segments[1].windows[7].out[0] -7062,3038,main.pedersen.segments[1].windows[7].out[1] -7063,3039,main.pedersen.segments[1].windows[7].out8[0] -7064,3040,main.pedersen.segments[1].windows[7].out8[1] -7065,3035,main.pedersen.segments[1].windows[7].mux.c[0][0] -7066,3041,main.pedersen.segments[1].windows[7].mux.c[0][1] -7067,3042,main.pedersen.segments[1].windows[7].mux.c[0][2] -7068,3043,main.pedersen.segments[1].windows[7].mux.c[0][3] -7069,3044,main.pedersen.segments[1].windows[7].mux.c[0][4] -7070,3045,main.pedersen.segments[1].windows[7].mux.c[0][5] -7071,3046,main.pedersen.segments[1].windows[7].mux.c[0][6] -7072,3039,main.pedersen.segments[1].windows[7].mux.c[0][7] -7073,3036,main.pedersen.segments[1].windows[7].mux.c[1][0] -7074,3047,main.pedersen.segments[1].windows[7].mux.c[1][1] -7075,3048,main.pedersen.segments[1].windows[7].mux.c[1][2] -7076,3049,main.pedersen.segments[1].windows[7].mux.c[1][3] -7077,3050,main.pedersen.segments[1].windows[7].mux.c[1][4] -7078,3051,main.pedersen.segments[1].windows[7].mux.c[1][5] -7079,3052,main.pedersen.segments[1].windows[7].mux.c[1][6] -7080,3040,main.pedersen.segments[1].windows[7].mux.c[1][7] -7081,231,main.pedersen.segments[1].windows[7].mux.s[0] -7082,232,main.pedersen.segments[1].windows[7].mux.s[1] -7083,233,main.pedersen.segments[1].windows[7].mux.s[2] -7084,3037,main.pedersen.segments[1].windows[7].mux.out[0] -7085,3053,main.pedersen.segments[1].windows[7].mux.out[1] -7086,3054,main.pedersen.segments[1].windows[7].mux.a210[0] -7087,3055,main.pedersen.segments[1].windows[7].mux.a210[1] -7088,3056,main.pedersen.segments[1].windows[7].mux.a21[0] -7089,3057,main.pedersen.segments[1].windows[7].mux.a21[1] -7090,3058,main.pedersen.segments[1].windows[7].mux.a20[0] -7091,3059,main.pedersen.segments[1].windows[7].mux.a20[1] -7092,3497,main.pedersen.segments[1].windows[7].mux.a2[0] -7093,3498,main.pedersen.segments[1].windows[7].mux.a2[1] -7094,3060,main.pedersen.segments[1].windows[7].mux.a10[0] -7095,3061,main.pedersen.segments[1].windows[7].mux.a10[1] -7096,3062,main.pedersen.segments[1].windows[7].mux.a1[0] -7097,3063,main.pedersen.segments[1].windows[7].mux.a1[1] -7098,3064,main.pedersen.segments[1].windows[7].mux.a0[0] -7099,3065,main.pedersen.segments[1].windows[7].mux.a0[1] -7100,3035,main.pedersen.segments[1].windows[7].mux.a[0] -7101,3036,main.pedersen.segments[1].windows[7].mux.a[1] -7102,3066,main.pedersen.segments[1].windows[7].mux.s10 -7103,3035,main.pedersen.segments[1].windows[7].dbl2.in[0] -7104,3036,main.pedersen.segments[1].windows[7].dbl2.in[1] -7105,3041,main.pedersen.segments[1].windows[7].dbl2.out[0] -7106,3047,main.pedersen.segments[1].windows[7].dbl2.out[1] -7107,3067,main.pedersen.segments[1].windows[7].dbl2.lamda -7108,3068,main.pedersen.segments[1].windows[7].dbl2.x1_2 -7109,3035,main.pedersen.segments[1].windows[7].adr3.in1[0] -7110,3036,main.pedersen.segments[1].windows[7].adr3.in1[1] -7111,3041,main.pedersen.segments[1].windows[7].adr3.in2[0] -7112,3047,main.pedersen.segments[1].windows[7].adr3.in2[1] -7113,3042,main.pedersen.segments[1].windows[7].adr3.out[0] -7114,3048,main.pedersen.segments[1].windows[7].adr3.out[1] -7115,3069,main.pedersen.segments[1].windows[7].adr3.lamda -7116,3035,main.pedersen.segments[1].windows[7].adr4.in1[0] -7117,3036,main.pedersen.segments[1].windows[7].adr4.in1[1] -7118,3042,main.pedersen.segments[1].windows[7].adr4.in2[0] -7119,3048,main.pedersen.segments[1].windows[7].adr4.in2[1] -7120,3043,main.pedersen.segments[1].windows[7].adr4.out[0] -7121,3049,main.pedersen.segments[1].windows[7].adr4.out[1] -7122,3070,main.pedersen.segments[1].windows[7].adr4.lamda -7123,3035,main.pedersen.segments[1].windows[7].adr5.in1[0] -7124,3036,main.pedersen.segments[1].windows[7].adr5.in1[1] -7125,3043,main.pedersen.segments[1].windows[7].adr5.in2[0] -7126,3049,main.pedersen.segments[1].windows[7].adr5.in2[1] -7127,3044,main.pedersen.segments[1].windows[7].adr5.out[0] -7128,3050,main.pedersen.segments[1].windows[7].adr5.out[1] -7129,3071,main.pedersen.segments[1].windows[7].adr5.lamda -7130,3035,main.pedersen.segments[1].windows[7].adr6.in1[0] -7131,3036,main.pedersen.segments[1].windows[7].adr6.in1[1] -7132,3044,main.pedersen.segments[1].windows[7].adr6.in2[0] -7133,3050,main.pedersen.segments[1].windows[7].adr6.in2[1] -7134,3045,main.pedersen.segments[1].windows[7].adr6.out[0] -7135,3051,main.pedersen.segments[1].windows[7].adr6.out[1] -7136,3072,main.pedersen.segments[1].windows[7].adr6.lamda -7137,3035,main.pedersen.segments[1].windows[7].adr7.in1[0] -7138,3036,main.pedersen.segments[1].windows[7].adr7.in1[1] -7139,3045,main.pedersen.segments[1].windows[7].adr7.in2[0] -7140,3051,main.pedersen.segments[1].windows[7].adr7.in2[1] -7141,3046,main.pedersen.segments[1].windows[7].adr7.out[0] -7142,3052,main.pedersen.segments[1].windows[7].adr7.out[1] -7143,3073,main.pedersen.segments[1].windows[7].adr7.lamda -7144,3035,main.pedersen.segments[1].windows[7].adr8.in1[0] -7145,3036,main.pedersen.segments[1].windows[7].adr8.in1[1] -7146,3046,main.pedersen.segments[1].windows[7].adr8.in2[0] -7147,3052,main.pedersen.segments[1].windows[7].adr8.in2[1] -7148,3039,main.pedersen.segments[1].windows[7].adr8.out[0] -7149,3040,main.pedersen.segments[1].windows[7].adr8.out[1] -7150,3074,main.pedersen.segments[1].windows[7].adr8.lamda -7170,235,main.pedersen.segments[1].windows[8].in[0] -7171,236,main.pedersen.segments[1].windows[8].in[1] -7172,237,main.pedersen.segments[1].windows[8].in[2] -7173,238,main.pedersen.segments[1].windows[8].in[3] -7174,3084,main.pedersen.segments[1].windows[8].base[0] -7175,3085,main.pedersen.segments[1].windows[8].base[1] -7176,3086,main.pedersen.segments[1].windows[8].out[0] -7177,3087,main.pedersen.segments[1].windows[8].out[1] -7178,3088,main.pedersen.segments[1].windows[8].out8[0] -7179,3089,main.pedersen.segments[1].windows[8].out8[1] -7180,3084,main.pedersen.segments[1].windows[8].mux.c[0][0] -7181,3090,main.pedersen.segments[1].windows[8].mux.c[0][1] -7182,3091,main.pedersen.segments[1].windows[8].mux.c[0][2] -7183,3092,main.pedersen.segments[1].windows[8].mux.c[0][3] -7184,3093,main.pedersen.segments[1].windows[8].mux.c[0][4] -7185,3094,main.pedersen.segments[1].windows[8].mux.c[0][5] -7186,3095,main.pedersen.segments[1].windows[8].mux.c[0][6] -7187,3088,main.pedersen.segments[1].windows[8].mux.c[0][7] -7188,3085,main.pedersen.segments[1].windows[8].mux.c[1][0] -7189,3096,main.pedersen.segments[1].windows[8].mux.c[1][1] -7190,3097,main.pedersen.segments[1].windows[8].mux.c[1][2] -7191,3098,main.pedersen.segments[1].windows[8].mux.c[1][3] -7192,3099,main.pedersen.segments[1].windows[8].mux.c[1][4] -7193,3100,main.pedersen.segments[1].windows[8].mux.c[1][5] -7194,3101,main.pedersen.segments[1].windows[8].mux.c[1][6] -7195,3089,main.pedersen.segments[1].windows[8].mux.c[1][7] -7196,235,main.pedersen.segments[1].windows[8].mux.s[0] -7197,236,main.pedersen.segments[1].windows[8].mux.s[1] -7198,237,main.pedersen.segments[1].windows[8].mux.s[2] -7199,3086,main.pedersen.segments[1].windows[8].mux.out[0] -7200,3102,main.pedersen.segments[1].windows[8].mux.out[1] -7201,3103,main.pedersen.segments[1].windows[8].mux.a210[0] -7202,3104,main.pedersen.segments[1].windows[8].mux.a210[1] -7203,3105,main.pedersen.segments[1].windows[8].mux.a21[0] -7204,3106,main.pedersen.segments[1].windows[8].mux.a21[1] -7205,3107,main.pedersen.segments[1].windows[8].mux.a20[0] -7206,3108,main.pedersen.segments[1].windows[8].mux.a20[1] -7207,3499,main.pedersen.segments[1].windows[8].mux.a2[0] -7208,3500,main.pedersen.segments[1].windows[8].mux.a2[1] -7209,3109,main.pedersen.segments[1].windows[8].mux.a10[0] -7210,3110,main.pedersen.segments[1].windows[8].mux.a10[1] -7211,3111,main.pedersen.segments[1].windows[8].mux.a1[0] -7212,3112,main.pedersen.segments[1].windows[8].mux.a1[1] -7213,3113,main.pedersen.segments[1].windows[8].mux.a0[0] -7214,3114,main.pedersen.segments[1].windows[8].mux.a0[1] -7215,3084,main.pedersen.segments[1].windows[8].mux.a[0] -7216,3085,main.pedersen.segments[1].windows[8].mux.a[1] -7217,3115,main.pedersen.segments[1].windows[8].mux.s10 -7218,3084,main.pedersen.segments[1].windows[8].dbl2.in[0] -7219,3085,main.pedersen.segments[1].windows[8].dbl2.in[1] -7220,3090,main.pedersen.segments[1].windows[8].dbl2.out[0] -7221,3096,main.pedersen.segments[1].windows[8].dbl2.out[1] -7222,3116,main.pedersen.segments[1].windows[8].dbl2.lamda -7223,3117,main.pedersen.segments[1].windows[8].dbl2.x1_2 -7224,3084,main.pedersen.segments[1].windows[8].adr3.in1[0] -7225,3085,main.pedersen.segments[1].windows[8].adr3.in1[1] -7226,3090,main.pedersen.segments[1].windows[8].adr3.in2[0] -7227,3096,main.pedersen.segments[1].windows[8].adr3.in2[1] -7228,3091,main.pedersen.segments[1].windows[8].adr3.out[0] -7229,3097,main.pedersen.segments[1].windows[8].adr3.out[1] -7230,3118,main.pedersen.segments[1].windows[8].adr3.lamda -7231,3084,main.pedersen.segments[1].windows[8].adr4.in1[0] -7232,3085,main.pedersen.segments[1].windows[8].adr4.in1[1] -7233,3091,main.pedersen.segments[1].windows[8].adr4.in2[0] -7234,3097,main.pedersen.segments[1].windows[8].adr4.in2[1] -7235,3092,main.pedersen.segments[1].windows[8].adr4.out[0] -7236,3098,main.pedersen.segments[1].windows[8].adr4.out[1] -7237,3119,main.pedersen.segments[1].windows[8].adr4.lamda -7238,3084,main.pedersen.segments[1].windows[8].adr5.in1[0] -7239,3085,main.pedersen.segments[1].windows[8].adr5.in1[1] -7240,3092,main.pedersen.segments[1].windows[8].adr5.in2[0] -7241,3098,main.pedersen.segments[1].windows[8].adr5.in2[1] -7242,3093,main.pedersen.segments[1].windows[8].adr5.out[0] -7243,3099,main.pedersen.segments[1].windows[8].adr5.out[1] -7244,3120,main.pedersen.segments[1].windows[8].adr5.lamda -7245,3084,main.pedersen.segments[1].windows[8].adr6.in1[0] -7246,3085,main.pedersen.segments[1].windows[8].adr6.in1[1] -7247,3093,main.pedersen.segments[1].windows[8].adr6.in2[0] -7248,3099,main.pedersen.segments[1].windows[8].adr6.in2[1] -7249,3094,main.pedersen.segments[1].windows[8].adr6.out[0] -7250,3100,main.pedersen.segments[1].windows[8].adr6.out[1] -7251,3121,main.pedersen.segments[1].windows[8].adr6.lamda -7252,3084,main.pedersen.segments[1].windows[8].adr7.in1[0] -7253,3085,main.pedersen.segments[1].windows[8].adr7.in1[1] -7254,3094,main.pedersen.segments[1].windows[8].adr7.in2[0] -7255,3100,main.pedersen.segments[1].windows[8].adr7.in2[1] -7256,3095,main.pedersen.segments[1].windows[8].adr7.out[0] -7257,3101,main.pedersen.segments[1].windows[8].adr7.out[1] -7258,3122,main.pedersen.segments[1].windows[8].adr7.lamda -7259,3084,main.pedersen.segments[1].windows[8].adr8.in1[0] -7260,3085,main.pedersen.segments[1].windows[8].adr8.in1[1] -7261,3095,main.pedersen.segments[1].windows[8].adr8.in2[0] -7262,3101,main.pedersen.segments[1].windows[8].adr8.in2[1] -7263,3088,main.pedersen.segments[1].windows[8].adr8.out[0] -7264,3089,main.pedersen.segments[1].windows[8].adr8.out[1] -7265,3123,main.pedersen.segments[1].windows[8].adr8.lamda -7285,239,main.pedersen.segments[1].windows[9].in[0] -7286,240,main.pedersen.segments[1].windows[9].in[1] -7287,241,main.pedersen.segments[1].windows[9].in[2] -7288,242,main.pedersen.segments[1].windows[9].in[3] -7289,3133,main.pedersen.segments[1].windows[9].base[0] -7290,3134,main.pedersen.segments[1].windows[9].base[1] -7291,3135,main.pedersen.segments[1].windows[9].out[0] -7292,3136,main.pedersen.segments[1].windows[9].out[1] -7293,3137,main.pedersen.segments[1].windows[9].out8[0] -7294,3138,main.pedersen.segments[1].windows[9].out8[1] -7295,3133,main.pedersen.segments[1].windows[9].mux.c[0][0] -7296,3139,main.pedersen.segments[1].windows[9].mux.c[0][1] -7297,3140,main.pedersen.segments[1].windows[9].mux.c[0][2] -7298,3141,main.pedersen.segments[1].windows[9].mux.c[0][3] -7299,3142,main.pedersen.segments[1].windows[9].mux.c[0][4] -7300,3143,main.pedersen.segments[1].windows[9].mux.c[0][5] -7301,3144,main.pedersen.segments[1].windows[9].mux.c[0][6] -7302,3137,main.pedersen.segments[1].windows[9].mux.c[0][7] -7303,3134,main.pedersen.segments[1].windows[9].mux.c[1][0] -7304,3145,main.pedersen.segments[1].windows[9].mux.c[1][1] -7305,3146,main.pedersen.segments[1].windows[9].mux.c[1][2] -7306,3147,main.pedersen.segments[1].windows[9].mux.c[1][3] -7307,3148,main.pedersen.segments[1].windows[9].mux.c[1][4] -7308,3149,main.pedersen.segments[1].windows[9].mux.c[1][5] -7309,3150,main.pedersen.segments[1].windows[9].mux.c[1][6] -7310,3138,main.pedersen.segments[1].windows[9].mux.c[1][7] -7311,239,main.pedersen.segments[1].windows[9].mux.s[0] -7312,240,main.pedersen.segments[1].windows[9].mux.s[1] -7313,241,main.pedersen.segments[1].windows[9].mux.s[2] -7314,3135,main.pedersen.segments[1].windows[9].mux.out[0] -7315,3151,main.pedersen.segments[1].windows[9].mux.out[1] -7316,3152,main.pedersen.segments[1].windows[9].mux.a210[0] -7317,3153,main.pedersen.segments[1].windows[9].mux.a210[1] -7318,3154,main.pedersen.segments[1].windows[9].mux.a21[0] -7319,3155,main.pedersen.segments[1].windows[9].mux.a21[1] -7320,3156,main.pedersen.segments[1].windows[9].mux.a20[0] -7321,3157,main.pedersen.segments[1].windows[9].mux.a20[1] -7322,3501,main.pedersen.segments[1].windows[9].mux.a2[0] -7323,3502,main.pedersen.segments[1].windows[9].mux.a2[1] -7324,3158,main.pedersen.segments[1].windows[9].mux.a10[0] -7325,3159,main.pedersen.segments[1].windows[9].mux.a10[1] -7326,3160,main.pedersen.segments[1].windows[9].mux.a1[0] -7327,3161,main.pedersen.segments[1].windows[9].mux.a1[1] -7328,3162,main.pedersen.segments[1].windows[9].mux.a0[0] -7329,3163,main.pedersen.segments[1].windows[9].mux.a0[1] -7330,3133,main.pedersen.segments[1].windows[9].mux.a[0] -7331,3134,main.pedersen.segments[1].windows[9].mux.a[1] -7332,3164,main.pedersen.segments[1].windows[9].mux.s10 -7333,3133,main.pedersen.segments[1].windows[9].dbl2.in[0] -7334,3134,main.pedersen.segments[1].windows[9].dbl2.in[1] -7335,3139,main.pedersen.segments[1].windows[9].dbl2.out[0] -7336,3145,main.pedersen.segments[1].windows[9].dbl2.out[1] -7337,3165,main.pedersen.segments[1].windows[9].dbl2.lamda -7338,3166,main.pedersen.segments[1].windows[9].dbl2.x1_2 -7339,3133,main.pedersen.segments[1].windows[9].adr3.in1[0] -7340,3134,main.pedersen.segments[1].windows[9].adr3.in1[1] -7341,3139,main.pedersen.segments[1].windows[9].adr3.in2[0] -7342,3145,main.pedersen.segments[1].windows[9].adr3.in2[1] -7343,3140,main.pedersen.segments[1].windows[9].adr3.out[0] -7344,3146,main.pedersen.segments[1].windows[9].adr3.out[1] -7345,3167,main.pedersen.segments[1].windows[9].adr3.lamda -7346,3133,main.pedersen.segments[1].windows[9].adr4.in1[0] -7347,3134,main.pedersen.segments[1].windows[9].adr4.in1[1] -7348,3140,main.pedersen.segments[1].windows[9].adr4.in2[0] -7349,3146,main.pedersen.segments[1].windows[9].adr4.in2[1] -7350,3141,main.pedersen.segments[1].windows[9].adr4.out[0] -7351,3147,main.pedersen.segments[1].windows[9].adr4.out[1] -7352,3168,main.pedersen.segments[1].windows[9].adr4.lamda -7353,3133,main.pedersen.segments[1].windows[9].adr5.in1[0] -7354,3134,main.pedersen.segments[1].windows[9].adr5.in1[1] -7355,3141,main.pedersen.segments[1].windows[9].adr5.in2[0] -7356,3147,main.pedersen.segments[1].windows[9].adr5.in2[1] -7357,3142,main.pedersen.segments[1].windows[9].adr5.out[0] -7358,3148,main.pedersen.segments[1].windows[9].adr5.out[1] -7359,3169,main.pedersen.segments[1].windows[9].adr5.lamda -7360,3133,main.pedersen.segments[1].windows[9].adr6.in1[0] -7361,3134,main.pedersen.segments[1].windows[9].adr6.in1[1] -7362,3142,main.pedersen.segments[1].windows[9].adr6.in2[0] -7363,3148,main.pedersen.segments[1].windows[9].adr6.in2[1] -7364,3143,main.pedersen.segments[1].windows[9].adr6.out[0] -7365,3149,main.pedersen.segments[1].windows[9].adr6.out[1] -7366,3170,main.pedersen.segments[1].windows[9].adr6.lamda -7367,3133,main.pedersen.segments[1].windows[9].adr7.in1[0] -7368,3134,main.pedersen.segments[1].windows[9].adr7.in1[1] -7369,3143,main.pedersen.segments[1].windows[9].adr7.in2[0] -7370,3149,main.pedersen.segments[1].windows[9].adr7.in2[1] -7371,3144,main.pedersen.segments[1].windows[9].adr7.out[0] -7372,3150,main.pedersen.segments[1].windows[9].adr7.out[1] -7373,3171,main.pedersen.segments[1].windows[9].adr7.lamda -7374,3133,main.pedersen.segments[1].windows[9].adr8.in1[0] -7375,3134,main.pedersen.segments[1].windows[9].adr8.in1[1] -7376,3144,main.pedersen.segments[1].windows[9].adr8.in2[0] -7377,3150,main.pedersen.segments[1].windows[9].adr8.in2[1] -7378,3137,main.pedersen.segments[1].windows[9].adr8.out[0] -7379,3138,main.pedersen.segments[1].windows[9].adr8.out[1] -7380,3172,main.pedersen.segments[1].windows[9].adr8.lamda -7400,243,main.pedersen.segments[1].windows[10].in[0] -7401,244,main.pedersen.segments[1].windows[10].in[1] -7402,245,main.pedersen.segments[1].windows[10].in[2] -7403,246,main.pedersen.segments[1].windows[10].in[3] -7404,3182,main.pedersen.segments[1].windows[10].base[0] -7405,3183,main.pedersen.segments[1].windows[10].base[1] -7406,3184,main.pedersen.segments[1].windows[10].out[0] -7407,3185,main.pedersen.segments[1].windows[10].out[1] -7408,3186,main.pedersen.segments[1].windows[10].out8[0] -7409,3187,main.pedersen.segments[1].windows[10].out8[1] -7410,3182,main.pedersen.segments[1].windows[10].mux.c[0][0] -7411,3188,main.pedersen.segments[1].windows[10].mux.c[0][1] -7412,3189,main.pedersen.segments[1].windows[10].mux.c[0][2] -7413,3190,main.pedersen.segments[1].windows[10].mux.c[0][3] -7414,3191,main.pedersen.segments[1].windows[10].mux.c[0][4] -7415,3192,main.pedersen.segments[1].windows[10].mux.c[0][5] -7416,3193,main.pedersen.segments[1].windows[10].mux.c[0][6] -7417,3186,main.pedersen.segments[1].windows[10].mux.c[0][7] -7418,3183,main.pedersen.segments[1].windows[10].mux.c[1][0] -7419,3194,main.pedersen.segments[1].windows[10].mux.c[1][1] -7420,3195,main.pedersen.segments[1].windows[10].mux.c[1][2] -7421,3196,main.pedersen.segments[1].windows[10].mux.c[1][3] -7422,3197,main.pedersen.segments[1].windows[10].mux.c[1][4] -7423,3198,main.pedersen.segments[1].windows[10].mux.c[1][5] -7424,3199,main.pedersen.segments[1].windows[10].mux.c[1][6] -7425,3187,main.pedersen.segments[1].windows[10].mux.c[1][7] -7426,243,main.pedersen.segments[1].windows[10].mux.s[0] -7427,244,main.pedersen.segments[1].windows[10].mux.s[1] -7428,245,main.pedersen.segments[1].windows[10].mux.s[2] -7429,3184,main.pedersen.segments[1].windows[10].mux.out[0] -7430,3200,main.pedersen.segments[1].windows[10].mux.out[1] -7431,3201,main.pedersen.segments[1].windows[10].mux.a210[0] -7432,3202,main.pedersen.segments[1].windows[10].mux.a210[1] -7433,3203,main.pedersen.segments[1].windows[10].mux.a21[0] -7434,3204,main.pedersen.segments[1].windows[10].mux.a21[1] -7435,3205,main.pedersen.segments[1].windows[10].mux.a20[0] -7436,3206,main.pedersen.segments[1].windows[10].mux.a20[1] -7437,3503,main.pedersen.segments[1].windows[10].mux.a2[0] -7438,3504,main.pedersen.segments[1].windows[10].mux.a2[1] -7439,3207,main.pedersen.segments[1].windows[10].mux.a10[0] -7440,3208,main.pedersen.segments[1].windows[10].mux.a10[1] -7441,3209,main.pedersen.segments[1].windows[10].mux.a1[0] -7442,3210,main.pedersen.segments[1].windows[10].mux.a1[1] -7443,3211,main.pedersen.segments[1].windows[10].mux.a0[0] -7444,3212,main.pedersen.segments[1].windows[10].mux.a0[1] -7445,3182,main.pedersen.segments[1].windows[10].mux.a[0] -7446,3183,main.pedersen.segments[1].windows[10].mux.a[1] -7447,3213,main.pedersen.segments[1].windows[10].mux.s10 -7448,3182,main.pedersen.segments[1].windows[10].dbl2.in[0] -7449,3183,main.pedersen.segments[1].windows[10].dbl2.in[1] -7450,3188,main.pedersen.segments[1].windows[10].dbl2.out[0] -7451,3194,main.pedersen.segments[1].windows[10].dbl2.out[1] -7452,3214,main.pedersen.segments[1].windows[10].dbl2.lamda -7453,3215,main.pedersen.segments[1].windows[10].dbl2.x1_2 -7454,3182,main.pedersen.segments[1].windows[10].adr3.in1[0] -7455,3183,main.pedersen.segments[1].windows[10].adr3.in1[1] -7456,3188,main.pedersen.segments[1].windows[10].adr3.in2[0] -7457,3194,main.pedersen.segments[1].windows[10].adr3.in2[1] -7458,3189,main.pedersen.segments[1].windows[10].adr3.out[0] -7459,3195,main.pedersen.segments[1].windows[10].adr3.out[1] -7460,3216,main.pedersen.segments[1].windows[10].adr3.lamda -7461,3182,main.pedersen.segments[1].windows[10].adr4.in1[0] -7462,3183,main.pedersen.segments[1].windows[10].adr4.in1[1] -7463,3189,main.pedersen.segments[1].windows[10].adr4.in2[0] -7464,3195,main.pedersen.segments[1].windows[10].adr4.in2[1] -7465,3190,main.pedersen.segments[1].windows[10].adr4.out[0] -7466,3196,main.pedersen.segments[1].windows[10].adr4.out[1] -7467,3217,main.pedersen.segments[1].windows[10].adr4.lamda -7468,3182,main.pedersen.segments[1].windows[10].adr5.in1[0] -7469,3183,main.pedersen.segments[1].windows[10].adr5.in1[1] -7470,3190,main.pedersen.segments[1].windows[10].adr5.in2[0] -7471,3196,main.pedersen.segments[1].windows[10].adr5.in2[1] -7472,3191,main.pedersen.segments[1].windows[10].adr5.out[0] -7473,3197,main.pedersen.segments[1].windows[10].adr5.out[1] -7474,3218,main.pedersen.segments[1].windows[10].adr5.lamda -7475,3182,main.pedersen.segments[1].windows[10].adr6.in1[0] -7476,3183,main.pedersen.segments[1].windows[10].adr6.in1[1] -7477,3191,main.pedersen.segments[1].windows[10].adr6.in2[0] -7478,3197,main.pedersen.segments[1].windows[10].adr6.in2[1] -7479,3192,main.pedersen.segments[1].windows[10].adr6.out[0] -7480,3198,main.pedersen.segments[1].windows[10].adr6.out[1] -7481,3219,main.pedersen.segments[1].windows[10].adr6.lamda -7482,3182,main.pedersen.segments[1].windows[10].adr7.in1[0] -7483,3183,main.pedersen.segments[1].windows[10].adr7.in1[1] -7484,3192,main.pedersen.segments[1].windows[10].adr7.in2[0] -7485,3198,main.pedersen.segments[1].windows[10].adr7.in2[1] -7486,3193,main.pedersen.segments[1].windows[10].adr7.out[0] -7487,3199,main.pedersen.segments[1].windows[10].adr7.out[1] -7488,3220,main.pedersen.segments[1].windows[10].adr7.lamda -7489,3182,main.pedersen.segments[1].windows[10].adr8.in1[0] -7490,3183,main.pedersen.segments[1].windows[10].adr8.in1[1] -7491,3193,main.pedersen.segments[1].windows[10].adr8.in2[0] -7492,3199,main.pedersen.segments[1].windows[10].adr8.in2[1] -7493,3186,main.pedersen.segments[1].windows[10].adr8.out[0] -7494,3187,main.pedersen.segments[1].windows[10].adr8.out[1] -7495,3221,main.pedersen.segments[1].windows[10].adr8.lamda -7515,247,main.pedersen.segments[1].windows[11].in[0] -7516,248,main.pedersen.segments[1].windows[11].in[1] -7517,249,main.pedersen.segments[1].windows[11].in[2] -7518,250,main.pedersen.segments[1].windows[11].in[3] -7519,3231,main.pedersen.segments[1].windows[11].base[0] -7520,3232,main.pedersen.segments[1].windows[11].base[1] -7521,3233,main.pedersen.segments[1].windows[11].out[0] -7522,3234,main.pedersen.segments[1].windows[11].out[1] -7523,3235,main.pedersen.segments[1].windows[11].out8[0] -7524,3236,main.pedersen.segments[1].windows[11].out8[1] -7525,3231,main.pedersen.segments[1].windows[11].mux.c[0][0] -7526,3237,main.pedersen.segments[1].windows[11].mux.c[0][1] -7527,3238,main.pedersen.segments[1].windows[11].mux.c[0][2] -7528,3239,main.pedersen.segments[1].windows[11].mux.c[0][3] -7529,3240,main.pedersen.segments[1].windows[11].mux.c[0][4] -7530,3241,main.pedersen.segments[1].windows[11].mux.c[0][5] -7531,3242,main.pedersen.segments[1].windows[11].mux.c[0][6] -7532,3235,main.pedersen.segments[1].windows[11].mux.c[0][7] -7533,3232,main.pedersen.segments[1].windows[11].mux.c[1][0] -7534,3243,main.pedersen.segments[1].windows[11].mux.c[1][1] -7535,3244,main.pedersen.segments[1].windows[11].mux.c[1][2] -7536,3245,main.pedersen.segments[1].windows[11].mux.c[1][3] -7537,3246,main.pedersen.segments[1].windows[11].mux.c[1][4] -7538,3247,main.pedersen.segments[1].windows[11].mux.c[1][5] -7539,3248,main.pedersen.segments[1].windows[11].mux.c[1][6] -7540,3236,main.pedersen.segments[1].windows[11].mux.c[1][7] -7541,247,main.pedersen.segments[1].windows[11].mux.s[0] -7542,248,main.pedersen.segments[1].windows[11].mux.s[1] -7543,249,main.pedersen.segments[1].windows[11].mux.s[2] -7544,3233,main.pedersen.segments[1].windows[11].mux.out[0] -7545,3249,main.pedersen.segments[1].windows[11].mux.out[1] -7546,3250,main.pedersen.segments[1].windows[11].mux.a210[0] -7547,3251,main.pedersen.segments[1].windows[11].mux.a210[1] -7548,3252,main.pedersen.segments[1].windows[11].mux.a21[0] -7549,3253,main.pedersen.segments[1].windows[11].mux.a21[1] -7550,3254,main.pedersen.segments[1].windows[11].mux.a20[0] -7551,3255,main.pedersen.segments[1].windows[11].mux.a20[1] -7552,3505,main.pedersen.segments[1].windows[11].mux.a2[0] -7553,3506,main.pedersen.segments[1].windows[11].mux.a2[1] -7554,3256,main.pedersen.segments[1].windows[11].mux.a10[0] -7555,3257,main.pedersen.segments[1].windows[11].mux.a10[1] -7556,3258,main.pedersen.segments[1].windows[11].mux.a1[0] -7557,3259,main.pedersen.segments[1].windows[11].mux.a1[1] -7558,3260,main.pedersen.segments[1].windows[11].mux.a0[0] -7559,3261,main.pedersen.segments[1].windows[11].mux.a0[1] -7560,3231,main.pedersen.segments[1].windows[11].mux.a[0] -7561,3232,main.pedersen.segments[1].windows[11].mux.a[1] -7562,3262,main.pedersen.segments[1].windows[11].mux.s10 -7563,3231,main.pedersen.segments[1].windows[11].dbl2.in[0] -7564,3232,main.pedersen.segments[1].windows[11].dbl2.in[1] -7565,3237,main.pedersen.segments[1].windows[11].dbl2.out[0] -7566,3243,main.pedersen.segments[1].windows[11].dbl2.out[1] -7567,3263,main.pedersen.segments[1].windows[11].dbl2.lamda -7568,3264,main.pedersen.segments[1].windows[11].dbl2.x1_2 -7569,3231,main.pedersen.segments[1].windows[11].adr3.in1[0] -7570,3232,main.pedersen.segments[1].windows[11].adr3.in1[1] -7571,3237,main.pedersen.segments[1].windows[11].adr3.in2[0] -7572,3243,main.pedersen.segments[1].windows[11].adr3.in2[1] -7573,3238,main.pedersen.segments[1].windows[11].adr3.out[0] -7574,3244,main.pedersen.segments[1].windows[11].adr3.out[1] -7575,3265,main.pedersen.segments[1].windows[11].adr3.lamda -7576,3231,main.pedersen.segments[1].windows[11].adr4.in1[0] -7577,3232,main.pedersen.segments[1].windows[11].adr4.in1[1] -7578,3238,main.pedersen.segments[1].windows[11].adr4.in2[0] -7579,3244,main.pedersen.segments[1].windows[11].adr4.in2[1] -7580,3239,main.pedersen.segments[1].windows[11].adr4.out[0] -7581,3245,main.pedersen.segments[1].windows[11].adr4.out[1] -7582,3266,main.pedersen.segments[1].windows[11].adr4.lamda -7583,3231,main.pedersen.segments[1].windows[11].adr5.in1[0] -7584,3232,main.pedersen.segments[1].windows[11].adr5.in1[1] -7585,3239,main.pedersen.segments[1].windows[11].adr5.in2[0] -7586,3245,main.pedersen.segments[1].windows[11].adr5.in2[1] -7587,3240,main.pedersen.segments[1].windows[11].adr5.out[0] -7588,3246,main.pedersen.segments[1].windows[11].adr5.out[1] -7589,3267,main.pedersen.segments[1].windows[11].adr5.lamda -7590,3231,main.pedersen.segments[1].windows[11].adr6.in1[0] -7591,3232,main.pedersen.segments[1].windows[11].adr6.in1[1] -7592,3240,main.pedersen.segments[1].windows[11].adr6.in2[0] -7593,3246,main.pedersen.segments[1].windows[11].adr6.in2[1] -7594,3241,main.pedersen.segments[1].windows[11].adr6.out[0] -7595,3247,main.pedersen.segments[1].windows[11].adr6.out[1] -7596,3268,main.pedersen.segments[1].windows[11].adr6.lamda -7597,3231,main.pedersen.segments[1].windows[11].adr7.in1[0] -7598,3232,main.pedersen.segments[1].windows[11].adr7.in1[1] -7599,3241,main.pedersen.segments[1].windows[11].adr7.in2[0] -7600,3247,main.pedersen.segments[1].windows[11].adr7.in2[1] -7601,3242,main.pedersen.segments[1].windows[11].adr7.out[0] -7602,3248,main.pedersen.segments[1].windows[11].adr7.out[1] -7603,3269,main.pedersen.segments[1].windows[11].adr7.lamda -7604,3231,main.pedersen.segments[1].windows[11].adr8.in1[0] -7605,3232,main.pedersen.segments[1].windows[11].adr8.in1[1] -7606,3242,main.pedersen.segments[1].windows[11].adr8.in2[0] -7607,3248,main.pedersen.segments[1].windows[11].adr8.in2[1] -7608,3235,main.pedersen.segments[1].windows[11].adr8.out[0] -7609,3236,main.pedersen.segments[1].windows[11].adr8.out[1] -7610,3270,main.pedersen.segments[1].windows[11].adr8.lamda -7630,251,main.pedersen.segments[1].windows[12].in[0] -7631,252,main.pedersen.segments[1].windows[12].in[1] -7632,253,main.pedersen.segments[1].windows[12].in[2] -7633,254,main.pedersen.segments[1].windows[12].in[3] -7634,3280,main.pedersen.segments[1].windows[12].base[0] -7635,3281,main.pedersen.segments[1].windows[12].base[1] -7636,3282,main.pedersen.segments[1].windows[12].out[0] -7637,3283,main.pedersen.segments[1].windows[12].out[1] -7638,3284,main.pedersen.segments[1].windows[12].out8[0] -7639,3285,main.pedersen.segments[1].windows[12].out8[1] -7640,3280,main.pedersen.segments[1].windows[12].mux.c[0][0] -7641,3286,main.pedersen.segments[1].windows[12].mux.c[0][1] -7642,3287,main.pedersen.segments[1].windows[12].mux.c[0][2] -7643,3288,main.pedersen.segments[1].windows[12].mux.c[0][3] -7644,3289,main.pedersen.segments[1].windows[12].mux.c[0][4] -7645,3290,main.pedersen.segments[1].windows[12].mux.c[0][5] -7646,3291,main.pedersen.segments[1].windows[12].mux.c[0][6] -7647,3284,main.pedersen.segments[1].windows[12].mux.c[0][7] -7648,3281,main.pedersen.segments[1].windows[12].mux.c[1][0] -7649,3292,main.pedersen.segments[1].windows[12].mux.c[1][1] -7650,3293,main.pedersen.segments[1].windows[12].mux.c[1][2] -7651,3294,main.pedersen.segments[1].windows[12].mux.c[1][3] -7652,3295,main.pedersen.segments[1].windows[12].mux.c[1][4] -7653,3296,main.pedersen.segments[1].windows[12].mux.c[1][5] -7654,3297,main.pedersen.segments[1].windows[12].mux.c[1][6] -7655,3285,main.pedersen.segments[1].windows[12].mux.c[1][7] -7656,251,main.pedersen.segments[1].windows[12].mux.s[0] -7657,252,main.pedersen.segments[1].windows[12].mux.s[1] -7658,253,main.pedersen.segments[1].windows[12].mux.s[2] -7659,3282,main.pedersen.segments[1].windows[12].mux.out[0] -7660,3298,main.pedersen.segments[1].windows[12].mux.out[1] -7661,3299,main.pedersen.segments[1].windows[12].mux.a210[0] -7662,3300,main.pedersen.segments[1].windows[12].mux.a210[1] -7663,3301,main.pedersen.segments[1].windows[12].mux.a21[0] -7664,3302,main.pedersen.segments[1].windows[12].mux.a21[1] -7665,3303,main.pedersen.segments[1].windows[12].mux.a20[0] -7666,3304,main.pedersen.segments[1].windows[12].mux.a20[1] -7667,3507,main.pedersen.segments[1].windows[12].mux.a2[0] -7668,3508,main.pedersen.segments[1].windows[12].mux.a2[1] -7669,3305,main.pedersen.segments[1].windows[12].mux.a10[0] -7670,3306,main.pedersen.segments[1].windows[12].mux.a10[1] -7671,3307,main.pedersen.segments[1].windows[12].mux.a1[0] -7672,3308,main.pedersen.segments[1].windows[12].mux.a1[1] -7673,3309,main.pedersen.segments[1].windows[12].mux.a0[0] -7674,3310,main.pedersen.segments[1].windows[12].mux.a0[1] -7675,3280,main.pedersen.segments[1].windows[12].mux.a[0] -7676,3281,main.pedersen.segments[1].windows[12].mux.a[1] -7677,3311,main.pedersen.segments[1].windows[12].mux.s10 -7678,3280,main.pedersen.segments[1].windows[12].dbl2.in[0] -7679,3281,main.pedersen.segments[1].windows[12].dbl2.in[1] -7680,3286,main.pedersen.segments[1].windows[12].dbl2.out[0] -7681,3292,main.pedersen.segments[1].windows[12].dbl2.out[1] -7682,3312,main.pedersen.segments[1].windows[12].dbl2.lamda -7683,3313,main.pedersen.segments[1].windows[12].dbl2.x1_2 -7684,3280,main.pedersen.segments[1].windows[12].adr3.in1[0] -7685,3281,main.pedersen.segments[1].windows[12].adr3.in1[1] -7686,3286,main.pedersen.segments[1].windows[12].adr3.in2[0] -7687,3292,main.pedersen.segments[1].windows[12].adr3.in2[1] -7688,3287,main.pedersen.segments[1].windows[12].adr3.out[0] -7689,3293,main.pedersen.segments[1].windows[12].adr3.out[1] -7690,3314,main.pedersen.segments[1].windows[12].adr3.lamda -7691,3280,main.pedersen.segments[1].windows[12].adr4.in1[0] -7692,3281,main.pedersen.segments[1].windows[12].adr4.in1[1] -7693,3287,main.pedersen.segments[1].windows[12].adr4.in2[0] -7694,3293,main.pedersen.segments[1].windows[12].adr4.in2[1] -7695,3288,main.pedersen.segments[1].windows[12].adr4.out[0] -7696,3294,main.pedersen.segments[1].windows[12].adr4.out[1] -7697,3315,main.pedersen.segments[1].windows[12].adr4.lamda -7698,3280,main.pedersen.segments[1].windows[12].adr5.in1[0] -7699,3281,main.pedersen.segments[1].windows[12].adr5.in1[1] -7700,3288,main.pedersen.segments[1].windows[12].adr5.in2[0] -7701,3294,main.pedersen.segments[1].windows[12].adr5.in2[1] -7702,3289,main.pedersen.segments[1].windows[12].adr5.out[0] -7703,3295,main.pedersen.segments[1].windows[12].adr5.out[1] -7704,3316,main.pedersen.segments[1].windows[12].adr5.lamda -7705,3280,main.pedersen.segments[1].windows[12].adr6.in1[0] -7706,3281,main.pedersen.segments[1].windows[12].adr6.in1[1] -7707,3289,main.pedersen.segments[1].windows[12].adr6.in2[0] -7708,3295,main.pedersen.segments[1].windows[12].adr6.in2[1] -7709,3290,main.pedersen.segments[1].windows[12].adr6.out[0] -7710,3296,main.pedersen.segments[1].windows[12].adr6.out[1] -7711,3317,main.pedersen.segments[1].windows[12].adr6.lamda -7712,3280,main.pedersen.segments[1].windows[12].adr7.in1[0] -7713,3281,main.pedersen.segments[1].windows[12].adr7.in1[1] -7714,3290,main.pedersen.segments[1].windows[12].adr7.in2[0] -7715,3296,main.pedersen.segments[1].windows[12].adr7.in2[1] -7716,3291,main.pedersen.segments[1].windows[12].adr7.out[0] -7717,3297,main.pedersen.segments[1].windows[12].adr7.out[1] -7718,3318,main.pedersen.segments[1].windows[12].adr7.lamda -7719,3280,main.pedersen.segments[1].windows[12].adr8.in1[0] -7720,3281,main.pedersen.segments[1].windows[12].adr8.in1[1] -7721,3291,main.pedersen.segments[1].windows[12].adr8.in2[0] -7722,3297,main.pedersen.segments[1].windows[12].adr8.in2[1] -7723,3284,main.pedersen.segments[1].windows[12].adr8.out[0] -7724,3285,main.pedersen.segments[1].windows[12].adr8.out[1] -7725,3319,main.pedersen.segments[1].windows[12].adr8.lamda -7745,255,main.pedersen.segments[1].windows[13].in[0] -7746,3511,main.pedersen.segments[1].windows[13].in[1] -7747,3512,main.pedersen.segments[1].windows[13].in[2] -7748,3513,main.pedersen.segments[1].windows[13].in[3] -7749,3329,main.pedersen.segments[1].windows[13].base[0] -7750,3330,main.pedersen.segments[1].windows[13].base[1] -7751,3331,main.pedersen.segments[1].windows[13].out[0] -7752,3332,main.pedersen.segments[1].windows[13].out[1] -7753,3333,main.pedersen.segments[1].windows[13].out8[0] -7754,3334,main.pedersen.segments[1].windows[13].out8[1] -7755,3329,main.pedersen.segments[1].windows[13].mux.c[0][0] -7756,3335,main.pedersen.segments[1].windows[13].mux.c[0][1] -7757,3336,main.pedersen.segments[1].windows[13].mux.c[0][2] -7758,3337,main.pedersen.segments[1].windows[13].mux.c[0][3] -7759,3338,main.pedersen.segments[1].windows[13].mux.c[0][4] -7760,3339,main.pedersen.segments[1].windows[13].mux.c[0][5] -7761,3340,main.pedersen.segments[1].windows[13].mux.c[0][6] -7762,3333,main.pedersen.segments[1].windows[13].mux.c[0][7] -7763,3330,main.pedersen.segments[1].windows[13].mux.c[1][0] -7764,3341,main.pedersen.segments[1].windows[13].mux.c[1][1] -7765,3342,main.pedersen.segments[1].windows[13].mux.c[1][2] -7766,3343,main.pedersen.segments[1].windows[13].mux.c[1][3] -7767,3344,main.pedersen.segments[1].windows[13].mux.c[1][4] -7768,3345,main.pedersen.segments[1].windows[13].mux.c[1][5] -7769,3346,main.pedersen.segments[1].windows[13].mux.c[1][6] -7770,3334,main.pedersen.segments[1].windows[13].mux.c[1][7] -7771,255,main.pedersen.segments[1].windows[13].mux.s[0] -7772,3511,main.pedersen.segments[1].windows[13].mux.s[1] -7773,3512,main.pedersen.segments[1].windows[13].mux.s[2] -7774,3331,main.pedersen.segments[1].windows[13].mux.out[0] -7775,3347,main.pedersen.segments[1].windows[13].mux.out[1] -7776,3348,main.pedersen.segments[1].windows[13].mux.a210[0] -7777,3349,main.pedersen.segments[1].windows[13].mux.a210[1] -7778,3350,main.pedersen.segments[1].windows[13].mux.a21[0] -7779,3351,main.pedersen.segments[1].windows[13].mux.a21[1] -7780,3352,main.pedersen.segments[1].windows[13].mux.a20[0] -7781,3353,main.pedersen.segments[1].windows[13].mux.a20[1] -7782,3509,main.pedersen.segments[1].windows[13].mux.a2[0] -7783,3510,main.pedersen.segments[1].windows[13].mux.a2[1] -7784,3354,main.pedersen.segments[1].windows[13].mux.a10[0] -7785,3355,main.pedersen.segments[1].windows[13].mux.a10[1] -7786,3356,main.pedersen.segments[1].windows[13].mux.a1[0] -7787,3357,main.pedersen.segments[1].windows[13].mux.a1[1] -7788,3358,main.pedersen.segments[1].windows[13].mux.a0[0] -7789,3359,main.pedersen.segments[1].windows[13].mux.a0[1] -7790,3329,main.pedersen.segments[1].windows[13].mux.a[0] -7791,3330,main.pedersen.segments[1].windows[13].mux.a[1] -7792,3360,main.pedersen.segments[1].windows[13].mux.s10 -7793,3329,main.pedersen.segments[1].windows[13].dbl2.in[0] -7794,3330,main.pedersen.segments[1].windows[13].dbl2.in[1] -7795,3335,main.pedersen.segments[1].windows[13].dbl2.out[0] -7796,3341,main.pedersen.segments[1].windows[13].dbl2.out[1] -7797,3361,main.pedersen.segments[1].windows[13].dbl2.lamda -7798,3362,main.pedersen.segments[1].windows[13].dbl2.x1_2 -7799,3329,main.pedersen.segments[1].windows[13].adr3.in1[0] -7800,3330,main.pedersen.segments[1].windows[13].adr3.in1[1] -7801,3335,main.pedersen.segments[1].windows[13].adr3.in2[0] -7802,3341,main.pedersen.segments[1].windows[13].adr3.in2[1] -7803,3336,main.pedersen.segments[1].windows[13].adr3.out[0] -7804,3342,main.pedersen.segments[1].windows[13].adr3.out[1] -7805,3363,main.pedersen.segments[1].windows[13].adr3.lamda -7806,3329,main.pedersen.segments[1].windows[13].adr4.in1[0] -7807,3330,main.pedersen.segments[1].windows[13].adr4.in1[1] -7808,3336,main.pedersen.segments[1].windows[13].adr4.in2[0] -7809,3342,main.pedersen.segments[1].windows[13].adr4.in2[1] -7810,3337,main.pedersen.segments[1].windows[13].adr4.out[0] -7811,3343,main.pedersen.segments[1].windows[13].adr4.out[1] -7812,3364,main.pedersen.segments[1].windows[13].adr4.lamda -7813,3329,main.pedersen.segments[1].windows[13].adr5.in1[0] -7814,3330,main.pedersen.segments[1].windows[13].adr5.in1[1] -7815,3337,main.pedersen.segments[1].windows[13].adr5.in2[0] -7816,3343,main.pedersen.segments[1].windows[13].adr5.in2[1] -7817,3338,main.pedersen.segments[1].windows[13].adr5.out[0] -7818,3344,main.pedersen.segments[1].windows[13].adr5.out[1] -7819,3365,main.pedersen.segments[1].windows[13].adr5.lamda -7820,3329,main.pedersen.segments[1].windows[13].adr6.in1[0] -7821,3330,main.pedersen.segments[1].windows[13].adr6.in1[1] -7822,3338,main.pedersen.segments[1].windows[13].adr6.in2[0] -7823,3344,main.pedersen.segments[1].windows[13].adr6.in2[1] -7824,3339,main.pedersen.segments[1].windows[13].adr6.out[0] -7825,3345,main.pedersen.segments[1].windows[13].adr6.out[1] -7826,3366,main.pedersen.segments[1].windows[13].adr6.lamda -7827,3329,main.pedersen.segments[1].windows[13].adr7.in1[0] -7828,3330,main.pedersen.segments[1].windows[13].adr7.in1[1] -7829,3339,main.pedersen.segments[1].windows[13].adr7.in2[0] -7830,3345,main.pedersen.segments[1].windows[13].adr7.in2[1] -7831,3340,main.pedersen.segments[1].windows[13].adr7.out[0] -7832,3346,main.pedersen.segments[1].windows[13].adr7.out[1] -7833,3367,main.pedersen.segments[1].windows[13].adr7.lamda -7834,3329,main.pedersen.segments[1].windows[13].adr8.in1[0] -7835,3330,main.pedersen.segments[1].windows[13].adr8.in1[1] -7836,3340,main.pedersen.segments[1].windows[13].adr8.in2[0] -7837,3346,main.pedersen.segments[1].windows[13].adr8.in2[1] -7838,3333,main.pedersen.segments[1].windows[13].adr8.out[0] -7839,3334,main.pedersen.segments[1].windows[13].adr8.out[1] -7840,3368,main.pedersen.segments[1].windows[13].adr8.lamda -6461,2703,main.pedersen.segments[1].doublers1[0].in[0] -6462,2704,main.pedersen.segments[1].doublers1[0].in[1] -6463,2781,main.pedersen.segments[1].doublers1[0].out[0] -6464,2782,main.pedersen.segments[1].doublers1[0].out[1] -6465,2783,main.pedersen.segments[1].doublers1[0].lamda -6466,2784,main.pedersen.segments[1].doublers1[0].x1_2 -6576,2745,main.pedersen.segments[1].doublers1[1].in[0] -6577,2746,main.pedersen.segments[1].doublers1[1].in[1] -6578,2830,main.pedersen.segments[1].doublers1[1].out[0] -6579,2831,main.pedersen.segments[1].doublers1[1].out[1] -6580,2832,main.pedersen.segments[1].doublers1[1].lamda -6581,2833,main.pedersen.segments[1].doublers1[1].x1_2 -6691,2794,main.pedersen.segments[1].doublers1[2].in[0] -6692,2795,main.pedersen.segments[1].doublers1[2].in[1] -6693,2879,main.pedersen.segments[1].doublers1[2].out[0] -6694,2880,main.pedersen.segments[1].doublers1[2].out[1] -6695,2881,main.pedersen.segments[1].doublers1[2].lamda -6696,2882,main.pedersen.segments[1].doublers1[2].x1_2 -6806,2843,main.pedersen.segments[1].doublers1[3].in[0] -6807,2844,main.pedersen.segments[1].doublers1[3].in[1] -6808,2928,main.pedersen.segments[1].doublers1[3].out[0] -6809,2929,main.pedersen.segments[1].doublers1[3].out[1] -6810,2930,main.pedersen.segments[1].doublers1[3].lamda -6811,2931,main.pedersen.segments[1].doublers1[3].x1_2 -6921,2892,main.pedersen.segments[1].doublers1[4].in[0] -6922,2893,main.pedersen.segments[1].doublers1[4].in[1] -6923,2977,main.pedersen.segments[1].doublers1[4].out[0] -6924,2978,main.pedersen.segments[1].doublers1[4].out[1] -6925,2979,main.pedersen.segments[1].doublers1[4].lamda -6926,2980,main.pedersen.segments[1].doublers1[4].x1_2 -7036,2941,main.pedersen.segments[1].doublers1[5].in[0] -7037,2942,main.pedersen.segments[1].doublers1[5].in[1] -7038,3026,main.pedersen.segments[1].doublers1[5].out[0] -7039,3027,main.pedersen.segments[1].doublers1[5].out[1] -7040,3028,main.pedersen.segments[1].doublers1[5].lamda -7041,3029,main.pedersen.segments[1].doublers1[5].x1_2 -7151,2990,main.pedersen.segments[1].doublers1[6].in[0] -7152,2991,main.pedersen.segments[1].doublers1[6].in[1] -7153,3075,main.pedersen.segments[1].doublers1[6].out[0] -7154,3076,main.pedersen.segments[1].doublers1[6].out[1] -7155,3077,main.pedersen.segments[1].doublers1[6].lamda -7156,3078,main.pedersen.segments[1].doublers1[6].x1_2 -7266,3039,main.pedersen.segments[1].doublers1[7].in[0] -7267,3040,main.pedersen.segments[1].doublers1[7].in[1] -7268,3124,main.pedersen.segments[1].doublers1[7].out[0] -7269,3125,main.pedersen.segments[1].doublers1[7].out[1] -7270,3126,main.pedersen.segments[1].doublers1[7].lamda -7271,3127,main.pedersen.segments[1].doublers1[7].x1_2 -7381,3088,main.pedersen.segments[1].doublers1[8].in[0] -7382,3089,main.pedersen.segments[1].doublers1[8].in[1] -7383,3173,main.pedersen.segments[1].doublers1[8].out[0] -7384,3174,main.pedersen.segments[1].doublers1[8].out[1] -7385,3175,main.pedersen.segments[1].doublers1[8].lamda -7386,3176,main.pedersen.segments[1].doublers1[8].x1_2 -7496,3137,main.pedersen.segments[1].doublers1[9].in[0] -7497,3138,main.pedersen.segments[1].doublers1[9].in[1] -7498,3222,main.pedersen.segments[1].doublers1[9].out[0] -7499,3223,main.pedersen.segments[1].doublers1[9].out[1] -7500,3224,main.pedersen.segments[1].doublers1[9].lamda -7501,3225,main.pedersen.segments[1].doublers1[9].x1_2 -7611,3186,main.pedersen.segments[1].doublers1[10].in[0] -7612,3187,main.pedersen.segments[1].doublers1[10].in[1] -7613,3271,main.pedersen.segments[1].doublers1[10].out[0] -7614,3272,main.pedersen.segments[1].doublers1[10].out[1] -7615,3273,main.pedersen.segments[1].doublers1[10].lamda -7616,3274,main.pedersen.segments[1].doublers1[10].x1_2 -7726,3235,main.pedersen.segments[1].doublers1[11].in[0] -7727,3236,main.pedersen.segments[1].doublers1[11].in[1] -7728,3320,main.pedersen.segments[1].doublers1[11].out[0] -7729,3321,main.pedersen.segments[1].doublers1[11].out[1] -7730,3322,main.pedersen.segments[1].doublers1[11].lamda -7731,3323,main.pedersen.segments[1].doublers1[11].x1_2 -7841,3284,main.pedersen.segments[1].doublers1[12].in[0] -7842,3285,main.pedersen.segments[1].doublers1[12].in[1] -7843,3369,main.pedersen.segments[1].doublers1[12].out[0] -7844,3370,main.pedersen.segments[1].doublers1[12].out[1] -7845,3371,main.pedersen.segments[1].doublers1[12].lamda -7846,3372,main.pedersen.segments[1].doublers1[12].x1_2 -6467,2781,main.pedersen.segments[1].doublers2[0].in[0] -6468,2782,main.pedersen.segments[1].doublers2[0].in[1] -6469,2741,main.pedersen.segments[1].doublers2[0].out[0] -6470,2742,main.pedersen.segments[1].doublers2[0].out[1] -6471,2785,main.pedersen.segments[1].doublers2[0].lamda -6472,2786,main.pedersen.segments[1].doublers2[0].x1_2 -6582,2830,main.pedersen.segments[1].doublers2[1].in[0] -6583,2831,main.pedersen.segments[1].doublers2[1].in[1] -6584,2790,main.pedersen.segments[1].doublers2[1].out[0] -6585,2791,main.pedersen.segments[1].doublers2[1].out[1] -6586,2834,main.pedersen.segments[1].doublers2[1].lamda -6587,2835,main.pedersen.segments[1].doublers2[1].x1_2 -6697,2879,main.pedersen.segments[1].doublers2[2].in[0] -6698,2880,main.pedersen.segments[1].doublers2[2].in[1] -6699,2839,main.pedersen.segments[1].doublers2[2].out[0] -6700,2840,main.pedersen.segments[1].doublers2[2].out[1] -6701,2883,main.pedersen.segments[1].doublers2[2].lamda -6702,2884,main.pedersen.segments[1].doublers2[2].x1_2 -6812,2928,main.pedersen.segments[1].doublers2[3].in[0] -6813,2929,main.pedersen.segments[1].doublers2[3].in[1] -6814,2888,main.pedersen.segments[1].doublers2[3].out[0] -6815,2889,main.pedersen.segments[1].doublers2[3].out[1] -6816,2932,main.pedersen.segments[1].doublers2[3].lamda -6817,2933,main.pedersen.segments[1].doublers2[3].x1_2 -6927,2977,main.pedersen.segments[1].doublers2[4].in[0] -6928,2978,main.pedersen.segments[1].doublers2[4].in[1] -6929,2937,main.pedersen.segments[1].doublers2[4].out[0] -6930,2938,main.pedersen.segments[1].doublers2[4].out[1] -6931,2981,main.pedersen.segments[1].doublers2[4].lamda -6932,2982,main.pedersen.segments[1].doublers2[4].x1_2 -7042,3026,main.pedersen.segments[1].doublers2[5].in[0] -7043,3027,main.pedersen.segments[1].doublers2[5].in[1] -7044,2986,main.pedersen.segments[1].doublers2[5].out[0] -7045,2987,main.pedersen.segments[1].doublers2[5].out[1] -7046,3030,main.pedersen.segments[1].doublers2[5].lamda -7047,3031,main.pedersen.segments[1].doublers2[5].x1_2 -7157,3075,main.pedersen.segments[1].doublers2[6].in[0] -7158,3076,main.pedersen.segments[1].doublers2[6].in[1] -7159,3035,main.pedersen.segments[1].doublers2[6].out[0] -7160,3036,main.pedersen.segments[1].doublers2[6].out[1] -7161,3079,main.pedersen.segments[1].doublers2[6].lamda -7162,3080,main.pedersen.segments[1].doublers2[6].x1_2 -7272,3124,main.pedersen.segments[1].doublers2[7].in[0] -7273,3125,main.pedersen.segments[1].doublers2[7].in[1] -7274,3084,main.pedersen.segments[1].doublers2[7].out[0] -7275,3085,main.pedersen.segments[1].doublers2[7].out[1] -7276,3128,main.pedersen.segments[1].doublers2[7].lamda -7277,3129,main.pedersen.segments[1].doublers2[7].x1_2 -7387,3173,main.pedersen.segments[1].doublers2[8].in[0] -7388,3174,main.pedersen.segments[1].doublers2[8].in[1] -7389,3133,main.pedersen.segments[1].doublers2[8].out[0] -7390,3134,main.pedersen.segments[1].doublers2[8].out[1] -7391,3177,main.pedersen.segments[1].doublers2[8].lamda -7392,3178,main.pedersen.segments[1].doublers2[8].x1_2 -7502,3222,main.pedersen.segments[1].doublers2[9].in[0] -7503,3223,main.pedersen.segments[1].doublers2[9].in[1] -7504,3182,main.pedersen.segments[1].doublers2[9].out[0] -7505,3183,main.pedersen.segments[1].doublers2[9].out[1] -7506,3226,main.pedersen.segments[1].doublers2[9].lamda -7507,3227,main.pedersen.segments[1].doublers2[9].x1_2 -7617,3271,main.pedersen.segments[1].doublers2[10].in[0] -7618,3272,main.pedersen.segments[1].doublers2[10].in[1] -7619,3231,main.pedersen.segments[1].doublers2[10].out[0] -7620,3232,main.pedersen.segments[1].doublers2[10].out[1] -7621,3275,main.pedersen.segments[1].doublers2[10].lamda -7622,3276,main.pedersen.segments[1].doublers2[10].x1_2 -7732,3320,main.pedersen.segments[1].doublers2[11].in[0] -7733,3321,main.pedersen.segments[1].doublers2[11].in[1] -7734,3280,main.pedersen.segments[1].doublers2[11].out[0] -7735,3281,main.pedersen.segments[1].doublers2[11].out[1] -7736,3324,main.pedersen.segments[1].doublers2[11].lamda -7737,3325,main.pedersen.segments[1].doublers2[11].x1_2 -7847,3369,main.pedersen.segments[1].doublers2[12].in[0] -7848,3370,main.pedersen.segments[1].doublers2[12].in[1] -7849,3329,main.pedersen.segments[1].doublers2[12].out[0] -7850,3330,main.pedersen.segments[1].doublers2[12].out[1] -7851,3373,main.pedersen.segments[1].doublers2[12].lamda -7852,3374,main.pedersen.segments[1].doublers2[12].x1_2 -6473,2701,main.pedersen.segments[1].adders[0].in1[0] -6474,2702,main.pedersen.segments[1].adders[0].in1[1] -6475,2743,main.pedersen.segments[1].adders[0].in2[0] -6476,2744,main.pedersen.segments[1].adders[0].in2[1] -6477,2787,main.pedersen.segments[1].adders[0].out[0] -6478,2788,main.pedersen.segments[1].adders[0].out[1] -6479,2789,main.pedersen.segments[1].adders[0].lamda -6588,2787,main.pedersen.segments[1].adders[1].in1[0] -6589,2788,main.pedersen.segments[1].adders[1].in1[1] -6590,2792,main.pedersen.segments[1].adders[1].in2[0] -6591,2793,main.pedersen.segments[1].adders[1].in2[1] -6592,2836,main.pedersen.segments[1].adders[1].out[0] -6593,2837,main.pedersen.segments[1].adders[1].out[1] -6594,2838,main.pedersen.segments[1].adders[1].lamda -6703,2836,main.pedersen.segments[1].adders[2].in1[0] -6704,2837,main.pedersen.segments[1].adders[2].in1[1] -6705,2841,main.pedersen.segments[1].adders[2].in2[0] -6706,2842,main.pedersen.segments[1].adders[2].in2[1] -6707,2885,main.pedersen.segments[1].adders[2].out[0] -6708,2886,main.pedersen.segments[1].adders[2].out[1] -6709,2887,main.pedersen.segments[1].adders[2].lamda -6818,2885,main.pedersen.segments[1].adders[3].in1[0] -6819,2886,main.pedersen.segments[1].adders[3].in1[1] -6820,2890,main.pedersen.segments[1].adders[3].in2[0] -6821,2891,main.pedersen.segments[1].adders[3].in2[1] -6822,2934,main.pedersen.segments[1].adders[3].out[0] -6823,2935,main.pedersen.segments[1].adders[3].out[1] -6824,2936,main.pedersen.segments[1].adders[3].lamda -6933,2934,main.pedersen.segments[1].adders[4].in1[0] -6934,2935,main.pedersen.segments[1].adders[4].in1[1] -6935,2939,main.pedersen.segments[1].adders[4].in2[0] -6936,2940,main.pedersen.segments[1].adders[4].in2[1] -6937,2983,main.pedersen.segments[1].adders[4].out[0] -6938,2984,main.pedersen.segments[1].adders[4].out[1] -6939,2985,main.pedersen.segments[1].adders[4].lamda -7048,2983,main.pedersen.segments[1].adders[5].in1[0] -7049,2984,main.pedersen.segments[1].adders[5].in1[1] -7050,2988,main.pedersen.segments[1].adders[5].in2[0] -7051,2989,main.pedersen.segments[1].adders[5].in2[1] -7052,3032,main.pedersen.segments[1].adders[5].out[0] -7053,3033,main.pedersen.segments[1].adders[5].out[1] -7054,3034,main.pedersen.segments[1].adders[5].lamda -7163,3032,main.pedersen.segments[1].adders[6].in1[0] -7164,3033,main.pedersen.segments[1].adders[6].in1[1] -7165,3037,main.pedersen.segments[1].adders[6].in2[0] -7166,3038,main.pedersen.segments[1].adders[6].in2[1] -7167,3081,main.pedersen.segments[1].adders[6].out[0] -7168,3082,main.pedersen.segments[1].adders[6].out[1] -7169,3083,main.pedersen.segments[1].adders[6].lamda -7278,3081,main.pedersen.segments[1].adders[7].in1[0] -7279,3082,main.pedersen.segments[1].adders[7].in1[1] -7280,3086,main.pedersen.segments[1].adders[7].in2[0] -7281,3087,main.pedersen.segments[1].adders[7].in2[1] -7282,3130,main.pedersen.segments[1].adders[7].out[0] -7283,3131,main.pedersen.segments[1].adders[7].out[1] -7284,3132,main.pedersen.segments[1].adders[7].lamda -7393,3130,main.pedersen.segments[1].adders[8].in1[0] -7394,3131,main.pedersen.segments[1].adders[8].in1[1] -7395,3135,main.pedersen.segments[1].adders[8].in2[0] -7396,3136,main.pedersen.segments[1].adders[8].in2[1] -7397,3179,main.pedersen.segments[1].adders[8].out[0] -7398,3180,main.pedersen.segments[1].adders[8].out[1] -7399,3181,main.pedersen.segments[1].adders[8].lamda -7508,3179,main.pedersen.segments[1].adders[9].in1[0] -7509,3180,main.pedersen.segments[1].adders[9].in1[1] -7510,3184,main.pedersen.segments[1].adders[9].in2[0] -7511,3185,main.pedersen.segments[1].adders[9].in2[1] -7512,3228,main.pedersen.segments[1].adders[9].out[0] -7513,3229,main.pedersen.segments[1].adders[9].out[1] -7514,3230,main.pedersen.segments[1].adders[9].lamda -7623,3228,main.pedersen.segments[1].adders[10].in1[0] -7624,3229,main.pedersen.segments[1].adders[10].in1[1] -7625,3233,main.pedersen.segments[1].adders[10].in2[0] -7626,3234,main.pedersen.segments[1].adders[10].in2[1] -7627,3277,main.pedersen.segments[1].adders[10].out[0] -7628,3278,main.pedersen.segments[1].adders[10].out[1] -7629,3279,main.pedersen.segments[1].adders[10].lamda -7738,3277,main.pedersen.segments[1].adders[11].in1[0] -7739,3278,main.pedersen.segments[1].adders[11].in1[1] -7740,3282,main.pedersen.segments[1].adders[11].in2[0] -7741,3283,main.pedersen.segments[1].adders[11].in2[1] -7742,3326,main.pedersen.segments[1].adders[11].out[0] -7743,3327,main.pedersen.segments[1].adders[11].out[1] -7744,3328,main.pedersen.segments[1].adders[11].lamda -7853,3326,main.pedersen.segments[1].adders[12].in1[0] -7854,3327,main.pedersen.segments[1].adders[12].in1[1] -7855,3331,main.pedersen.segments[1].adders[12].in2[0] -7856,3332,main.pedersen.segments[1].adders[12].in2[1] -7857,3375,main.pedersen.segments[1].adders[12].out[0] -7858,3376,main.pedersen.segments[1].adders[12].out[1] -7859,3377,main.pedersen.segments[1].adders[12].lamda -7860,3375,main.pedersen.segments[1].m2e.in[0] -7861,3376,main.pedersen.segments[1].m2e.in[1] -7862,2699,main.pedersen.segments[1].m2e.out[0] -7863,2700,main.pedersen.segments[1].m2e.out[1] -7864,256,main.pedersen.adders[0].x1 -7865,257,main.pedersen.adders[0].y1 -7866,2699,main.pedersen.adders[0].x2 -7867,2700,main.pedersen.adders[0].y2 -7868,1,main.pedersen.adders[0].xout -7869,2,main.pedersen.adders[0].yout -7870,3378,main.pedersen.adders[0].beta -7871,3379,main.pedersen.adders[0].gamma -7872,3380,main.pedersen.adders[0].delta -7873,3381,main.pedersen.adders[0].tau -7874,3,main.n2b.in -7875,3382,main.n2b.out[0] -7876,4,main.n2b.out[1] -7877,5,main.n2b.out[2] -7878,6,main.n2b.out[3] -7879,7,main.n2b.out[4] -7880,8,main.n2b.out[5] -7881,9,main.n2b.out[6] -7882,10,main.n2b.out[7] -7883,11,main.n2b.out[8] -7884,12,main.n2b.out[9] -7885,13,main.n2b.out[10] -7886,14,main.n2b.out[11] -7887,15,main.n2b.out[12] -7888,16,main.n2b.out[13] -7889,17,main.n2b.out[14] -7890,18,main.n2b.out[15] -7891,19,main.n2b.out[16] -7892,20,main.n2b.out[17] -7893,21,main.n2b.out[18] -7894,22,main.n2b.out[19] -7895,23,main.n2b.out[20] -7896,24,main.n2b.out[21] -7897,25,main.n2b.out[22] -7898,26,main.n2b.out[23] -7899,27,main.n2b.out[24] -7900,28,main.n2b.out[25] -7901,29,main.n2b.out[26] -7902,30,main.n2b.out[27] -7903,31,main.n2b.out[28] -7904,32,main.n2b.out[29] -7905,33,main.n2b.out[30] -7906,34,main.n2b.out[31] -7907,35,main.n2b.out[32] -7908,36,main.n2b.out[33] -7909,37,main.n2b.out[34] -7910,38,main.n2b.out[35] -7911,39,main.n2b.out[36] -7912,40,main.n2b.out[37] -7913,41,main.n2b.out[38] -7914,42,main.n2b.out[39] -7915,43,main.n2b.out[40] -7916,44,main.n2b.out[41] -7917,45,main.n2b.out[42] -7918,46,main.n2b.out[43] -7919,47,main.n2b.out[44] -7920,48,main.n2b.out[45] -7921,49,main.n2b.out[46] -7922,50,main.n2b.out[47] -7923,51,main.n2b.out[48] -7924,52,main.n2b.out[49] -7925,53,main.n2b.out[50] -7926,54,main.n2b.out[51] -7927,55,main.n2b.out[52] -7928,56,main.n2b.out[53] -7929,57,main.n2b.out[54] -7930,58,main.n2b.out[55] -7931,59,main.n2b.out[56] -7932,60,main.n2b.out[57] -7933,61,main.n2b.out[58] -7934,62,main.n2b.out[59] -7935,63,main.n2b.out[60] -7936,64,main.n2b.out[61] -7937,65,main.n2b.out[62] -7938,66,main.n2b.out[63] -7939,67,main.n2b.out[64] -7940,68,main.n2b.out[65] -7941,69,main.n2b.out[66] -7942,70,main.n2b.out[67] -7943,71,main.n2b.out[68] -7944,72,main.n2b.out[69] -7945,73,main.n2b.out[70] -7946,74,main.n2b.out[71] -7947,75,main.n2b.out[72] -7948,76,main.n2b.out[73] -7949,77,main.n2b.out[74] -7950,78,main.n2b.out[75] -7951,79,main.n2b.out[76] -7952,80,main.n2b.out[77] -7953,81,main.n2b.out[78] -7954,82,main.n2b.out[79] -7955,83,main.n2b.out[80] -7956,84,main.n2b.out[81] -7957,85,main.n2b.out[82] -7958,86,main.n2b.out[83] -7959,87,main.n2b.out[84] -7960,88,main.n2b.out[85] -7961,89,main.n2b.out[86] -7962,90,main.n2b.out[87] -7963,91,main.n2b.out[88] -7964,92,main.n2b.out[89] -7965,93,main.n2b.out[90] -7966,94,main.n2b.out[91] -7967,95,main.n2b.out[92] -7968,96,main.n2b.out[93] -7969,97,main.n2b.out[94] -7970,98,main.n2b.out[95] -7971,99,main.n2b.out[96] -7972,100,main.n2b.out[97] -7973,101,main.n2b.out[98] -7974,102,main.n2b.out[99] -7975,103,main.n2b.out[100] -7976,104,main.n2b.out[101] -7977,105,main.n2b.out[102] -7978,106,main.n2b.out[103] -7979,107,main.n2b.out[104] -7980,108,main.n2b.out[105] -7981,109,main.n2b.out[106] -7982,110,main.n2b.out[107] -7983,111,main.n2b.out[108] -7984,112,main.n2b.out[109] -7985,113,main.n2b.out[110] -7986,114,main.n2b.out[111] -7987,115,main.n2b.out[112] -7988,116,main.n2b.out[113] -7989,117,main.n2b.out[114] -7990,118,main.n2b.out[115] -7991,119,main.n2b.out[116] -7992,120,main.n2b.out[117] -7993,121,main.n2b.out[118] -7994,122,main.n2b.out[119] -7995,123,main.n2b.out[120] -7996,124,main.n2b.out[121] -7997,125,main.n2b.out[122] -7998,126,main.n2b.out[123] -7999,127,main.n2b.out[124] -8000,128,main.n2b.out[125] -8001,129,main.n2b.out[126] -8002,130,main.n2b.out[127] -8003,131,main.n2b.out[128] -8004,132,main.n2b.out[129] -8005,133,main.n2b.out[130] -8006,134,main.n2b.out[131] -8007,135,main.n2b.out[132] -8008,136,main.n2b.out[133] -8009,137,main.n2b.out[134] -8010,138,main.n2b.out[135] -8011,139,main.n2b.out[136] -8012,140,main.n2b.out[137] -8013,141,main.n2b.out[138] -8014,142,main.n2b.out[139] -8015,143,main.n2b.out[140] -8016,144,main.n2b.out[141] -8017,145,main.n2b.out[142] -8018,146,main.n2b.out[143] -8019,147,main.n2b.out[144] -8020,148,main.n2b.out[145] -8021,149,main.n2b.out[146] -8022,150,main.n2b.out[147] -8023,151,main.n2b.out[148] -8024,152,main.n2b.out[149] -8025,153,main.n2b.out[150] -8026,154,main.n2b.out[151] -8027,155,main.n2b.out[152] -8028,156,main.n2b.out[153] -8029,157,main.n2b.out[154] -8030,158,main.n2b.out[155] -8031,159,main.n2b.out[156] -8032,160,main.n2b.out[157] -8033,161,main.n2b.out[158] -8034,162,main.n2b.out[159] -8035,163,main.n2b.out[160] -8036,164,main.n2b.out[161] -8037,165,main.n2b.out[162] -8038,166,main.n2b.out[163] -8039,167,main.n2b.out[164] -8040,168,main.n2b.out[165] -8041,169,main.n2b.out[166] -8042,170,main.n2b.out[167] -8043,171,main.n2b.out[168] -8044,172,main.n2b.out[169] -8045,173,main.n2b.out[170] -8046,174,main.n2b.out[171] -8047,175,main.n2b.out[172] -8048,176,main.n2b.out[173] -8049,177,main.n2b.out[174] -8050,178,main.n2b.out[175] -8051,179,main.n2b.out[176] -8052,180,main.n2b.out[177] -8053,181,main.n2b.out[178] -8054,182,main.n2b.out[179] -8055,183,main.n2b.out[180] -8056,184,main.n2b.out[181] -8057,185,main.n2b.out[182] -8058,186,main.n2b.out[183] -8059,187,main.n2b.out[184] -8060,188,main.n2b.out[185] -8061,189,main.n2b.out[186] -8062,190,main.n2b.out[187] -8063,191,main.n2b.out[188] -8064,192,main.n2b.out[189] -8065,193,main.n2b.out[190] -8066,194,main.n2b.out[191] -8067,195,main.n2b.out[192] -8068,196,main.n2b.out[193] -8069,197,main.n2b.out[194] -8070,198,main.n2b.out[195] -8071,199,main.n2b.out[196] -8072,200,main.n2b.out[197] -8073,201,main.n2b.out[198] -8074,202,main.n2b.out[199] -8075,203,main.n2b.out[200] -8076,204,main.n2b.out[201] -8077,205,main.n2b.out[202] -8078,206,main.n2b.out[203] -8079,207,main.n2b.out[204] -8080,208,main.n2b.out[205] -8081,209,main.n2b.out[206] -8082,210,main.n2b.out[207] -8083,211,main.n2b.out[208] -8084,212,main.n2b.out[209] -8085,213,main.n2b.out[210] -8086,214,main.n2b.out[211] -8087,215,main.n2b.out[212] -8088,216,main.n2b.out[213] -8089,217,main.n2b.out[214] -8090,218,main.n2b.out[215] -8091,219,main.n2b.out[216] -8092,220,main.n2b.out[217] -8093,221,main.n2b.out[218] -8094,222,main.n2b.out[219] -8095,223,main.n2b.out[220] -8096,224,main.n2b.out[221] -8097,225,main.n2b.out[222] -8098,226,main.n2b.out[223] -8099,227,main.n2b.out[224] -8100,228,main.n2b.out[225] -8101,229,main.n2b.out[226] -8102,230,main.n2b.out[227] -8103,231,main.n2b.out[228] -8104,232,main.n2b.out[229] -8105,233,main.n2b.out[230] -8106,234,main.n2b.out[231] -8107,235,main.n2b.out[232] -8108,236,main.n2b.out[233] -8109,237,main.n2b.out[234] -8110,238,main.n2b.out[235] -8111,239,main.n2b.out[236] -8112,240,main.n2b.out[237] -8113,241,main.n2b.out[238] -8114,242,main.n2b.out[239] -8115,243,main.n2b.out[240] -8116,244,main.n2b.out[241] -8117,245,main.n2b.out[242] -8118,246,main.n2b.out[243] -8119,247,main.n2b.out[244] -8120,248,main.n2b.out[245] -8121,249,main.n2b.out[246] -8122,250,main.n2b.out[247] -8123,251,main.n2b.out[248] -8124,252,main.n2b.out[249] -8125,253,main.n2b.out[250] -8126,254,main.n2b.out[251] -8127,255,main.n2b.out[252] diff --git a/test/circuits/pedersen_test b/test/circuits/pedersen_test deleted file mode 100755 index 154e24136168d14b912d471fff4910426f1a33fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2375156 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�W$%bZtU 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

iBZjKB6o)EO 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

~a6Zh0ut z<$0Eq$Sf`V@*o(NXO1`3MLBufj=0>QxIC~s<67%^D$#&)!{nFIY4ghn7X4`d3*tVbQ3%jzxpF zbSx-Q7Be{z&CP?kJC)dJ=!D3sSc!g^b{!ym+_kcycacEeCs?W=^35z<_ zbu4PVrDH*fvbc-m&nzuG3j_m;?Yyb7=pYLt28-j+$H7$qYH}3-XSr;(;~;tu`dzm@ zf5Jbr@Y>yATVnznwxQ~~vb@5!T6G=UDsSo7Qlf16y+9^Q3(pq8z;=>1Rkm$pYs6r2 zCi*>K3pHU&nleRnY@d&BS;L=Bj@|{fl_s!Z8>)^|wiT-D*p_=s$CeUh`#Q&tSz36u z2nM#}y{WQoAzLE`+u!572-reR*pjAsDBDjscFfYkvqdnlUEocXZ4=oVG1&eU=TE>EYQmN@*yg;YV@rv$U6=cZEG;}+ z1OwY!y{WRTBU>W|+xyT_0b8gEThf#lpB&pw;``(9{nNS}*!G#ghHa?2kF6*(!#SvFtEMSn=0EHvNd9`eHtAVu!WkiB~5wH$+6u555lTv*EZZA z9(V`XcA3D2ZK!&fw1Kegbh4U14UE6Xb^+Ev%BS(~?XYetE#*=d|^W@+Kq48g$mbZ@F_RzbE# z47Qu#yeM3Y@T={6Zv%@~sT~g>9qiI<^ho z(y^sP+1|%lW|kJ7ErNmVRBx(mN8iUYff0kn@#yz}E!2c9Y07W$@PDHBNPNE?n&YyrS)PyZ*%3R2?{lM>k?KLzU_N+{{l_s!Z8>+4)O)qO(p}LN3xwmv| zDN(jxa6gizg=dRkU_0KMD%*atHDa*62Io(}7HYzlH032B$99=G+wcLs>SnBMnF(yz zhN_!M(+k^C{*!pgPEY^O?(`s0wyP*xT6ney2DS^lsj}@OTO$VBo6%7LTc`=X+CS z+fBAc47LxVqXM>26Skx&e|^ZY-K=1@Pei^K(Q9|7(;MgYY*oU4#&Xh4sLFsz&{QQ< z-9*|&s?x8zt|~ci>8e7BR%J!*(z3MhRY5RRPzPfo_nfz0k65|HF%effcV`I#2hc|iI zh(K?f^S!6XkUc} zBT$V(0}*Hqh594Vr&!j^ez^$rqC$NU=x&92BGBIy>W)CaRj4Zh{YIhA2-K)hM+Dkg zq4o&0p+apDXgNZ&Tff5E@b_ePUEYujMSW&=OB{Vr(dIaMouW-~^mmFj#?j*yZHS`> zDOw*#w^y_-j;^I>Z5;hXE&;-~CXPOaYtDq0>#_f)hj zj!sr|^vme_F0bfF9DVCXR%7`8vv%HrQB+$44$(h)6`yprWzI z3W_B@Me$Rg@gWMvJYzxe*%m9PNGxc?wt@;OO6;+qu?Inol~~a4lsjk6?4In*vi`Ht z`@3_?nKO6p{IU~l`Wn*)n=WEnZ_{g;*4gx2rYmeZiD|;7Lzvduv=`GFoBpww<~!e} ztC_}a`W(}_Hl4?`+NLv@&a&w#Oe<_Uj_GupZpXCTrX840vFW#uQ8dbIx{7J3O&?}j zV$XGMouHoc2!u1#k$&9UiZ zrp+77>vw;qO*Y+uX`@X$F>SEv_m5CC>TUW4(>j|z%5;TI=P*s!^a7@}Ha(JQjZH@| zoo~~=Oyf5F`(c{zT$_H%wA!Z2n9j24JxnWXdL`58Ha(4LxlIpXI>n|tF)g!c7pA2) z{h@}UQDW1#m=@b~G1DTO-o$jMO)q3xXw##a7T9zo(|nuuW145vR!n0y{d^HcBiE)c zGR?8+eN3DGG_T*;Oq*;vm1(0*CopZW=`Kv`ZQ7M-olSpwh~~S(rtdIK*z^gewKlz( zX^l-UVmjZZ$1;uEbQIIMHto-}+NQ0U&a&y33n>~EHeJqix=j}_Ew^bU(=glWD_k7t@^)6q<0HXX<` z*QRZl=GgS>2PhiNf0)uoxbX`M}XXS%|s-I*qAy8eEe zZ>>$=XIf*^r1|BoHocVTT$`T2wA!X)n9j24Af^>IZO3%FP1h`-Xq4OZRi;yH zx{zs^O|M~EYSVL=me}-Aro}cL%(Td+J(&)*>2LFCzJ)gZkZFNUpJAGB(>s{v+4M4| zF`J&mG}oqMndaDZTc*vwo7Zo9rcE|odmlxk(Wb94ZLsMgru8FPGeeR(<7J;wdpXXg*NTYw7{kt?xy+X+w>Er zc{Y8XY0Rc~G0nB8DJqZMuxoz?Mw?Dx+F;XNnAY30E7Llg z{&WY;cZE&gVVbb%6HIGudNb1+n_k3pzDZcK}9`pa!J-y)m7$8@MopJZBS(_5Gp z*z^*n`8GYCX`W3-GmY7FAk$o%wqcrM)30x(Xf)G5S(ozr!Izmf+4KRXjW(@f+F;YO znbzBMBGWpX?#^_DO}jHq*mV6ZG~ZgAzR$GArcW`QZ`0eD#%+2j)44W1foZi($1t5` z(?LutY}$_LbepdEA4Q|wrmr%cV$+38%WQfL(^8wB!?eVvhcYd;>0qWsHtorDs7-&n zndVz)(+`;z*z_5u`8K_SX`W3lV;ZyRNlbHXI+kgUO}Ay*O#i$<%JtixX_HOY&ZTHH z+VnN14K`iGwBDxIGOe@exlC8sbQ05qO@}b8wP`P=H8%a@CYtYjo33UWx9M|C=h}20 z(`uW}U^>gDr!cLs={Tm-ZMq%Pa+`KwI>n~n-bm3Xv*{|Pr8a$-X^Bm*XIgC2X-tc3 zdIZyEGAW zeCOKqQ>N86UB+~lP48h^Vbd#_PPgf4Ov`P00MjWp-HB5EKrY8?ym zY}$=!u}y#ZFU_~ertdKwYSSl~7TWX{rUf>=glWD_k7t@^)6q<0HXX<`*QRZl=GgS> zDvCxkeV;t#`hA&clT9CB+Gx`%rVTbdn`ymGCo-+G>F!Kd*t9#-giY69P4lg_>HAD; zZ2A<_`8K_cY22olGM#JF6PQ-pbPUs3HXX#Y!lvz*PPgfrN{U9gO$AA#x!QrlbGh( zbS%>xn{LarnO<8+xqjO-ZL;aw*%XaNo4&@h!KRCt*4y-2rgb(wm+1Kh8< zfL6b}Y*O*;FN-f*SG@_o#qx~%HYNUe)_bvK{*^Gf*<+hwbb<0}F2}c00_D@W9A8NZ zl$UXNLvndBm*dMQf%=79j&Gs_%JaA!UqcC$=WuzVxN>Y_$!7RgPSxNZ9XF$wbLyVN z6BMjpcLmK0UrY(KQ_JP}R!X2e&gJ+@N}zlem&cRK%efq1MhVm}<#K!zB~V_(<@g#( zpuB*~E0W7&R6cV$zrGMSN^wVCeilK}dFk$d$dfSzOI-a84PyBU=lea&X%-Z%*y zbrvJ{x(WX9&dbWp_`D3QO+7C|`6%}qN}$2MjE3?s@Q2sng-_v(mp6X>L~4UyUry0* z@1_JAT*;`wnAgLM+*>Juqi$rB$4B80Zx}zf=XsSG!zkmU+^Z^q2FEhW^L)^^D35^bDgZ2D+0` z86*7R4I{_R>kMNUXYf&_MuQU>l`z5|UV{rU*I{1#)=6+N?9E3N8x7_#Dl*WQ6%>u3 z26}~2p@9}LDlpIujPe=b4{z|lwc)dT+@q-{Hf)Iw#N$ezU+i%__y!;G7S4HY?SXoy0t@&xoUB{ z%fEH4ZAYy&`$uwXO_g(08MZduZ;fAY#n)IT!DeDwBjqkVMbJ6co!yte-<(@c*!FxL z`qTf1L;pFsvqt#$lKnDl?Igc5-P#>T!O&-TLqCgJYx0lep*O(aHt@@^wM#EG1JUJd z2y0s}tohX1I{!#+tsedwqhE%t?drGY0s%XoNevK)I>g`5<3&m!PG2y!-!tc5JAec6 z=!F=FM!#Y1tgdp7D#O-}@;lRk2xi17)Y=!xt*xk>qsp+g^ZzY@a6^a9*Q5jty%zB< z_Rxb-Z=Q}rZ%FQ}2L8r^Uxux z3|qVP5}BEfQ!v*@Qfu|et<8mhBiJv))(-Mpb8&*r-=sJUy&Cai+KQ!@rg77h{71{RTM}?nUZJ74U~+Xx|Ez-t_~f=P-L& z@xHyDdGBzJ$Q|cnL{|9CbFbJ2{5eg(7<(P#_o^EV2IU}X@CE-!Zg2`UsEV<{V_+FH z*2-X9HcZ12CXyS(eK!0R3cnZ|?BF-(;)2!S?*?G^5Smi_0rgJ9&42159SqIo)bZ1P z4?L3+>R1(HgV(`2<{ESzV>Rfwm^&_V9q)rrS=_O!M+E-d6xS!W;M;KXo2Pur_%j*arLsQok4{a=bqg-C!^>r&EKE`A2eO z@~J^pj15kQWimJutOk+6jX#`{82*5I^qdx$F%kGX-CQrn)q4oH?Ww0OIOCVk#TnNm z53m{T^zip7{9^3*Jy@TD1H@`DK@T5?AM|_R$TU*Nsu&wQ z&hJ<^7|i~^|AjM|pWI*rHK>ZQ!A^dIF1fH8%mllKP}k!Rs5ce&`mp?RDb3FXzN*uV zKikvp@k0N!>A?k;(-UcMcP9_74jQhUql&T9a#-Gs^A-$WS86bx+~5joP!(f?{rm>q zY_S^5E5Y-s#UD^_70p)NH>!xhBF*(`T)j#7q>!3e!P8NG4xWx%lLt5-+JJxBz%Ry* z{|zf)FtM;243K(+KPKZkrl*(Gj)Rxn`f}`euHOSE)?DgX6=TP3QaZ+J&~Y{WSUk&h zyx5ZsVuHK`5dpc*D->sa#f4gyS@nWhlKrNoXDH70vo3!7@5^)V`QrRBRMits6kbX4X%ZSD>xIZ29YVFAB#)z z2h_VIWyVC{pE}`s#jf6Ld&eA{@m@5*tCI&<1Z`B#QN`Ht_>=)+H5efE2!DLhb^N>C zaq#k7b{0lvR&vLM)UhhYj^BWV%LsMw^86PyczJSz1=OG_#s(|=23>MtHJC|0{aBob zKcHTrKNDAv2>f#=TrcM8J??L8b#etS&o|D*8CN6^Fc;c@toDns<4<6%3FZP;g8@>H z@b~vz$M;ajbLfBF36RzDw)MPP9zdsU0z8+|I-~!T%~sS6{q>>gFaV8OGio%BYJ_zL z{vuF=fnH+-k3T7WJ;JEYKsPahCy$h)E@qT4&fOB zK)=Ak08@rNf67rGFoOMl3VM#wECb!msKP+A33-2gDEYihWm--fkCYxKFr8x4U6_{H zv@28I#HFro72a>GvY0h4!(>GR57Z5y??Z^KIIn zDR1>s`fbgW_jxJwOIU0m8od2Wq05=_9xa6~VA@O0ab9*6ehUi+Wp`%=*UXruknTp#bA)K0$pyNcU! zIo>)0?RVvJyl)1|f15({t$=<%j0J@%$yN3qQ zbVlw58bHS~a(B-F+J}+5bq3J3jNE+_5$_-IzlxV!QZT+}uOq)|#}6ml9*_ISec@(S zS%sf&w#7?=f4uwjldu}zYtvS{;1rDIOuXw>Qf>J2!G5E96qPxj9n$81W@y;3=`;!$#^0W;CLz*>!|`h8Y5OYw%$Ac zN8_7XQ2z4GR9@$mk8$M>Q#s`kZ{a7^yT3rY5G=y%vFm1BvM#5~<@@1P%;}@&9y|m0 z9E+jF?L=i2eztH18c)D#eZs2!0+EC>5Tl01!fy&@y6ps=eE#dDRKkBO^<&b9bEvxi z$5OEu`t!j4aP;_tC*)unSWc9xr98N1S^{ZsO}rYa!BGhhZZr>$s{4b(p6IXn`iIi< z?}QcbD-^#BPv3W#E0qW~g@fQ9lJp0O_>@!m>_U(l)Pe3#yyC@DDSzUXD@;q^aeZk^ zug`u0oP3@9W!Lw~)6o3tliQsD>!^Z2RJkH91-roZNTBI@z6>(;Qn8#~`i z!o>gZ6fbYw@g^L;9tNzbY8Z$3!>CIcMjVF0rPJnOW8d<#p&AAh(=a|ny*;*Z#wCrA z(JR_U$mq9@!c<)eeO6ZCr#HwY!GGka2Q57-!m15~{DL!-poS=@wW>`%SyaNq?MNDr zmDr4>xs{uDS+o?qJ{*Ec^O)bt{FGLxgj;zD#A2%i{F4e?zuJrazIfq7xN7EL?8jEa zKVcB_*fx&c;In*>J=DmL&C`8W=&{cnJH}^49_z7&k1O(7iO0q}wzbd7JoazLa(!0r zu}2(RcY`;FM!E5QHVBO=I^WTyLh}{o;G(1fC|J33uxouWD4@u-dx+Mwuej_xJ2Nzs!X-3n+WU$1kEpKsW- zc=l4dKwIHGa4ucORrsTF4z2-}i}k_;7xa;37!X=a^{p;=tNwiwE^Ig8@m2WQ!ooI^ z*1zhoYU7WAF2Pn(L$t6}aGO-({=G_UrK-;+UQfK-Q9WL$`ksg5p2LT@<*rpd{JSE4 ztL5CPzqHSx5$9i zN|n`}X%2TTcT=vwzs6pL`|`kT47TX%HdaXniP|kmZg)Zj%$-XYPsf`(jAI}@b?VNU z(9NtfGzK@bH9Nb%p^>yV9<$qF8#b&vcA(pp9)_p;K%8t9etM%!`l8H1rC6=lub>m? z*#nMQ+-~R-?prVesp`H_s_qC$1fd*?z0brWU@NVTqkkEv9CtNyR58x~H%u%3OX4ii zD;Mj*Lya?G$LZ#xhZ>xG=RpmEZO%B0H=Hc;G z_$jdnev4%6;aF`8zk-fMa3!gkh*e|MB7RDX!GHbWCt7eihE>afw1Qm8!Fn^Xw)efQ zsxpeopP1&0bw4okH!#5}T@4&G{G&5T+xjHT#>#OA9KoJlkGP=%k~@k@f=iP?^3 z^0Qx|<=EUnEjCe$_$e(0WAh$eo$JD?eE}y0V$;A4(GQnOcqpdQM}(^IA)CMN1HS?1 z+O%pxAnwIhbt0{FI3Wf0h3iU3qU)1ybYuT^;ys zwmJqz6{At5^cjrO!_-)vf259ku<8;xMG&bKP`7d>9x;373+gz!%1S6msu-`KzV<+Z z*U+;E;p7w8colxiW1!D&nDVLj>)?zYqwBWTKeFY? zKLgnWlds{r^uwhI9*$}9plXIlknF8VdrTsT1g@~bVZfABQw2|A6|Vv<%) z@En~+b&OWH$!fHiQNlp~V+0SIlpp%2OBs1yPNS0op+)xR_EkRR9-qxtCuejPtnMOD-wT z;c_ptq`VO>K@iMdT1j~wmqSkZ0(j_ESa*3Nz3akfQtHRKzL#iHK8wq}ER*tbE{7EJ z1@LFHxqW)qC8_-)uJ7gDvz%P;y(%vEl1|!>ak-aqQr--!1k4xG%@@F@yMEob(lF7a z{tBvZ3gCr|R07IT*D+GrC+Gr3D)j^%!${?wpwWy}(h1szk;*u|@CA1w+w70)GWyW8 zX7{uSSgk0m+WBycgJpCm*2_cyZ$`}*`j?0vaL_k)<1PxQ3p^r{0R9{{T(I1_Qlwc4;DcyjIesrKpSvS?aLu&Oq`@_*Ehj(R zQV9>PhzCd2H%b71i@DOW06rOZnsCJvzbFBoHY2mB$yjj-*^H1 z;)%8Z9)lM?EC7ox#a@B}c#vb)`z+sEI68gAit7TOi2xq$*wH>K@{XJ4*eIWg0AAqO zK%bR)$E|j(ozFx7cU{e6SxevZ!a4W?c&uZqJQfhZ7dZN`&^YYqygnB=dc9CBfIoC} zn$Uzgw$sNvrXz%E0X)jlVL}_!vFAA2Tc{SmcR9M@5_iS|0{9(AKM@*Ja*cz0J|dLQ51~<>>xG%M@+Zz@yqhXt|=hJK9NTg`%f8`u)XT zG^!Q7$*C*4iC!Zdo1>2=(f2X14qMOOm&Dsn5d@RuaFJE0;~01u#t zPIX(HGadIPe0S&sjYSr~o9&IK`#?I6`00%@NdQmS2dhOAzyqjiBmukwBoSoCQ0zS; z0o;sfl~w?s0Xt43*Mq{Q(@30EAx$1XW%5A*TrwJ~?dVs~S5Hs?52C7(1n|ydX!7~o zEdAIh0laQ3#R8wYD(B!JQv`4sMJwgH55}U^UO34-JU*QO-nR&=MH0Y^Mqt$#wTPb* z-JrqxkrteeVb%VI$U?5#4;i zY7swMh|Rlnb%qMy&*7v%Y{>jp@{f!K@I9E0X$5dE3T8;CmJGvC)zifAQzjM^z#Hhw z3m3p$XjCbE1~aIJ8mser)7NLP>XUGaAX1qN;6C<1g4fV9Lviw<0yu}p8!mu1hn3XD zujLs%O4n^|l*vC0*#wg(^IOS3Hc9};Xk4ZMZi82;Er7qlB((+bDn_2B(|YwWMhO=O zjc#THvX1gYqkl8RAKb> zJfW5Z@Lf#HeHWnzGm|Oa42+g1GgTH&AG<$OCE_&QfoX}|awn$6HvJwFFEar=j#4#M z0Pn)(^=@*a1AB6LU2^%~aH)a#^fF88f6e7yT1ojTE{B}*1@Msbu#M%7cfc>!liR<8 z>wAeN?Oe&_UY1Gu*<2on_T%0&<)`Oz`=gBZM{#{G??eD^%jI6uN&8*6d{*)}*TX82 zEPzjQ{VqQ{bzaMxrkqEe@8^j0JFeYQE6FMD&1z0(f)oq5y{y{Tsla!G;T# zo0bIdkr**0fRDuQctTz;KaRE|)+7P^065Of1n^zEVrcUzwD{@rGxxCIYzJv2Xab zhkyXS+p*U@77)PiI$9$%u0(9^8$6!tglYji+|l!dCe*QKIC{8HEr4%#bg0kP|;T$y zO>QN+0Par@o$9uz1#m}bEV2M@Ux26kKst~3>5Vc;03Wy`R*NKn`%~3O0(g5!BHT)2 z?->c;^_W&^1@KhZaT>WE6gC~V#aR{7(#k^kbt0@Y-D{7E@qz+JXQ+o}!g<-3Mclvkgu%k79wJ5{uwBfX8f))glSthX!HQ z7`2F>(qhob{Xh#&$FORDL1ZCUa6wHuNJvk6Vh3Yr$H-P`7D=%CCccxLL z^cl>cMbua%0bC2G2qKla0PbxMBzO%yJpd;kDuDl{OD$XgcZHSISi^#oe}o!~B!HiS zY=X&WEr7ewxJ&`ODPE=kZ zc#KRrY8<1ufp%o%i8$S0S4N(T(*pQc%(hBX0Ds7+!sshOs3ie>CsXC$^k6P$iZ=tJ zd5fcK+RO%=d9b9ud+oan$FTwa%4{ue9_ zmH_^W%e}Occ3$Ul$SGd{?|B@yvApqi_{Dm1`?qs_FVUo(E4bXtGATcc%j3|#2;hce zx&6J3_V?!cUfziS-iFJ)q?7hLb2;oTDZ8coS6C&I1@IKt?@LFf&g&(rZwlZC7^wu5 zUaA?X>=QJNkxD&5M=?@)CukHSm2`r(W~4Gs@5+MDG+Xz@bvaZ3PwtP^if|*9?k`20 z2e&v_Ml%+`xzv22e~IV;2L*6f?xFyP5?ug)3L7q1Zdww+r5G_KfJ^Z^o{-ls9YN(H zfQwxDLsU+Alq7)f2gjM20KT&~hBluKi41*J7@;EPzjhou+$aZBUzV^E*pifd%lE z{>Io8!0)26j4FW7@t?+$1n}`_)(rvt488ETyb<53^OA+eob(OggZ*LDB~LF!0Dt2@ z2qg*NdQc;o3E;XsOx2b6IFjy9Ky;&}CsY9ELw-R9s&Zm^$XnJYaR;-;K7bA5*k+`cCw?_3e^JmW=GEzno!5S>gXh) zS^#fwbcoOfb?h!L@|b%G)dKhgNB@}U&R9SIU+?H@p)n;FUv%_2q4|ogcXXc6LPfWG ziAOa)H5=E;V9VfI*(dQi9PH4HJKRDV!XoaE!m-DE;E%BmJt>`32R|$

J@=rEy8ieBbuZ=hKS;KR4VfY2RX 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�t2ce>IHeyXFrVwG6iP^AU+JdEqs5c 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 me3Go@!ij)bBp?Swv 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 - int _compIdx_1; - Circom_Sizes _compSizes_1; - int _offset_2; - int _sigIdx_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_1; - int _offset_3; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_2; - int _offset_7; - int _compIdx_3; - Circom_Sizes _compSizes_2; - int _offset_8; - int _sigIdx_5; - Circom_Sizes _sigSizes_3; - int _offset_10; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - int _offset_12; - int _compIdx_5; - Circom_Sizes _compSizes_3; - int _offset_13; - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - int _offset_15; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_6; - int _sigIdx_8; - Circom_Sizes _sigSizes_6; - PBigInt _v_7; - int _offset_20; - int _compIdx_7; - Circom_Sizes _compSizes_4; - int _offset_21; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - PBigInt _v_8; - int _offset_23; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_10; - Circom_Sizes _sigSizes_8; - PBigInt _v_9; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "250", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - int _offset_25; - int _compIdx_9; - Circom_Sizes _compSizes_5; - int _offset_26; - int _sigIdx_11; - Circom_Sizes _sigSizes_9; - PBigInt _v_10; - int _offset_28; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _tmp_5 = ctx->allocBigInts(1); - PBigInt _v_12; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "250", 10); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_12; - Circom_Sizes _sigSizes_10; - int _offset_32; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_13; - Circom_Sizes _sigSizes_11; - int _offset_33; - int _compIdx_11; - int _sigIdx_14; - Circom_Sizes _sigSizes_12; - int _offset_34; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_13; - int _offset_35; - - - /* signal input in[2] */ - - /* signal output out[2] */ - - /* component pedersen = Pedersen(250*2) */ - - /* component n2b[2] */ - - /* n2b[0] = Num2Bits(250) */ - - /* n2b[1] = Num2Bits(250) */ - - /* var i */ - - /* in[0] ==> n2b[0].in */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset = _compIdx + 0*_compSizes[1]; - _sigIdx = ctx->getSignalOffset(_offset, 0x08b73807b55c4bbeLL /* in */); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_1 = _sigIdx_1 + 0*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue); - ctx->setSignal(_offset, _sigIdx, _sigValue); - - /* in[1] ==> n2b[1].in */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset_2 = _compIdx_1 + 1*_compSizes_1[1]; - _sigIdx_2 = ctx->getSignalOffset(_offset_2, 0x08b73807b55c4bbeLL /* in */); - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_3 = _sigIdx_3 + 1*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_1); - ctx->setSignal(_offset_2, _sigIdx_2, _sigValue_1); - - /* for (i=0,i<250,i++) */ - - /* n2b[0].out[i] ==> pedersen.in[i] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_2, 0x08b73807b55c4bbeLL /* in */); - _offset_7 = _sigIdx_4 + 0*_sigSizes_2[1]; - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset_8 = _compIdx_3 + 0*_compSizes_2[1]; - _sigIdx_5 = ctx->getSignalOffset(_offset_8, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_3 = ctx->getSignalSizes(_offset_8, 0x19f79b1921bbcfffLL /* out */); - _offset_10 = _sigIdx_5 + 0*_sigSizes_3[1]; - ctx->getSignal(_offset_8, _offset_10, _sigValue_2); - ctx->setSignal(_compIdx_2, _offset_7, _sigValue_2); - - /* n2b[1].out[i] ==> pedersen.in[250+i] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_4, 0x08b73807b55c4bbeLL /* in */); - _offset_12 = _sigIdx_6 + 250*_sigSizes_4[1]; - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset_13 = _compIdx_5 + 1*_compSizes_3[1]; - _sigIdx_7 = ctx->getSignalOffset(_offset_13, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(_offset_13, 0x19f79b1921bbcfffLL /* out */); - _offset_15 = _sigIdx_7 + 0*_sigSizes_5[1]; - ctx->getSignal(_offset_13, _offset_15, _sigValue_3); - ctx->setSignal(_compIdx_4, _offset_12, _sigValue_3); - mpz_set_str(_tmp_3[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_3); - while (_cond) { - - /* n2b[0].out[i] ==> pedersen.in[i] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(_compIdx_6, 0x08b73807b55c4bbeLL /* in */); - _v_7 = i + 0; - _offset_20 = _sigIdx_8 + ctx->field->toInt(_v_7)*_sigSizes_6[1]; - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset_21 = _compIdx_7 + 0*_compSizes_4[1]; - _sigIdx_9 = ctx->getSignalOffset(_offset_21, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(_offset_21, 0x19f79b1921bbcfffLL /* out */); - _v_8 = i + 0; - _offset_23 = _sigIdx_9 + ctx->field->toInt(_v_8)*_sigSizes_7[1]; - ctx->getSignal(_offset_21, _offset_23, _sigValue_4); - ctx->setSignal(_compIdx_6, _offset_20, _sigValue_4); - - /* n2b[1].out[i] ==> pedersen.in[250+i] */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_8, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_8, 0x08b73807b55c4bbeLL /* in */); - _v_9 = i + 0; - ctx->field->add(_tmp_4,_const,_v_9); - _offset_25 = _sigIdx_10 + ctx->field->toInt(_tmp_4)*_sigSizes_8[1]; - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x21d8e21925f9f8c1LL /* n2b */); - _offset_26 = _compIdx_9 + 1*_compSizes_5[1]; - _sigIdx_11 = ctx->getSignalOffset(_offset_26, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_offset_26, 0x19f79b1921bbcfffLL /* out */); - _v_10 = i + 0; - _offset_28 = _sigIdx_11 + ctx->field->toInt(_v_10)*_sigSizes_9[1]; - ctx->getSignal(_offset_26, _offset_28, _sigValue_5); - ctx->setSignal(_compIdx_8, _offset_25, _sigValue_5); - _v_11 = i + 0; - ctx->field->add(_tmp_5, _v_11, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_5, 1); - _v_12 = i + 0; - ctx->field->lt(_tmp_6,_v_12,_const_1); - _cond = ctx->field->isTrue(_tmp_6); - } - - /* pedersen.out[0] ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(_compIdx_10, 0x19f79b1921bbcfffLL /* out */); - _offset_32 = _sigIdx_12 + 0*_sigSizes_10[1]; - ctx->getSignal(_compIdx_10, _offset_32, _sigValue_6); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_33 = _sigIdx_13 + 0*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_33, _sigValue_6); - - /* pedersen.out[1] ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0xe4799fa9af515d1dLL /* pedersen */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_12 = ctx->getSignalSizes(_compIdx_11, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_14 + 1*_sigSizes_12[1]; - ctx->getSignal(_compIdx_11, _offset_34, _sigValue_7); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_15 + 1*_sigSizes_13[1]; - ctx->setSignal(ctx->cIdx, _offset_35, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -Pedersen -n=500 -*/ -void Pedersen_e89189a40b66818b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - Circom_Sizes _compSizes; - int _offset_16; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_18; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_21; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - Circom_Sizes _compSizes_1; - int _offset_27; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_17; - int _offset_29; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_19; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _offset_32; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_20; - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _v_21; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "250", 10); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes_2; - int _offset_39; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - int _offset_40; - PBigInt _num_33 = ctx->allocBigInts(1); - int _compIdx_3; - Circom_Sizes _compSizes_3; - int _offset_42; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - int _offset_43; - PBigInt _num_35 = ctx->allocBigInts(1); - PBigInt _tmp_20 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - PBigInt nexpbits = ctx->allocBigInts(1); - int _cond_1; - PBigInt _v_29; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - PBigInt _ter; - PBigInt _v_31 = ctx->allocBigInts(1); - PBigInt _num_37 = ctx->allocBigInts(1); - PBigInt _num_38 = ctx->allocBigInts(1); - PBigInt _v_32; - PBigInt _v_33; - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _cond_2; - int _compIdx_4; - Circom_Sizes _compSizes_4; - PBigInt _v_34; - int _offset_56; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - PBigInt _v_35; - int _offset_58; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - PBigInt _v_36; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "250", 10); - PBigInt _tmp_24 = ctx->allocBigInts(1); - PBigInt _v_37; - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _offset_61; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _v_38; - PBigInt _tmp_26 = ctx->allocBigInts(1); - PBigInt _v_39; - PBigInt _v_40; - PBigInt _tmp_27 = ctx->allocBigInts(1); - PBigInt _v_41; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "0", 10); - PBigInt _tmp_28 = ctx->allocBigInts(1); - int _compIdx_5; - Circom_Sizes _compSizes_5; - PBigInt _v_42; - int _offset_68; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_69; - PBigInt _num_42 = ctx->allocBigInts(1); - int _compIdx_6; - Circom_Sizes _compSizes_6; - PBigInt _v_43; - int _offset_71; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_72; - PBigInt _num_44 = ctx->allocBigInts(1); - int _compIdx_7; - Circom_Sizes _compSizes_7; - PBigInt _v_44; - int _offset_74; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_75; - int _compIdx_8; - Circom_Sizes _compSizes_8; - PBigInt _v_45; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _offset_77; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_78; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_9; - Circom_Sizes _compSizes_9; - PBigInt _v_46; - int _offset_80; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_81; - int _compIdx_10; - Circom_Sizes _compSizes_10; - PBigInt _v_47; - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "1", 10); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _offset_83; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_84; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _v_48; - PBigInt _tmp_31 = ctx->allocBigInts(1); - PBigInt _v_49; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "2", 10); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _compIdx_11; - Circom_Sizes _compSizes_11; - int _offset_90; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_91; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_92; - int _compIdx_12; - Circom_Sizes _compSizes_12; - int _offset_94; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_95; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_96; - - - /* signal input in[n] */ - - /* signal output out[2] */ - - /* var nexps = ((n-1) \ 250) + 1 */ - - /* var nlastbits = n - (nexps-1)*250 */ - - /* component escalarMuls[nexps] */ - - /* var PBASE = [ - [10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317], - [2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094], - [5802099305472655231388284418920769829666717045250560929368476121199858275951,5980429700218124965372158798884772646841287887664001482443826541541529227896], - [7107336197374528537877327281242680114152313102022415488494307685842428166594,2857869773864086953506483169737724679646433914307247183624878062391496185654], - [20265828622013100949498132415626198973119240347465898028410217039057588424236,1160461593266035632937973507065134938065359936056410650153315956301179689506], - [1487999857809287756929114517587739322941449154962237464737694709326309567994,14017256862867289575056460215526364897734808720610101650676790868051368668003], - [14618644331049802168996997831720384953259095788558646464435263343433563860015,13115243279999696210147231297848654998887864576952244320558158620692603342236], - [6814338563135591367010655964669793483652536871717891893032616415581401894627,13660303521961041205824633772157003587453809761793065294055279768121314853695], - [3571615583211663069428808372184817973703476260057504149923239576077102575715,11981351099832644138306422070127357074117642951423551606012551622164230222506], - [18597552580465440374022635246985743886550544261632147935254624835147509493269,6753322320275422086923032033899357299485124665258735666995435957890214041481] - ] */ - - /* var i */ - - /* var j */ - - /* var nexpbits */ - - /* for (i=0,igetSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_16 = _compIdx + 0*_compSizes[1]; - _sigIdx = ctx->getSignalOffset(_offset_16, 0x08b73807b55c4bbeLL /* in */); - _sigSizes = ctx->getSignalSizes(_offset_16, 0x08b73807b55c4bbeLL /* in */); - _offset_18 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_21 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_21, _sigValue); - ctx->setSignal(_offset_16, _offset_18, _sigValue); - mpz_set_str(_tmp_13[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_13); - while (_cond) { - - /* escalarMuls[i].in[j] <== in[250*i + j] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_27 = _compIdx_1 + 0*_compSizes_1[1]; - _sigIdx_2 = ctx->getSignalOffset(_offset_27, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_2 = ctx->getSignalSizes(_offset_27, 0x08b73807b55c4bbeLL /* in */); - _v_17 = j + 0; - _offset_29 = _sigIdx_2 + ctx->field->toInt(_v_17)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_19 = j + 0; - ctx->field->add(_tmp_15,_const,_v_19); - _offset_32 = _sigIdx_3 + ctx->field->toInt(_tmp_15)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_1); - ctx->setSignal(_offset_27, _offset_29, _sigValue_1); - _v_20 = j + 0; - ctx->field->add(_tmp_16, _v_20, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_16, 1); - _v_21 = j + 0; - ctx->field->lt(_tmp_17,_v_21,_const_1); - _cond = ctx->field->isTrue(_tmp_17); - } - - /* if (i==0) */ - - /* escalarMuls[i].inp[0] <== 0 */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_39 = _compIdx_2 + 0*_compSizes_2[1]; - _sigIdx_4 = ctx->getSignalOffset(_offset_39, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_4 = ctx->getSignalSizes(_offset_39, 0x2ba003192bd4cf0aLL /* inp */); - _offset_40 = _sigIdx_4 + 0*_sigSizes_4[1]; - mpz_set_str(_num_33[0], "0", 10); - ctx->setSignal(_offset_39, _offset_40, _num_33); - - /* escalarMuls[i].inp[1] <== 1 */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_42 = _compIdx_3 + 0*_compSizes_3[1]; - _sigIdx_5 = ctx->getSignalOffset(_offset_42, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_5 = ctx->getSignalSizes(_offset_42, 0x2ba003192bd4cf0aLL /* inp */); - _offset_43 = _sigIdx_5 + 1*_sigSizes_5[1]; - mpz_set_str(_num_35[0], "1", 10); - ctx->setSignal(_offset_42, _offset_43, _num_35); - mpz_set_str(_tmp_20[0], "1", 10); - mpz_set_str(i[0], "1", 10); - mpz_set_str(nexpbits[0], "250", 10); - _cond_1 = ctx->field->isTrue(_tmp_20); - while (_cond_1) { - - /* nexpbits = (i == nexps-1) ? nlastbits : 250 */ - _v_29 = i + 0; - ctx->field->eq(_tmp_22,_v_29,_const_2); - if (ctx->field->isTrue(_tmp_22)) { - mpz_set_str(_v_31[0], "250", 10); - _ter = _v_31; - } else { - mpz_set_str(_num_37[0], "250", 10); - _ter = _num_37; - } - ctx->field->copyn(nexpbits, _ter, 1); - - /* escalarMuls[i] = EscalarMul(nexpbits, PBASE[i]) */ - - /* for (j=0,jfield->copyn(j, _num_38, 1); - _v_32 = j + 0; - _v_33 = nexpbits + 0; - ctx->field->lt(_tmp_23,_v_32,_v_33); - _cond_2 = ctx->field->isTrue(_tmp_23); - while (_cond_2) { - - /* escalarMuls[i].in[j] <== in[250*i + j] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_34 = i + 0; - _offset_56 = _compIdx_4 + ctx->field->toInt(_v_34)*_compSizes_4[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_56, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(_offset_56, 0x08b73807b55c4bbeLL /* in */); - _v_35 = j + 0; - _offset_58 = _sigIdx_6 + ctx->field->toInt(_v_35)*_sigSizes_6[1]; - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_36 = i + 0; - ctx->field->mul(_tmp_24,_const_3,_v_36); - _v_37 = j + 0; - ctx->field->add(_tmp_25,_tmp_24,_v_37); - _offset_61 = _sigIdx_7 + ctx->field->toInt(_tmp_25)*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_61, _sigValue_2); - ctx->setSignal(_offset_56, _offset_58, _sigValue_2); - _v_38 = j + 0; - ctx->field->add(_tmp_26, _v_38, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_26, 1); - _v_39 = j + 0; - _v_40 = nexpbits + 0; - ctx->field->lt(_tmp_27,_v_39,_v_40); - _cond_2 = ctx->field->isTrue(_tmp_27); - } - - /* if (i==0) */ - _v_41 = i + 0; - ctx->field->eq(_tmp_28,_v_41,_const_4); - if (ctx->field->isTrue(_tmp_28)) { - - /* escalarMuls[i].inp[0] <== 0 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_42 = i + 0; - _offset_68 = _compIdx_5 + ctx->field->toInt(_v_42)*_compSizes_5[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_68, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_8 = ctx->getSignalSizes(_offset_68, 0x2ba003192bd4cf0aLL /* inp */); - _offset_69 = _sigIdx_8 + 0*_sigSizes_8[1]; - mpz_set_str(_num_42[0], "0", 10); - ctx->setSignal(_offset_68, _offset_69, _num_42); - - /* escalarMuls[i].inp[1] <== 1 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_43 = i + 0; - _offset_71 = _compIdx_6 + ctx->field->toInt(_v_43)*_compSizes_6[1]; - _sigIdx_9 = ctx->getSignalOffset(_offset_71, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_9 = ctx->getSignalSizes(_offset_71, 0x2ba003192bd4cf0aLL /* inp */); - _offset_72 = _sigIdx_9 + 1*_sigSizes_9[1]; - mpz_set_str(_num_44[0], "1", 10); - ctx->setSignal(_offset_71, _offset_72, _num_44); - } else { - - /* escalarMuls[i].inp[0] <== escalarMuls[i-1].out[0] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_44 = i + 0; - _offset_74 = _compIdx_7 + ctx->field->toInt(_v_44)*_compSizes_7[1]; - _sigIdx_10 = ctx->getSignalOffset(_offset_74, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_10 = ctx->getSignalSizes(_offset_74, 0x2ba003192bd4cf0aLL /* inp */); - _offset_75 = _sigIdx_10 + 0*_sigSizes_10[1]; - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_45 = i + 0; - ctx->field->sub(_tmp_29,_v_45,_const_5); - _offset_77 = _compIdx_8 + ctx->field->toInt(_tmp_29)*_compSizes_8[1]; - _sigIdx_11 = ctx->getSignalOffset(_offset_77, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(_offset_77, 0x19f79b1921bbcfffLL /* out */); - _offset_78 = _sigIdx_11 + 0*_sigSizes_11[1]; - ctx->getSignal(_offset_77, _offset_78, _sigValue_3); - ctx->setSignal(_offset_74, _offset_75, _sigValue_3); - - /* escalarMuls[i].inp[1] <== escalarMuls[i-1].out[1] */ - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_46 = i + 0; - _offset_80 = _compIdx_9 + ctx->field->toInt(_v_46)*_compSizes_9[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_80, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_12 = ctx->getSignalSizes(_offset_80, 0x2ba003192bd4cf0aLL /* inp */); - _offset_81 = _sigIdx_12 + 1*_sigSizes_12[1]; - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _v_47 = i + 0; - ctx->field->sub(_tmp_30,_v_47,_const_6); - _offset_83 = _compIdx_10 + ctx->field->toInt(_tmp_30)*_compSizes_10[1]; - _sigIdx_13 = ctx->getSignalOffset(_offset_83, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_offset_83, 0x19f79b1921bbcfffLL /* out */); - _offset_84 = _sigIdx_13 + 1*_sigSizes_13[1]; - ctx->getSignal(_offset_83, _offset_84, _sigValue_4); - ctx->setSignal(_offset_80, _offset_81, _sigValue_4); - } - _v_48 = i + 0; - ctx->field->add(_tmp_31, _v_48, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_31, 1); - _v_49 = i + 0; - ctx->field->lt(_tmp_32,_v_49,_const_7); - _cond_1 = ctx->field->isTrue(_tmp_32); - } - - /* escalarMuls[nexps-1].out[0] ==> out[0] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_90 = _compIdx_11 + 1*_compSizes_11[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_90, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_14 = ctx->getSignalSizes(_offset_90, 0x19f79b1921bbcfffLL /* out */); - _offset_91 = _sigIdx_14 + 0*_sigSizes_14[1]; - ctx->getSignal(_offset_90, _offset_91, _sigValue_5); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_92 = _sigIdx_15 + 0*_sigSizes_15[1]; - ctx->setSignal(ctx->cIdx, _offset_92, _sigValue_5); - - /* escalarMuls[nexps-1].out[1] ==> out[1] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x4285195137c6736bLL /* escalarMuls */); - _offset_94 = _compIdx_12 + 1*_compSizes_12[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_94, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_16 = ctx->getSignalSizes(_offset_94, 0x19f79b1921bbcfffLL /* out */); - _offset_95 = _sigIdx_16 + 1*_sigSizes_16[1]; - ctx->getSignal(_offset_94, _offset_95, _sigValue_6); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_96 = _sigIdx_17 + 1*_sigSizes_17[1]; - ctx->setSignal(ctx->cIdx, _offset_96, _sigValue_6); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_num_33, 1); - ctx->freeBigInts(_num_35, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(nexpbits, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_v_31, 1); - ctx->freeBigInts(_num_37, 1); - ctx->freeBigInts(_num_38, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_num_42, 1); - ctx->freeBigInts(_num_44, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); -} - -/* -EscalarMul -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -inp[0]=0 -inp[1]=0 -n=250 -*/ -void EscalarMul_f29b0428f5d364a5(Circom_CalcWit *ctx) { - // Header - PBigInt _num_4 = ctx->allocBigInts(1); - int _compIdx; - Circom_Sizes _compSizes; - int _offset_266; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_268; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_271; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_138 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - PBigInt _v_205; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_140 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "250", 10); - PBigInt _tmp_141 = ctx->allocBigInts(1); - int _compIdx_1; - Circom_Sizes _compSizes_1; - int _offset_279; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_208; - int _offset_281; - PBigInt _num_12 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes_2; - int _offset_283; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_210; - int _offset_285; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_212; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "0", 10); - PBigInt _tmp_143 = ctx->allocBigInts(1); - int _offset_288; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_213; - PBigInt _tmp_144 = ctx->allocBigInts(1); - PBigInt _v_214; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "4", 10); - PBigInt _tmp_145 = ctx->allocBigInts(1); - PBigInt _tmp_147 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond_1; - PBigInt _num_15 = ctx->allocBigInts(1); - PBigInt _v_218; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "4", 10); - PBigInt _tmp_148 = ctx->allocBigInts(1); - int _cond_2; - PBigInt _v_219; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "4", 10); - PBigInt _tmp_149 = ctx->allocBigInts(1); - PBigInt _v_220; - PBigInt _tmp_150 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "250", 10); - PBigInt _tmp_151 = ctx->allocBigInts(1); - int _compIdx_3; - Circom_Sizes _compSizes_3; - PBigInt _v_222; - int _offset_302; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_223; - int _offset_304; - PBigInt _num_18 = ctx->allocBigInts(1); - int _compIdx_4; - Circom_Sizes _compSizes_4; - PBigInt _v_224; - int _offset_306; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - PBigInt _v_225; - int _offset_308; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - PBigInt _v_226; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "4", 10); - PBigInt _tmp_152 = ctx->allocBigInts(1); - PBigInt _v_227; - PBigInt _tmp_153 = ctx->allocBigInts(1); - int _offset_311; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _v_228; - PBigInt _tmp_154 = ctx->allocBigInts(1); - PBigInt _v_229; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "4", 10); - PBigInt _tmp_155 = ctx->allocBigInts(1); - PBigInt _v_230; - PBigInt _tmp_156 = ctx->allocBigInts(1); - PBigInt _v_231; - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "63", 10); - PBigInt _tmp_157 = ctx->allocBigInts(1); - int _compIdx_5; - Circom_Sizes _compSizes_5; - int _offset_319; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_320; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_321; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - Circom_Sizes _compSizes_6; - int _offset_322; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_323; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_324; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _num_27 = ctx->allocBigInts(1); - PBigInt _v_233; - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "62", 10); - PBigInt _tmp_159 = ctx->allocBigInts(1); - int _cond_3; - int _compIdx_7; - Circom_Sizes _compSizes_7; - PBigInt _v_235; - PBigInt _const_11; - _const_11 = ctx->allocBigInts(1); - mpz_set_str(_const_11[0], "1", 10); - PBigInt _tmp_160 = ctx->allocBigInts(1); - int _offset_329; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_330; - int _compIdx_8; - Circom_Sizes _compSizes_8; - PBigInt _v_236; - int _offset_332; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_333; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_9; - Circom_Sizes _compSizes_9; - PBigInt _v_237; - PBigInt _const_12; - _const_12 = ctx->allocBigInts(1); - mpz_set_str(_const_12[0], "1", 10); - PBigInt _tmp_161 = ctx->allocBigInts(1); - int _offset_335; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_336; - int _compIdx_10; - Circom_Sizes _compSizes_10; - PBigInt _v_238; - int _offset_338; - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_339; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _v_239; - PBigInt _tmp_162 = ctx->allocBigInts(1); - PBigInt _v_240; - PBigInt _const_13; - _const_13 = ctx->allocBigInts(1); - mpz_set_str(_const_13[0], "62", 10); - PBigInt _tmp_164 = ctx->allocBigInts(1); - int _compIdx_11; - Circom_Sizes _compSizes_11; - int _offset_345; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_346; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_347; - int _compIdx_12; - Circom_Sizes _compSizes_12; - int _offset_349; - int _sigIdx_18; - Circom_Sizes _sigSizes_18; - int _offset_350; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _sigIdx_19; - Circom_Sizes _sigSizes_19; - int _offset_351; - - - /* signal input in[n] */ - - /* signal input inp[2] */ - - /* signal output out[2] */ - - /* var nBlocks = ((n-1)>>2)+1 */ - - /* var i */ - - /* var j */ - - /* component windows[nBlocks] */ - - /* for (i=0,ilog(_num_4); - /* for (i=0,i= n) */ - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_266 = _compIdx + 0*_compSizes[1]; - _sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */); - _sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */); - _offset_268 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_271 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_271, _sigValue); - ctx->setSignal(_offset_266, _offset_268, _sigValue); - mpz_set_str(_tmp_138[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_138); - while (_cond) { - - /* if (i*4+j >= n) */ - _v_205 = j + 0; - ctx->field->add(_tmp_140,_const,_v_205); - ctx->field->geq(_tmp_141,_tmp_140,_const_1); - if (ctx->field->isTrue(_tmp_141)) { - - /* windows[i].sel[j] <== 0 */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_279 = _compIdx_1 + 0*_compSizes_1[1]; - _sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */); - _v_208 = j + 0; - _offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1]; - mpz_set_str(_num_12[0], "0", 10); - ctx->setSignal(_offset_279, _offset_281, _num_12); - } else { - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_283 = _compIdx_2 + 0*_compSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */); - _v_210 = j + 0; - _offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1]; - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_212 = j + 0; - ctx->field->add(_tmp_143,_const_2,_v_212); - _offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1); - ctx->setSignal(_offset_283, _offset_285, _sigValue_1); - } - _v_213 = j + 0; - ctx->field->add(_tmp_144, _v_213, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_144, 1); - _v_214 = j + 0; - ctx->field->lt(_tmp_145,_v_214,_const_3); - _cond = ctx->field->isTrue(_tmp_145); - } - mpz_set_str(_tmp_147[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond_1 = ctx->field->isTrue(_tmp_147); - while (_cond_1) { - - /* for (j=0,j<4,j++) */ - mpz_set_str(_num_15[0], "0", 10); - ctx->field->copyn(j, _num_15, 1); - _v_218 = j + 0; - ctx->field->lt(_tmp_148,_v_218,_const_4); - _cond_2 = ctx->field->isTrue(_tmp_148); - while (_cond_2) { - - /* if (i*4+j >= n) */ - _v_219 = i + 0; - ctx->field->mul(_tmp_149,_v_219,_const_5); - _v_220 = j + 0; - ctx->field->add(_tmp_150,_tmp_149,_v_220); - ctx->field->geq(_tmp_151,_tmp_150,_const_6); - if (ctx->field->isTrue(_tmp_151)) { - - /* windows[i].sel[j] <== 0 */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_222 = i + 0; - _offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1]; - _sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */); - _v_223 = j + 0; - _offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1]; - mpz_set_str(_num_18[0], "0", 10); - ctx->setSignal(_offset_302, _offset_304, _num_18); - } else { - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_224 = i + 0; - _offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */); - _v_225 = j + 0; - _offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1]; - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_226 = i + 0; - ctx->field->mul(_tmp_152,_v_226,_const_7); - _v_227 = j + 0; - ctx->field->add(_tmp_153,_tmp_152,_v_227); - _offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2); - ctx->setSignal(_offset_306, _offset_308, _sigValue_2); - } - _v_228 = j + 0; - ctx->field->add(_tmp_154, _v_228, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_154, 1); - _v_229 = j + 0; - ctx->field->lt(_tmp_155,_v_229,_const_8); - _cond_2 = ctx->field->isTrue(_tmp_155); - } - _v_230 = i + 0; - ctx->field->add(_tmp_156, _v_230, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_156, 1); - _v_231 = i + 0; - ctx->field->lt(_tmp_157,_v_231,_const_9); - _cond_1 = ctx->field->isTrue(_tmp_157); - } - - /* windows[0].in[0] <== inp[0] */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_319 = _compIdx_5 + 0*_compSizes_5[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */); - _offset_320 = _sigIdx_8 + 0*_sigSizes_8[1]; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _offset_321 = _sigIdx_9 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3); - ctx->setSignal(_offset_319, _offset_320, _sigValue_3); - - /* windows[0].in[1] <== inp[1] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_322 = _compIdx_6 + 0*_compSizes_6[1]; - _sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */); - _offset_323 = _sigIdx_10 + 1*_sigSizes_10[1]; - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _offset_324 = _sigIdx_11 + 1*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4); - ctx->setSignal(_offset_322, _offset_323, _sigValue_4); - - /* for (i=0,ifield->copyn(i, _num_27, 1); - _v_233 = i + 0; - ctx->field->lt(_tmp_159,_v_233,_const_10); - _cond_3 = ctx->field->isTrue(_tmp_159); - while (_cond_3) { - - /* windows[i].out[0] ==> windows[i+1].in[0] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_235 = i + 0; - ctx->field->add(_tmp_160,_v_235,_const_11); - _offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */); - _offset_330 = _sigIdx_12 + 0*_sigSizes_12[1]; - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_236 = i + 0; - _offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1]; - _sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */); - _offset_333 = _sigIdx_13 + 0*_sigSizes_13[1]; - ctx->getSignal(_offset_332, _offset_333, _sigValue_5); - ctx->setSignal(_offset_329, _offset_330, _sigValue_5); - - /* windows[i].out[1] ==> windows[i+1].in[1] */ - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_237 = i + 0; - ctx->field->add(_tmp_161,_v_237,_const_12); - _offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */); - _offset_336 = _sigIdx_14 + 1*_sigSizes_14[1]; - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_238 = i + 0; - _offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1]; - _sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */); - _offset_339 = _sigIdx_15 + 1*_sigSizes_15[1]; - ctx->getSignal(_offset_338, _offset_339, _sigValue_6); - ctx->setSignal(_offset_335, _offset_336, _sigValue_6); - _v_239 = i + 0; - ctx->field->add(_tmp_162, _v_239, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_162, 1); - _v_240 = i + 0; - ctx->field->lt(_tmp_164,_v_240,_const_13); - _cond_3 = ctx->field->isTrue(_tmp_164); - } - - /* windows[nBlocks-1].out[0] ==> out[0] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_345 = _compIdx_11 + 62*_compSizes_11[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */); - _offset_346 = _sigIdx_16 + 0*_sigSizes_16[1]; - ctx->getSignal(_offset_345, _offset_346, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_347 = _sigIdx_17 + 0*_sigSizes_17[1]; - ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7); - - /* windows[nBlocks-1].out[1] ==> out[1] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_349 = _compIdx_12 + 62*_compSizes_12[1]; - _sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */); - _offset_350 = _sigIdx_18 + 1*_sigSizes_18[1]; - ctx->getSignal(_offset_349, _offset_350, _sigValue_8); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_351 = _sigIdx_19 + 1*_sigSizes_19[1]; - ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8); - - // Footer - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_138, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_140, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_141, 1); - ctx->freeBigInts(_num_12, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_143, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_144, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_145, 1); - ctx->freeBigInts(_tmp_147, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_num_15, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_148, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_149, 1); - ctx->freeBigInts(_tmp_150, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_151, 1); - ctx->freeBigInts(_num_18, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_152, 1); - ctx->freeBigInts(_tmp_153, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_tmp_154, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_155, 1); - ctx->freeBigInts(_tmp_156, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_157, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_num_27, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_159, 1); - ctx->freeBigInts(_const_11, 1); - ctx->freeBigInts(_tmp_160, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_const_12, 1); - ctx->freeBigInts(_tmp_161, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_tmp_162, 1); - ctx->freeBigInts(_const_13, 1); - ctx->freeBigInts(_tmp_164, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); -} - -/* -EscalarMul -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -n=250 -*/ -void EscalarMul_013c1dd4c0cce6a8(Circom_CalcWit *ctx) { - // Header - PBigInt _num_4 = ctx->allocBigInts(1); - int _compIdx; - Circom_Sizes _compSizes; - int _offset_266; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_268; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_271; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_138 = ctx->allocBigInts(1); - PBigInt j = ctx->allocBigInts(1); - int _cond; - PBigInt _v_205; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_140 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "250", 10); - PBigInt _tmp_141 = ctx->allocBigInts(1); - int _compIdx_1; - Circom_Sizes _compSizes_1; - int _offset_279; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_208; - int _offset_281; - PBigInt _num_12 = ctx->allocBigInts(1); - int _compIdx_2; - Circom_Sizes _compSizes_2; - int _offset_283; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_210; - int _offset_285; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_212; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "0", 10); - PBigInt _tmp_143 = ctx->allocBigInts(1); - int _offset_288; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_213; - PBigInt _tmp_144 = ctx->allocBigInts(1); - PBigInt _v_214; - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "4", 10); - PBigInt _tmp_145 = ctx->allocBigInts(1); - PBigInt _tmp_147 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond_1; - PBigInt _num_15 = ctx->allocBigInts(1); - PBigInt _v_218; - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "4", 10); - PBigInt _tmp_148 = ctx->allocBigInts(1); - int _cond_2; - PBigInt _v_219; - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "4", 10); - PBigInt _tmp_149 = ctx->allocBigInts(1); - PBigInt _v_220; - PBigInt _tmp_150 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "250", 10); - PBigInt _tmp_151 = ctx->allocBigInts(1); - int _compIdx_3; - Circom_Sizes _compSizes_3; - PBigInt _v_222; - int _offset_302; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_223; - int _offset_304; - PBigInt _num_18 = ctx->allocBigInts(1); - int _compIdx_4; - Circom_Sizes _compSizes_4; - PBigInt _v_224; - int _offset_306; - int _sigIdx_6; - Circom_Sizes _sigSizes_6; - PBigInt _v_225; - int _offset_308; - int _sigIdx_7; - Circom_Sizes _sigSizes_7; - PBigInt _v_226; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "4", 10); - PBigInt _tmp_152 = ctx->allocBigInts(1); - PBigInt _v_227; - PBigInt _tmp_153 = ctx->allocBigInts(1); - int _offset_311; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _v_228; - PBigInt _tmp_154 = ctx->allocBigInts(1); - PBigInt _v_229; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "4", 10); - PBigInt _tmp_155 = ctx->allocBigInts(1); - PBigInt _v_230; - PBigInt _tmp_156 = ctx->allocBigInts(1); - PBigInt _v_231; - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "63", 10); - PBigInt _tmp_157 = ctx->allocBigInts(1); - int _compIdx_5; - Circom_Sizes _compSizes_5; - int _offset_319; - int _sigIdx_8; - Circom_Sizes _sigSizes_8; - int _offset_320; - int _sigIdx_9; - Circom_Sizes _sigSizes_9; - int _offset_321; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - Circom_Sizes _compSizes_6; - int _offset_322; - int _sigIdx_10; - Circom_Sizes _sigSizes_10; - int _offset_323; - int _sigIdx_11; - Circom_Sizes _sigSizes_11; - int _offset_324; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _num_27 = ctx->allocBigInts(1); - PBigInt _v_233; - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "62", 10); - PBigInt _tmp_159 = ctx->allocBigInts(1); - int _cond_3; - int _compIdx_7; - Circom_Sizes _compSizes_7; - PBigInt _v_235; - PBigInt _const_11; - _const_11 = ctx->allocBigInts(1); - mpz_set_str(_const_11[0], "1", 10); - PBigInt _tmp_160 = ctx->allocBigInts(1); - int _offset_329; - int _sigIdx_12; - Circom_Sizes _sigSizes_12; - int _offset_330; - int _compIdx_8; - Circom_Sizes _compSizes_8; - PBigInt _v_236; - int _offset_332; - int _sigIdx_13; - Circom_Sizes _sigSizes_13; - int _offset_333; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_9; - Circom_Sizes _compSizes_9; - PBigInt _v_237; - PBigInt _const_12; - _const_12 = ctx->allocBigInts(1); - mpz_set_str(_const_12[0], "1", 10); - PBigInt _tmp_161 = ctx->allocBigInts(1); - int _offset_335; - int _sigIdx_14; - Circom_Sizes _sigSizes_14; - int _offset_336; - int _compIdx_10; - Circom_Sizes _compSizes_10; - PBigInt _v_238; - int _offset_338; - int _sigIdx_15; - Circom_Sizes _sigSizes_15; - int _offset_339; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _v_239; - PBigInt _tmp_162 = ctx->allocBigInts(1); - PBigInt _v_240; - PBigInt _const_13; - _const_13 = ctx->allocBigInts(1); - mpz_set_str(_const_13[0], "62", 10); - PBigInt _tmp_164 = ctx->allocBigInts(1); - int _compIdx_11; - Circom_Sizes _compSizes_11; - int _offset_345; - int _sigIdx_16; - Circom_Sizes _sigSizes_16; - int _offset_346; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_17; - int _offset_347; - int _compIdx_12; - Circom_Sizes _compSizes_12; - int _offset_349; - int _sigIdx_18; - Circom_Sizes _sigSizes_18; - int _offset_350; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _sigIdx_19; - Circom_Sizes _sigSizes_19; - int _offset_351; - - - /* signal input in[n] */ - - /* signal input inp[2] */ - - /* signal output out[2] */ - - /* var nBlocks = ((n-1)>>2)+1 */ - - /* var i */ - - /* var j */ - - /* component windows[nBlocks] */ - - /* for (i=0,ilog(_num_4); - /* for (i=0,i= n) */ - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_266 = _compIdx + 0*_compSizes[1]; - _sigIdx = ctx->getSignalOffset(_offset_266, 0x823b7f195ce2008bLL /* sel */); - _sigSizes = ctx->getSignalSizes(_offset_266, 0x823b7f195ce2008bLL /* sel */); - _offset_268 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_271 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_271, _sigValue); - ctx->setSignal(_offset_266, _offset_268, _sigValue); - mpz_set_str(_tmp_138[0], "1", 10); - mpz_set_str(j[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_138); - while (_cond) { - - /* if (i*4+j >= n) */ - _v_205 = j + 0; - ctx->field->add(_tmp_140,_const,_v_205); - ctx->field->geq(_tmp_141,_tmp_140,_const_1); - if (ctx->field->isTrue(_tmp_141)) { - - /* windows[i].sel[j] <== 0 */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_1 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_279 = _compIdx_1 + 0*_compSizes_1[1]; - _sigIdx_2 = ctx->getSignalOffset(_offset_279, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_2 = ctx->getSignalSizes(_offset_279, 0x823b7f195ce2008bLL /* sel */); - _v_208 = j + 0; - _offset_281 = _sigIdx_2 + ctx->field->toInt(_v_208)*_sigSizes_2[1]; - mpz_set_str(_num_12[0], "0", 10); - ctx->setSignal(_offset_279, _offset_281, _num_12); - } else { - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_2 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_283 = _compIdx_2 + 0*_compSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(_offset_283, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(_offset_283, 0x823b7f195ce2008bLL /* sel */); - _v_210 = j + 0; - _offset_285 = _sigIdx_3 + ctx->field->toInt(_v_210)*_sigSizes_3[1]; - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_212 = j + 0; - ctx->field->add(_tmp_143,_const_2,_v_212); - _offset_288 = _sigIdx_4 + ctx->field->toInt(_tmp_143)*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_1); - ctx->setSignal(_offset_283, _offset_285, _sigValue_1); - } - _v_213 = j + 0; - ctx->field->add(_tmp_144, _v_213, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_144, 1); - _v_214 = j + 0; - ctx->field->lt(_tmp_145,_v_214,_const_3); - _cond = ctx->field->isTrue(_tmp_145); - } - mpz_set_str(_tmp_147[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond_1 = ctx->field->isTrue(_tmp_147); - while (_cond_1) { - - /* for (j=0,j<4,j++) */ - mpz_set_str(_num_15[0], "0", 10); - ctx->field->copyn(j, _num_15, 1); - _v_218 = j + 0; - ctx->field->lt(_tmp_148,_v_218,_const_4); - _cond_2 = ctx->field->isTrue(_tmp_148); - while (_cond_2) { - - /* if (i*4+j >= n) */ - _v_219 = i + 0; - ctx->field->mul(_tmp_149,_v_219,_const_5); - _v_220 = j + 0; - ctx->field->add(_tmp_150,_tmp_149,_v_220); - ctx->field->geq(_tmp_151,_tmp_150,_const_6); - if (ctx->field->isTrue(_tmp_151)) { - - /* windows[i].sel[j] <== 0 */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_3 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_222 = i + 0; - _offset_302 = _compIdx_3 + ctx->field->toInt(_v_222)*_compSizes_3[1]; - _sigIdx_5 = ctx->getSignalOffset(_offset_302, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_5 = ctx->getSignalSizes(_offset_302, 0x823b7f195ce2008bLL /* sel */); - _v_223 = j + 0; - _offset_304 = _sigIdx_5 + ctx->field->toInt(_v_223)*_sigSizes_5[1]; - mpz_set_str(_num_18[0], "0", 10); - ctx->setSignal(_offset_302, _offset_304, _num_18); - } else { - - /* windows[i].sel[j] <== in[i*4+j] */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_4 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_224 = i + 0; - _offset_306 = _compIdx_4 + ctx->field->toInt(_v_224)*_compSizes_4[1]; - _sigIdx_6 = ctx->getSignalOffset(_offset_306, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_6 = ctx->getSignalSizes(_offset_306, 0x823b7f195ce2008bLL /* sel */); - _v_225 = j + 0; - _offset_308 = _sigIdx_6 + ctx->field->toInt(_v_225)*_sigSizes_6[1]; - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _v_226 = i + 0; - ctx->field->mul(_tmp_152,_v_226,_const_7); - _v_227 = j + 0; - ctx->field->add(_tmp_153,_tmp_152,_v_227); - _offset_311 = _sigIdx_7 + ctx->field->toInt(_tmp_153)*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_311, _sigValue_2); - ctx->setSignal(_offset_306, _offset_308, _sigValue_2); - } - _v_228 = j + 0; - ctx->field->add(_tmp_154, _v_228, &(ctx->field->one)); - ctx->field->copyn(j, _tmp_154, 1); - _v_229 = j + 0; - ctx->field->lt(_tmp_155,_v_229,_const_8); - _cond_2 = ctx->field->isTrue(_tmp_155); - } - _v_230 = i + 0; - ctx->field->add(_tmp_156, _v_230, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_156, 1); - _v_231 = i + 0; - ctx->field->lt(_tmp_157,_v_231,_const_9); - _cond_1 = ctx->field->isTrue(_tmp_157); - } - - /* windows[0].in[0] <== inp[0] */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_5 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_319 = _compIdx_5 + 0*_compSizes_5[1]; - _sigIdx_8 = ctx->getSignalOffset(_offset_319, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_8 = ctx->getSignalSizes(_offset_319, 0x08b73807b55c4bbeLL /* in */); - _offset_320 = _sigIdx_8 + 0*_sigSizes_8[1]; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _offset_321 = _sigIdx_9 + 0*_sigSizes_9[1]; - ctx->getSignal(ctx->cIdx, _offset_321, _sigValue_3); - ctx->setSignal(_offset_319, _offset_320, _sigValue_3); - - /* windows[0].in[1] <== inp[1] */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_6 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_322 = _compIdx_6 + 0*_compSizes_6[1]; - _sigIdx_10 = ctx->getSignalOffset(_offset_322, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_10 = ctx->getSignalSizes(_offset_322, 0x08b73807b55c4bbeLL /* in */); - _offset_323 = _sigIdx_10 + 1*_sigSizes_10[1]; - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x2ba003192bd4cf0aLL /* inp */); - _offset_324 = _sigIdx_11 + 1*_sigSizes_11[1]; - ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_4); - ctx->setSignal(_offset_322, _offset_323, _sigValue_4); - - /* for (i=0,ifield->copyn(i, _num_27, 1); - _v_233 = i + 0; - ctx->field->lt(_tmp_159,_v_233,_const_10); - _cond_3 = ctx->field->isTrue(_tmp_159); - while (_cond_3) { - - /* windows[i].out[0] ==> windows[i+1].in[0] */ - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_7 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_235 = i + 0; - ctx->field->add(_tmp_160,_v_235,_const_11); - _offset_329 = _compIdx_7 + ctx->field->toInt(_tmp_160)*_compSizes_7[1]; - _sigIdx_12 = ctx->getSignalOffset(_offset_329, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_12 = ctx->getSignalSizes(_offset_329, 0x08b73807b55c4bbeLL /* in */); - _offset_330 = _sigIdx_12 + 0*_sigSizes_12[1]; - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_8 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_236 = i + 0; - _offset_332 = _compIdx_8 + ctx->field->toInt(_v_236)*_compSizes_8[1]; - _sigIdx_13 = ctx->getSignalOffset(_offset_332, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_13 = ctx->getSignalSizes(_offset_332, 0x19f79b1921bbcfffLL /* out */); - _offset_333 = _sigIdx_13 + 0*_sigSizes_13[1]; - ctx->getSignal(_offset_332, _offset_333, _sigValue_5); - ctx->setSignal(_offset_329, _offset_330, _sigValue_5); - - /* windows[i].out[1] ==> windows[i+1].in[1] */ - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_9 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_237 = i + 0; - ctx->field->add(_tmp_161,_v_237,_const_12); - _offset_335 = _compIdx_9 + ctx->field->toInt(_tmp_161)*_compSizes_9[1]; - _sigIdx_14 = ctx->getSignalOffset(_offset_335, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_14 = ctx->getSignalSizes(_offset_335, 0x08b73807b55c4bbeLL /* in */); - _offset_336 = _sigIdx_14 + 1*_sigSizes_14[1]; - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_10 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _v_238 = i + 0; - _offset_338 = _compIdx_10 + ctx->field->toInt(_v_238)*_compSizes_10[1]; - _sigIdx_15 = ctx->getSignalOffset(_offset_338, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_15 = ctx->getSignalSizes(_offset_338, 0x19f79b1921bbcfffLL /* out */); - _offset_339 = _sigIdx_15 + 1*_sigSizes_15[1]; - ctx->getSignal(_offset_338, _offset_339, _sigValue_6); - ctx->setSignal(_offset_335, _offset_336, _sigValue_6); - _v_239 = i + 0; - ctx->field->add(_tmp_162, _v_239, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_162, 1); - _v_240 = i + 0; - ctx->field->lt(_tmp_164,_v_240,_const_13); - _cond_3 = ctx->field->isTrue(_tmp_164); - } - - /* windows[nBlocks-1].out[0] ==> out[0] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_11 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_345 = _compIdx_11 + 62*_compSizes_11[1]; - _sigIdx_16 = ctx->getSignalOffset(_offset_345, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_16 = ctx->getSignalSizes(_offset_345, 0x19f79b1921bbcfffLL /* out */); - _offset_346 = _sigIdx_16 + 0*_sigSizes_16[1]; - ctx->getSignal(_offset_345, _offset_346, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_347 = _sigIdx_17 + 0*_sigSizes_17[1]; - ctx->setSignal(ctx->cIdx, _offset_347, _sigValue_7); - - /* windows[nBlocks-1].out[1] ==> out[1] */ - _compIdx_12 = ctx->getSubComponentOffset(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _compSizes_12 = ctx->getSubComponentSizes(ctx->cIdx, 0x600e2845cc70f20aLL /* windows */); - _offset_349 = _compIdx_12 + 62*_compSizes_12[1]; - _sigIdx_18 = ctx->getSignalOffset(_offset_349, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_18 = ctx->getSignalSizes(_offset_349, 0x19f79b1921bbcfffLL /* out */); - _offset_350 = _sigIdx_18 + 1*_sigSizes_18[1]; - ctx->getSignal(_offset_349, _offset_350, _sigValue_8); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_351 = _sigIdx_19 + 1*_sigSizes_19[1]; - ctx->setSignal(ctx->cIdx, _offset_351, _sigValue_8); - - // Footer - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_138, 1); - ctx->freeBigInts(j, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_140, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_141, 1); - ctx->freeBigInts(_num_12, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_143, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_144, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_145, 1); - ctx->freeBigInts(_tmp_147, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_num_15, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_148, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_149, 1); - ctx->freeBigInts(_tmp_150, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_151, 1); - ctx->freeBigInts(_num_18, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_152, 1); - ctx->freeBigInts(_tmp_153, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_tmp_154, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_155, 1); - ctx->freeBigInts(_tmp_156, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_157, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_num_27, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_159, 1); - ctx->freeBigInts(_const_11, 1); - ctx->freeBigInts(_tmp_160, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_const_12, 1); - ctx->freeBigInts(_tmp_161, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_tmp_162, 1); - ctx->freeBigInts(_const_13, 1); - ctx->freeBigInts(_tmp_164, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_sigValue_8, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=0 -*/ -void EscalarMulWindow_8a817f91638c8624(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "10457101036533406547632367118273992217979173478358440826365724437999023779287", 10); - mpz_set_str(table[3], "19824078218392094440610104313265183977899662750282163392862422243483260492317", 10); - mpz_set_str(table[4], "15150626452948049369558454258951944998473656205066551147085410927099501966490", 10); - mpz_set_str(table[5], "21657770039429068954764921491703322863664647353875839647666513628925174100369", 10); - mpz_set_str(table[6], "12375647682928562990039117402012071427352325391824695643601018682085452638238", 10); - mpz_set_str(table[7], "9696868317396279261837202143848861924577319768494794671291368604054247291948", 10); - mpz_set_str(table[8], "3130380021407515466435960164775738901895857113899159372434882655061141364448", 10); - mpz_set_str(table[9], "18102228934286149264792705129260071916752899315308330715218539844598422882310", 10); - mpz_set_str(table[10], "8551445319073033375759400485987251808645632829495239854551666892161995946634", 10); - mpz_set_str(table[11], "13715625823309341099903685995231383734500240362885643328284543897544381196961", 10); - mpz_set_str(table[12], "1071048883351535085908093037304866435256934156776904846490118217237361098737", 10); - mpz_set_str(table[13], "20854215571198841364829663267379838853490562481900760695333560192054323741723", 10); - mpz_set_str(table[14], "451742354061234398202942031427425541585568519587278011340406631715764214869", 10); - mpz_set_str(table[15], "7008953828174351950820007899838518061264921925985394872864563300390722582167", 10); - mpz_set_str(table[16], "18682226731572883983941560819888138208429437649272924591500726355772361327632", 10); - mpz_set_str(table[17], "14160273483664597213372238267221229171717604664820533120344803077042384771915", 10); - mpz_set_str(table[18], "18222732225423011121551971127588778239571766638073592878070311814365350641293", 10); - mpz_set_str(table[19], "13284867948681397133337172135467128366145371196968663290890751743231551931878", 10); - mpz_set_str(table[20], "14160185613158107798945126702461707263750732592693844435344327640031183275191", 10); - mpz_set_str(table[21], "11830396168076579692702235358699790800475074014009773686686326060660146786379", 10); - mpz_set_str(table[22], "3326483685855382848182588769539637112000666370396534958047548918750324603222", 10); - mpz_set_str(table[23], "16878873365676175365094896795813029886044607049292897108776152812655455545976", 10); - mpz_set_str(table[24], "13907843177061409552237236896137033893405437763125042864904283357224378465002", 10); - mpz_set_str(table[25], "8600752263405888453232384867315826708424372752559981680127649623750881631521", 10); - mpz_set_str(table[26], "691645234475582606646247678040476724837141568943984905122797935509348392353", 10); - mpz_set_str(table[27], "2377906462163329191225978849192141728635064580835916630401887266320251299799", 10); - mpz_set_str(table[28], "15319480474450861398156325467777956436693656940155642034815349827789193495632", 10); - mpz_set_str(table[29], "6089164252766459118514096883183711304294501281632971542887946331593610196441", 10); - mpz_set_str(table[30], "10476146512781846234997263827806045286680090602876753777393063096484049772152", 10); - mpz_set_str(table[31], "3479033062979676359862906038951730311469771023590116324970835153503819282935", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=1 -*/ -void EscalarMulWindow_8a818091638c87d7(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12450335349329341951046673370985198995222494147242666947722075876342898395656", 10); - mpz_set_str(table[3], "9951734758650769346072820441375790271574478261506572354164134999444817046690", 10); - mpz_set_str(table[4], "19288661644384445567273764070445136288401533258430891225396664309826062816922", 10); - mpz_set_str(table[5], "454717370483229603965078433113457308346330984244000560668425630921663575610", 10); - mpz_set_str(table[6], "11036550395057651695234945879842344316734685308809511563725205116871198726415", 10); - mpz_set_str(table[7], "6686916819114264470862404866673814030449184260418962781299313931714774958060", 10); - mpz_set_str(table[8], "11584943071743990469508450940068622113650840004743485388763638062519996976262", 10); - mpz_set_str(table[9], "2522205361323446980614269252690299877339317999520959868458265302988689726558", 10); - mpz_set_str(table[10], "8862984334279247389113661975279196551279284945293462186056309366789662542073", 10); - mpz_set_str(table[11], "15395361587300412106702374789905586594677297428929197922286281992041217586471", 10); - mpz_set_str(table[12], "1931730024949759486022373864868442812837862161882630865815922811946342189368", 10); - mpz_set_str(table[13], "2837709313580552424458270943701300651891214069392024997961926106090207487040", 10); - mpz_set_str(table[14], "18713933290215210467667666175419441778784903473223318601715795623470468893312", 10); - mpz_set_str(table[15], "15912943479108146633148323572548567749167211598791020854575103168570576406641", 10); - mpz_set_str(table[16], "3371330846548270252366274792614979796607657190522123380466170276619028673364", 10); - mpz_set_str(table[17], "20118851005658061473865583030477744410974510198771734020012411384826972467628", 10); - mpz_set_str(table[18], "20709849873119480107722994252823030617564606162682289843354773199114126432181", 10); - mpz_set_str(table[19], "11147937764687065541845952286338417174555516372389007686854433431785989855320", 10); - mpz_set_str(table[20], "20612342549336571233586824192667026435576965443231669760489093690131842758093", 10); - mpz_set_str(table[21], "9036856941211088274038458568357979705491504773280274233521497994979112550438", 10); - mpz_set_str(table[22], "480590051872373936783058017174694527804992021578591277936264925023938790998", 10); - mpz_set_str(table[23], "2698124413369660851243824606305933154363836527909961862981550117290381348488", 10); - mpz_set_str(table[24], "8506910167507337132174870917683467139024088663894919990248817817475205504033", 10); - mpz_set_str(table[25], "8554604844761436393257862151218354239170681209260064002339003071598032229201", 10); - mpz_set_str(table[26], "6568114972191142651303903458372393214875879773896760094673312697224863241834", 10); - mpz_set_str(table[27], "6022617941898614236743457388428151699027252864984103881453208601076128436750", 10); - mpz_set_str(table[28], "17904639434028839898854823561909720619694932433031819449561382276651823544685", 10); - mpz_set_str(table[29], "12639124190122096702065279211096375988549941348271364477539292011603099800289", 10); - mpz_set_str(table[30], "12039858934261588004400698759124361551292695794647935041975177089639743130014", 10); - mpz_set_str(table[31], "10517658053139539508761071910886478401086580256794382403111190159835923441057", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=2 -*/ -void EscalarMulWindow_8a818191638c898a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "7045697552349898261743966576765076077631482247492318530240889472256588204028", 10); - mpz_set_str(table[3], "3395600428544429233510781819124998700741425532230423692905830980889097341765", 10); - mpz_set_str(table[4], "6744549111917530764513512331120487629893685943837744536663616011599465271187", 10); - mpz_set_str(table[5], "10883183306544818491710667232582222974396909896870947271118527221832239568413", 10); - mpz_set_str(table[6], "9244276130453639577883773738976340753082221103199659084800755483749918131527", 10); - mpz_set_str(table[7], "6309158401731278546929483611199073290102324720279201651395299984768656633602", 10); - mpz_set_str(table[8], "18227663628445682323588752862251736106950133905035517599142834318656635672008", 10); - mpz_set_str(table[9], "15968707818136024145730173609960933090598188161418032518329451945197694785985", 10); - mpz_set_str(table[10], "19790161925513641826173521251384042096462565971113368646790449092272638453440", 10); - mpz_set_str(table[11], "18951820515407881634811076974479241881307945078262723139621621617846859199313", 10); - mpz_set_str(table[12], "13487050806667939269092637257391470973644431334875501423021305009427050716809", 10); - mpz_set_str(table[13], "12923547377386110192128869129856285188526426572837523038386982523330544314397", 10); - mpz_set_str(table[14], "21595003021079211179013842845440988224380451106449478764549685302177957739947", 10); - mpz_set_str(table[15], "2987285477165593498047221190363008617921622332189886015935950416396747649655", 10); - mpz_set_str(table[16], "17303634213618199102056016372664412129974431859446453359105581009608817565571", 10); - mpz_set_str(table[17], "4450561540112488104624518245870286278550351737495215477889950501752432376996", 10); - mpz_set_str(table[18], "3141434226421849222585969678304762759887991737941353354470224912622168084115", 10); - mpz_set_str(table[19], "12728396654376398892005506962757163454896562186292741787142186040205618719757", 10); - mpz_set_str(table[20], "9708925788058813188621214393567192686293251962885674485685327950703484002553", 10); - mpz_set_str(table[21], "16420582083000958736719513297067794235930227358340173099890447851853731872661", 10); - mpz_set_str(table[22], "8426171837936956756584231006242663573899977959855831777118983630418281594454", 10); - mpz_set_str(table[23], "21388114408852548357590937768281753554991961266563093834359119510507376442369", 10); - mpz_set_str(table[24], "7190802720337575053729990306351192292605145136761733161542487626494418221101", 10); - mpz_set_str(table[25], "15318743785409755455502646372484385216424688000540061704513269039598380428474", 10); - mpz_set_str(table[26], "18923683823879719599598708766579911888522321064235431411188398308336104365686", 10); - mpz_set_str(table[27], "20992568491574006565936670738179100584028276810392805245209584525954307542318", 10); - mpz_set_str(table[28], "19300331083157559470280216349912136259644153736182668201472510882275436089814", 10); - mpz_set_str(table[29], "6033956060419111513024628634700765726136642761460226434669674407924867833274", 10); - mpz_set_str(table[30], "19716255736785937137183198048246845793934322373972171133044602969842516937714", 10); - mpz_set_str(table[31], "10080336237463613513581482521894656187906305499367291706009680418102193762660", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=3 -*/ -void EscalarMulWindow_8a818291638c8b3d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "10299499580313288351648961258372184361356275910507094340865623417151085556338", 10); - mpz_set_str(table[3], "9266467220996834961927872985896756998782524262982604694296119855882960023673", 10); - mpz_set_str(table[4], "11278840426758671324186407245785960482558955431814194534244066083912343084227", 10); - mpz_set_str(table[5], "2180566018272958353843165270558616027185910742538683657057390264471380585940", 10); - mpz_set_str(table[6], "215386845435812979771368409990753763520312920616630494958085743901823917800", 10); - mpz_set_str(table[7], "20407592108330400213379184310602975524691762015018801167152885076939923197266", 10); - mpz_set_str(table[8], "17529622850650575122288637014439737838354836376247976403583484982429641171584", 10); - mpz_set_str(table[9], "12455268132672690277725610326071579764591886067575992196312484188216927540619", 10); - mpz_set_str(table[10], "15188152099486947620269392050023940852211965590522310494001669288153455445916", 10); - mpz_set_str(table[11], "16643644469936369507016635388414064434540207698803410127096478208351815132679", 10); - mpz_set_str(table[12], "8178132823820298648421993186324434673405971480934619017343528184894419827335", 10); - mpz_set_str(table[13], "14782298368407909246033862767035319927800423265218646860423700734647085090760", 10); - mpz_set_str(table[14], "16315046440322011462423889148453525506600915057243039875408831302480406347036", 10); - mpz_set_str(table[15], "11081031008295030156345410714660120182935106059911302280322724839366319120844", 10); - mpz_set_str(table[16], "9727719397303946402023174236663500405972296934381725453257310851467439253642", 10); - mpz_set_str(table[17], "9273145391697533576939976503752079006823997138797717025042581388890194138374", 10); - mpz_set_str(table[18], "7284954265501748654567633026783041508150147023538928043692704712804217808340", 10); - mpz_set_str(table[19], "5188552586189946101151630268070618252715222420305958317789629045279543150116", 10); - mpz_set_str(table[20], "10785941615172681349444165278918869766333016424678843594832313471120540730478", 10); - mpz_set_str(table[21], "5932771768255819196486763330142236670298720914165226901554418807229936846474", 10); - mpz_set_str(table[22], "2028721811486633247308830142589029331529082029687419498839147830840323984363", 10); - mpz_set_str(table[23], "3017857322436314880341693098842398234815284060974563745722139842760120971581", 10); - mpz_set_str(table[24], "18296259486767382700015511503733209798422188966251188911514604063029222028546", 10); - mpz_set_str(table[25], "15180141133736660652107717504927632409749020733332496982418082413845344259403", 10); - mpz_set_str(table[26], "21726279678732560769833680642948162345979007579422305294648581199670674279821", 10); - mpz_set_str(table[27], "20841398550339602351135248720837985529268757070690515168116806731996799790138", 10); - mpz_set_str(table[28], "21282638032408430997306033364705899080528942581677852490145502518808933725567", 10); - mpz_set_str(table[29], "13903620002574949602329475381210150875367865253860756684620613597151406554467", 10); - mpz_set_str(table[30], "11609675030878572557983311167493301410885694396865259923714699971882730337193", 10); - mpz_set_str(table[31], "641323983519843603430479660621578922121635387933802210359009390561663899453", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=4 -*/ -void EscalarMulWindow_8a817b91638c7f58(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4152637325631936004620374572177627550442342730547146361150006894931391929814", 10); - mpz_set_str(table[3], "2180367166602885287952962653941971483151584153956761815327641890395546522883", 10); - mpz_set_str(table[4], "17080322430714894370085335406415912347921332943892515519091272280414189987214", 10); - mpz_set_str(table[5], "8494574418412741183111083814796810418721782459448593747717027920516647175700", 10); - mpz_set_str(table[6], "17728021599237737787197631959143443552148617809674045394361671154284354186242", 10); - mpz_set_str(table[7], "9267678837483990782127158138507503647206006042119316230564850934588871651810", 10); - mpz_set_str(table[8], "15160890345615204326166092626214588149676637139644790189601178926476813716358", 10); - mpz_set_str(table[9], "11374387429070567029034484634553768966914308691474791950791645253730682709009", 10); - mpz_set_str(table[10], "10678466208351502397877880528021155331277793487192349956740757112468444707849", 10); - mpz_set_str(table[11], "8190655992869345245045359828215583356622306673546575090446072621991944775429", 10); - mpz_set_str(table[12], "17762181337476536955590643741916820380461675457054832411733021785061810440533", 10); - mpz_set_str(table[13], "20451970925628477628286894751575162727823345451099151964964174136280858943261", 10); - mpz_set_str(table[14], "13292833921138496806187651666335498027312372687909414228778945993380861428942", 10); - mpz_set_str(table[15], "10487170910013047897637679529351943901530567046368452227558237974249088811619", 10); - mpz_set_str(table[16], "20759698136517597571684798693842032656828405219206888345138651470913002897286", 10); - mpz_set_str(table[17], "16058819041904626730663137648530951263426680277649947229782256328297555532981", 10); - mpz_set_str(table[18], "13320523481006562893020500681642189554952463035370425252039716356578464963045", 10); - mpz_set_str(table[19], "8799514829565047209126067817437375895787209352159804960101618242161839525951", 10); - mpz_set_str(table[20], "5866468963637476981400985857527044765867964812856846323487892495456443741777", 10); - mpz_set_str(table[21], "401553102066206944718793182019809421052564381627968135878126448667394086484", 10); - mpz_set_str(table[22], "2716411494364331665129154806933170438183297068054907180270986518830578042712", 10); - mpz_set_str(table[23], "18439592130459086491266800132296802694103730000695016079581620779245803665472", 10); - mpz_set_str(table[24], "10936946011006937891444595577824545764470199547488998946086523659824401983007", 10); - mpz_set_str(table[25], "19901433082800065174799376682234529651901940793106941153214111754453162322508", 10); - mpz_set_str(table[26], "13706928738199343026920573380236589493583670491143152449984889204007175138678", 10); - mpz_set_str(table[27], "6624239682483323245003772292813775827295960014778625321845307519288526880291", 10); - mpz_set_str(table[28], "2596288971144515943757696290543687200323089740599685000991244283938365997270", 10); - mpz_set_str(table[29], "13700075398258237145901186732874668417282240332802293950518984212255553187508", 10); - mpz_set_str(table[30], "7276525175456025197755876167641478885798347632114620699422652394291294023406", 10); - mpz_set_str(table[31], "13792453969170265798597018249025953963597948938469190276132321943433124083845", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=5 -*/ -void EscalarMulWindow_8a817c91638c810b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "10059471356981080526161248310431238683905879239618874867630614905951922554524", 10); - mpz_set_str(table[3], "2893219258903194185350877973287422615284317574227301248398827645216092040124", 10); - mpz_set_str(table[4], "7955688620811353537502456371741345360010174295430488337082479317466754374641", 10); - mpz_set_str(table[5], "1552479587286910636067135316997525992163242693116944777924976792867265673234", 10); - mpz_set_str(table[6], "4076752434376815976672943629774991129727632722349304506829384779336306655967", 10); - mpz_set_str(table[7], "14156394013880982635009488035283281586885725913140497270917348481118569169555", 10); - mpz_set_str(table[8], "12277712837538028259413714493049635386935447875583313929221891977691317215420", 10); - mpz_set_str(table[9], "347082090294630958999344374086054629628043379985548264666637705321047972062", 10); - mpz_set_str(table[10], "9169985224880045685902862270400314197219835660697585696719219583921506497896", 10); - mpz_set_str(table[11], "2129375120322868027710690230696050562503615089761456135973356178075539108353", 10); - mpz_set_str(table[12], "4735709784947571026584600363686132054784294573927568774792208273415890571854", 10); - mpz_set_str(table[13], "1356360814089129098026853266681803599235409327843206313454889960114721040615", 10); - mpz_set_str(table[14], "11110136120351033016809650067584456424031521001483843267966391083954699894567", 10); - mpz_set_str(table[15], "10678309826727527905695072767024982194005595346260724019307182267806309842511", 10); - mpz_set_str(table[16], "17949059661190708618242018953109839994685894956236807772121590081765534153240", 10); - mpz_set_str(table[17], "18512350870077032292031574152764607530023778042410022653599994942486346526940", 10); - mpz_set_str(table[18], "309250638089897597225380749328145384131390904717859175953395013759107326860", 10); - mpz_set_str(table[19], "6881906736513386327385824245964033360827939339794911899560753901232820158992", 10); - mpz_set_str(table[20], "15693694149102271963649517494810630420111979369528801952689672462869233913819", 10); - mpz_set_str(table[21], "14850959645647438773263301097027004240286323742991400428766062614208557633805", 10); - mpz_set_str(table[22], "10508269604303515446429184177367617809863720311655641405406090551242461640548", 10); - mpz_set_str(table[23], "13835558159627105067527834001068856785443803703769379992201578489656910931938", 10); - mpz_set_str(table[24], "16446138449439094147266330807719036578121180036988374809688364988157885458804", 10); - mpz_set_str(table[25], "842885020979433634997456604456132473705102342538041421936252105952545460182", 10); - mpz_set_str(table[26], "5402387649315196401476528831700695288422587804949701721078113803037816700568", 10); - mpz_set_str(table[27], "18954463848378153626407256721564024459724384275474304584054102951285145180121", 10); - mpz_set_str(table[28], "18687290318246424046658404736952875314563619805513613694304987465542576775030", 10); - mpz_set_str(table[29], "10328927280537345889935307985540911534621045190440081255660374119784055050825", 10); - mpz_set_str(table[30], "1364906674338461585656434739107222827428022180855057060418931389021020199648", 10); - mpz_set_str(table[31], "1813852328577833166873790138854991737348346378766433059621698765008781073762", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=6 -*/ -void EscalarMulWindow_8a817d91638c82be(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6696924227194880599213411252496702532588707496216166438794048914046613861251", 10); - mpz_set_str(table[3], "4582991448152463823047001667952825587496013160285877022547286223286690499209", 10); - mpz_set_str(table[4], "7913817789053702567228757915143867322337287975194114128817460553462139932642", 10); - mpz_set_str(table[5], "7036385166032666440237714017827254061958169005584911850628710951649014222296", 10); - mpz_set_str(table[6], "9469355211527074219420241360733803585653229140457284765010162520939095632790", 10); - mpz_set_str(table[7], "12807013954329784456536831758295815293345625504234061413707283538626744152070", 10); - mpz_set_str(table[8], "11632888711758463757298576569782447197685100413818678716919070764097162224518", 10); - mpz_set_str(table[9], "8161402736996445649697452071607849971538046900561021646104181668783454772688", 10); - mpz_set_str(table[10], "20085116934187058842911275196176217801258351861285263904565203190322984514161", 10); - mpz_set_str(table[11], "15084641497000452022929002528992190844267865333921041163628790717191570819600", 10); - mpz_set_str(table[12], "4601694861190311597213771397743548058400010202974248033338216641255844991066", 10); - mpz_set_str(table[13], "17232201236512944377112575168094403944070558811116318274904140246175644194762", 10); - mpz_set_str(table[14], "7813231740184032615735414864659503190895979676720562745632579495298679726579", 10); - mpz_set_str(table[15], "3660919817188380268430242452249693618001631207503673980428892176343926918974", 10); - mpz_set_str(table[16], "10458087548997809852151692969375762626326308930367907121204344506582106226522", 10); - mpz_set_str(table[17], "10092952565093341975387585887077362479531342081004807551176088631139596391390", 10); - mpz_set_str(table[18], "10410805271360662804564177092824947153052731972330045769052296785843573755308", 10); - mpz_set_str(table[19], "10184554845273300794471160283775900976483776102785799278287154448466003906961", 10); - mpz_set_str(table[20], "7863345532039581963597155222390714576813044449694149912972526081533432780186", 10); - mpz_set_str(table[21], "3472528823549877129962329001613282308877458799069109356073868564811626993060", 10); - mpz_set_str(table[22], "1879172298402130618776736833191662822721427345494123786055320389554063592778", 10); - mpz_set_str(table[23], "17596875527836912880378640066645254223645475679543471698138050019448508665523", 10); - mpz_set_str(table[24], "10896586639510202270166905811852720926404979591478172310284490856284228939325", 10); - mpz_set_str(table[25], "20419355217121322212632570642891834919613783447152622251213364180805924444119", 10); - mpz_set_str(table[26], "15792356390499443346936821474600266270596533763281151634845043786540149049987", 10); - mpz_set_str(table[27], "21284823598750804978716981081597932436486136876248122410024870449480994659627", 10); - mpz_set_str(table[28], "14436939288590862471438099071760394876959844576112487944052265738246439305903", 10); - mpz_set_str(table[29], "17027592766450782707182617434964390901664505248342575660291535599785038453407", 10); - mpz_set_str(table[30], "14874956003623327854605831627331487499357528479854928757336712078349160565284", 10); - mpz_set_str(table[31], "11533494496164056110911632202226183076948644848618805512291485177899023548301", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=7 -*/ -void EscalarMulWindow_8a817e91638c8471(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18391202230277166150190352475756632650774606644341512870017380816737002767028", 10); - mpz_set_str(table[3], "18710055256634775773116987174919809067587720956975115175369267430633625213067", 10); - mpz_set_str(table[4], "14778458914017941207129752308841192179807874219218045182415770357199972826613", 10); - mpz_set_str(table[5], "3425436024629949830749920214649525143076612409459562222613982846650118284684", 10); - mpz_set_str(table[6], "8143077758693209412905125140226887050652407780210736990534800217833536409512", 10); - mpz_set_str(table[7], "237505014231011999664820876893177676392206921106485191752137176516823119455", 10); - mpz_set_str(table[8], "21286695644914650826227005775384111743699352138127585452386892073162616242676", 10); - mpz_set_str(table[9], "16275297493048463522435789944039046152795453447530692541766470345251903814920", 10); - mpz_set_str(table[10], "5534407414098019921741548441009649919786948715587234534851751865620200059513", 10); - mpz_set_str(table[11], "17583783309789499331596931276739842210477446390922102133826713255679850961003", 10); - mpz_set_str(table[12], "10429362291381891675156024305697777333590711164789159993595868881740508768966", 10); - mpz_set_str(table[13], "3606220552903413690428978603995277267515491833422158562841893817985869925859", 10); - mpz_set_str(table[14], "1001057897919264913898056752999698513328670461115886374304687034763697867971", 10); - mpz_set_str(table[15], "11961826954032588591745697380610775802434702597428828622863524197168690192704", 10); - mpz_set_str(table[16], "21719300939210305969336098672434704978644727386282683375797180914132352647081", 10); - mpz_set_str(table[17], "20453261227160641682983540960072213023042543450742671631864688999932994522613", 10); - mpz_set_str(table[18], "6688983196951156663368010771635876014643306651412273525340890404677802990925", 10); - mpz_set_str(table[19], "4329154909589481026794874206365184995137307020487431828235471079255153097124", 10); - mpz_set_str(table[20], "20325703716097484328542721016811239537381679153530208986569993689407256022107", 10); - mpz_set_str(table[21], "17129805598995142684907479478577672063861620183999483700890055263589330374369", 10); - mpz_set_str(table[22], "17626867705954721998808081461454564919455319262600774701457347225857871402252", 10); - mpz_set_str(table[23], "6476877185714610927878101542892313487041395393552616927067505163129600889254", 10); - mpz_set_str(table[24], "14453563974743541630501009650505073017082333546432723218044789842310325612592", 10); - mpz_set_str(table[25], "16697636864004950106851433052186891762936466379440718045270640770134549628983", 10); - mpz_set_str(table[26], "16336674064314851614598481721706263435060040374841423735400910189293645280257", 10); - mpz_set_str(table[27], "8643211243739084707684167937814313951250086187718900960591235775032686826058", 10); - mpz_set_str(table[28], "7229789946143905262758593287001330902886040426051310686284434676444730461489", 10); - mpz_set_str(table[29], "19515735738256349212167994764047635285407275421276140212886542730371119812132", 10); - mpz_set_str(table[30], "1306200308139743373499206147170159234654094600717342494219942953142013964121", 10); - mpz_set_str(table[31], "14902929803127111256459071785248970670810887660129923405529827222127335396956", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=8 -*/ -void EscalarMulWindow_8a817791638c788c(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4888136755887548458736137558751290520252510159838688780934499339730661336887", 10); - mpz_set_str(table[3], "8045182454056122038334995490813076640902705577725505071179760811662775533287", 10); - mpz_set_str(table[4], "4707718335866205590821127522634187193893956013471850612191382701068690358110", 10); - mpz_set_str(table[5], "12616986710715852761430502133036506881381430082511453824810102320032285252420", 10); - mpz_set_str(table[6], "8474545829245280705438810607022100876485976341434114568447927952585072070096", 10); - mpz_set_str(table[7], "13257362948581236174493065293833589402318622435238077410808789863766025475596", 10); - mpz_set_str(table[8], "2284971236118159637795435604157963666497151957964113764944401766777791353243", 10); - mpz_set_str(table[9], "21295034208782650311864455974071790640311399176852592105237671419235475989836", 10); - mpz_set_str(table[10], "11337163204383659330318732546273292342109166814523743433003008693091772799617", 10); - mpz_set_str(table[11], "17372059106790278103966691675948566004139966205121679300419852859192599945222", 10); - mpz_set_str(table[12], "19174077617038844599562100614027325309645085302610884230842261135413647345264", 10); - mpz_set_str(table[13], "21812413513058204811359699655543922329822362339098083538977769446800088958694", 10); - mpz_set_str(table[14], "18379685254134779434206714344865833928571234289581223465904305008334467213227", 10); - mpz_set_str(table[15], "13977970906502195816767053426564182896465327159304171861273808073830560444852", 10); - mpz_set_str(table[16], "13913230509000240030418535763044623348995851945830856321470675781189941060270", 10); - mpz_set_str(table[17], "10704444671848051590686015586308748841660651630338942934797538287144904345222", 10); - mpz_set_str(table[18], "12306143812320135300291143616859322652369153919646756679335340762083853222688", 10); - mpz_set_str(table[19], "11215230859057581114602129078023821452246254660839798599005880420132997947349", 10); - mpz_set_str(table[20], "19949756785350024959941282901515649485325534245205679859231439243717522124403", 10); - mpz_set_str(table[21], "15911591928499127282066443519991156153110806473026639657579917467365534724988", 10); - mpz_set_str(table[22], "8567981818297665123860819607155467865529335698989977274239775073911444544930", 10); - mpz_set_str(table[23], "20994142232702052824908265107277127000680266832039291931249748306241787844791", 10); - mpz_set_str(table[24], "20686672495093347004626369122608156769123774114009290372048917304937904522885", 10); - mpz_set_str(table[25], "15178225316396866308378338582424637262447466085622109818180851173262809562837", 10); - mpz_set_str(table[26], "20700655209652843149305136845371051230645623647757487066289603661741658346467", 10); - mpz_set_str(table[27], "14595139838565171084145708418002338749266829368743709625855308558124863161120", 10); - mpz_set_str(table[28], "2642505462230357493978998294670651882384664314032710169461744708420848222272", 10); - mpz_set_str(table[29], "14006548708426651013908646882496035559246730330230393257394283183226384168497", 10); - mpz_set_str(table[30], "4823634301877161950052014962396374904828625331905947510450953591356916732342", 10); - mpz_set_str(table[31], "13978665686343081797529931728257642748657915225026950983809650871159942043616", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=9 -*/ -void EscalarMulWindow_8a817891638c7a3f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "14392666584016431061370266677995476241875374542231426119230651372149502582351", 10); - mpz_set_str(table[3], "66225971351226860555745322617284829458484282176684455868646629122675256444", 10); - mpz_set_str(table[4], "485199691192871257688115544311139959017759100528583874431916044885638397874", 10); - mpz_set_str(table[5], "9699938951644413178903993187150520256951040422157510278309597565671792849610", 10); - mpz_set_str(table[6], "2595607140210170261290628709835520141081633734713543652560415677738296555954", 10); - mpz_set_str(table[7], "9695332069813308406042561223596510643220316193295157119891417448538942943499", 10); - mpz_set_str(table[8], "1437917280108914885189724497466243283477490664582471879120892112128068082697", 10); - mpz_set_str(table[9], "15307433244740362820450471032555788262039487494048352243080829630606214655811", 10); - mpz_set_str(table[10], "855969964811906346010743263563452371648984806422553257966545336978471197059", 10); - mpz_set_str(table[11], "836181924930265617418971139619982716045130896685804294579114237671053490158", 10); - mpz_set_str(table[12], "4335450768929135102997782435994431198285892392070577465086986821369677100946", 10); - mpz_set_str(table[13], "12600323862045901795283092102095437359011105590455896668175414199754440213680", 10); - mpz_set_str(table[14], "21787759461957311942967012934978428987670145375006042105741286678276835580970", 10); - mpz_set_str(table[15], "17242090291245779401502371665121596674364645480000906589019619236088992868826", 10); - mpz_set_str(table[16], "12408800755104460517235188504357780681292564645180958147840010959619787066560", 10); - mpz_set_str(table[17], "16205369603740153520729740943167659313050557216102628692844498072917394003839", 10); - mpz_set_str(table[18], "6892738909474373874944861763143982325565511932540154035829883455117299421093", 10); - mpz_set_str(table[19], "1040755370900746605928411055724625378522990046881639817161339039817907068693", 10); - mpz_set_str(table[20], "15048455963139536655833063700714044628907986752734434884419211481829993831244", 10); - mpz_set_str(table[21], "2626660769740051470160271797832900916837394302051759656896564175629113945383", 10); - mpz_set_str(table[22], "16876977790832671002745762264253746289637891030470244132400743082513649244615", 10); - mpz_set_str(table[23], "1598394011433740560513193119540044467961903112334484885938744727873699132641", 10); - mpz_set_str(table[24], "9355195150709234577080554783149944158889458437204408531046409892945480646919", 10); - mpz_set_str(table[25], "16323162977104162845901600868001171425085795328591350810440376484407731185207", 10); - mpz_set_str(table[26], "19119686481324947128929259173521918520753225410928048551701130161791462454313", 10); - mpz_set_str(table[27], "5969827327422986316003420641296569332244415662231141979781463673457966942201", 10); - mpz_set_str(table[28], "7292083159810360742183767336957217851772607559079821447221078542221696197224", 10); - mpz_set_str(table[29], "11060060645561768633086255189035870067870470495567114078557414129042277936317", 10); - mpz_set_str(table[30], "747357122757882496462826560533366388757001439657389104774684800890404769423", 10); - mpz_set_str(table[31], "6217828469201264039076990047710929698750797266478292248089409259837920256735", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=10 -*/ -void EscalarMulWindow_e6955e0c27caed85(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "20361211142478617929322832251348360766371561505165322057813543895777653688807", 10); - mpz_set_str(table[3], "7720847332287658112391035368674462378880944025513946193241421401524560723374", 10); - mpz_set_str(table[4], "19836457202936052088053580821357357262299502604592150459440095339333515236997", 10); - mpz_set_str(table[5], "7989971350986700441512122750798828134102939565725340088235077429177142314696", 10); - mpz_set_str(table[6], "5093941028160539078398141203132019477309564551644167622249216114666581368694", 10); - mpz_set_str(table[7], "21622286600266773181786173872134891748536286083980403824274215251510798697816", 10); - mpz_set_str(table[8], "5341454683820540059886068752211480655549586158458781633093819459770248823563", 10); - mpz_set_str(table[9], "722084453313468124098012269031763291544030295440046192079097277830445294726", 10); - mpz_set_str(table[10], "12383787100751844934177772618313993803020585089264454200337093580737926886641", 10); - mpz_set_str(table[11], "11461096535276407173122835067709178917974375202402225745304896511090745058187", 10); - mpz_set_str(table[12], "14012431958774534026707918346344894245771690306135809328705061761298919899988", 10); - mpz_set_str(table[13], "5029393341094852930642926045997523554135247170389262246988649129264967832267", 10); - mpz_set_str(table[14], "19398195757550054940339194627375585634177280216479616823169872236721997129321", 10); - mpz_set_str(table[15], "9894925754866849782337688791752188178686065455775974100979256399479679534678", 10); - mpz_set_str(table[16], "13667518277431329867898208499282766533424487948939991189767908122942211817156", 10); - mpz_set_str(table[17], "17938371561404345797831935261950956431059634946086232408351558984452516087671", 10); - mpz_set_str(table[18], "11122000103090960950703254500957516254286139138773423732307093683729105953953", 10); - mpz_set_str(table[19], "19202935301740120381424849790833665310852282765012854305529238796681392353884", 10); - mpz_set_str(table[20], "19411643216740576041388070440636673354425023624279731275148447643470533176108", 10); - mpz_set_str(table[21], "17943406513113907697079800031621059187704226867382695473796304307147980548978", 10); - mpz_set_str(table[22], "2093472171194815147423313598724689865552536934700615244812202566868735165877", 10); - mpz_set_str(table[23], "217121898847118066968265343115284384382609494705235033397096191493220358680", 10); - mpz_set_str(table[24], "21730567621944329666740276746935641916756949876990540083416805095812473298511", 10); - mpz_set_str(table[25], "2742331690620053548929597484252332827485567535167060149256870274544281015069", 10); - mpz_set_str(table[26], "2265917002229290962037728573397694532981947172398479965202906048595835435904", 10); - mpz_set_str(table[27], "11896434941996349809268496612359605556183243453877202147139509958528614525099", 10); - mpz_set_str(table[28], "9851903387322129477802340563057521355334646777579058834816886344374028709183", 10); - mpz_set_str(table[29], "19664917765333760896588538992098112258300061269501383409550266721114664417869", 10); - mpz_set_str(table[30], "13557306798066104563543696608067587401751889285647949108849287625945991897160", 10); - mpz_set_str(table[31], "13201528537934914656108851035478997564257665545218852903604367843764289520553", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=11 -*/ -void EscalarMulWindow_e6955d0c27caebd2(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "21198307553188557840674416595861921102643943996644836140576710647837505121191", 10); - mpz_set_str(table[3], "8486897366735499578342411927300032398861749534106806748708254887195429814714", 10); - mpz_set_str(table[4], "11907183312356474599598395230603943849223699932826123897514352441828826549655", 10); - mpz_set_str(table[5], "115414612007510769997441890387686681299270578556303120460163008793867737300", 10); - mpz_set_str(table[6], "12008164561134226667166915483475445214894491640168864847501109146314404037016", 10); - mpz_set_str(table[7], "1998250265241791192807567306880793109956200709221181692818595253920510842869", 10); - mpz_set_str(table[8], "14465659935435067428242191803896424556358050908158478982532965759737416638391", 10); - mpz_set_str(table[9], "46591929719995891587317598544673747274505648568646107030457210252112232211", 10); - mpz_set_str(table[10], "4639165636404831429025689649526249382212715920941048877616340988481069338312", 10); - mpz_set_str(table[11], "5101588537555727893777370321204298512116074682415534657357438018311244961112", 10); - mpz_set_str(table[12], "179410057434168342906464145544812694852069933120245430229949419159981426906", 10); - mpz_set_str(table[13], "7695516875485310118844092773966973097957930556442670262323959281491994433115", 10); - mpz_set_str(table[14], "12683550083733369011440086364491019222088425588874390710788576264914142440960", 10); - mpz_set_str(table[15], "5694948114741864866240681009450947435252051335267634097805434165868160801782", 10); - mpz_set_str(table[16], "10724211750162894341858286653187126858727209348645058793237618331955502601156", 10); - mpz_set_str(table[17], "7404460343826361878310069770697755540627651028947710330320611132691144506559", 10); - mpz_set_str(table[18], "1011170870375244730350333627815408632571247698112378278848951880844557316980", 10); - mpz_set_str(table[19], "15839603285187070925446911844129559981300686209269995113230508481293613865756", 10); - mpz_set_str(table[20], "2966612230474186285505233270277233118605232383741804140458053968962877154542", 10); - mpz_set_str(table[21], "13702056390780476051263475408543339551228516609913108580223589540885452739154", 10); - mpz_set_str(table[22], "10963234875495494601395535836243998941272642760952464991497708069444262559963", 10); - mpz_set_str(table[23], "2313520401681800825415168240027059682003498260489731314978285350627677801694", 10); - mpz_set_str(table[24], "11034676630727630465992071313438030599204014910399338092870866086372070510430", 10); - mpz_set_str(table[25], "2060048681445111788650301830220172336819820520964630499489820926379279481510", 10); - mpz_set_str(table[26], "2774450720991608895558431208622796553538525207994706762219257872508653556024", 10); - mpz_set_str(table[27], "3428484919643505156893699812728369438055460535778176776923034814683617936057", 10); - mpz_set_str(table[28], "13727651093264767308318630844306701587568511903238944307513013210976622573656", 10); - mpz_set_str(table[29], "4853566076707666529275856983695806185544001245561094515687608931511302679988", 10); - mpz_set_str(table[30], "19350093072616770865787416601808923840896875448915275598193881451430045444190", 10); - mpz_set_str(table[31], "20972943759177552012956670836637021009913280735465683487859400257087986794196", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=12 -*/ -void EscalarMulWindow_e6955c0c27caea1f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "2245347420758998939601654915995759625570985735341286336862442404872284134277", 10); - mpz_set_str(table[3], "15600175216381544552162631322926832543867192616889508483792352405318394642470", 10); - mpz_set_str(table[4], "14713865636919274091387959936103511533017542622393004097024935873614305897986", 10); - mpz_set_str(table[5], "17082625238523827448579554042313125725489283468823329082230295837384544233360", 10); - mpz_set_str(table[6], "4130026987217455767293805517306273233305342983329742849082125930467911416664", 10); - mpz_set_str(table[7], "10427566142023265496688306087768308692554502369400973363134953889632181224913", 10); - mpz_set_str(table[8], "6432639534516096181991465779290379785562296854334528132085060549479709848596", 10); - mpz_set_str(table[9], "1784795157568636441341662901777646713310578755953977660795499303703719571112", 10); - mpz_set_str(table[10], "4188448501446497232967490158035521078116554185178851266709803061285616915224", 10); - mpz_set_str(table[11], "18716609095958144499747870698088891449596409740920092406022692563942168106153", 10); - mpz_set_str(table[12], "11411143655461973929715106465762266920378002689451141098350251890901080754639", 10); - mpz_set_str(table[13], "4898331285085817394186656633537281460866984315900582467822782217930629428800", 10); - mpz_set_str(table[14], "18706504029181538330837254521202224871170423469228154336979744558006722716627", 10); - mpz_set_str(table[15], "11425737589440965626741300958354870954297271473381910590120025121312944309519", 10); - mpz_set_str(table[16], "14373297324723915662114010513594200237305079767549879990374133101163954873458", 10); - mpz_set_str(table[17], "12045492905144839731840907843406000625454021439217533469599751608893972225697", 10); - mpz_set_str(table[18], "19340989026995676830834288982924328205918588128160356789649480022935938198158", 10); - mpz_set_str(table[19], "19752302409498079714867589577926877405267276060968957871070901857256661726904", 10); - mpz_set_str(table[20], "13464875825580746985517504034538589218190085341524823968835123538888636945009", 10); - mpz_set_str(table[21], "8167772782583493720839381230687433814612677789514088304123412844438607241121", 10); - mpz_set_str(table[22], "4744904024698765717952474357298703055900563249035813028371198731432509923289", 10); - mpz_set_str(table[23], "2823120529755392839175955074757632624330497277595719362322612087619994941261", 10); - mpz_set_str(table[24], "9695157492707235559874372581215361762782235869574540976632726494241962301237", 10); - mpz_set_str(table[25], "21373123160048467958919275182570525520676861218159828303727159127127593554922", 10); - mpz_set_str(table[26], "15438903139881052863241187342839703536770433555405846571728272078532995082881", 10); - mpz_set_str(table[27], "1543603774684625087996312027447844378316307241548186021113635683648320181719", 10); - mpz_set_str(table[28], "18726865242160767157127530668053720978006703713376239560987532445354419204351", 10); - mpz_set_str(table[29], "5926539098260937576132254761980048389949550146457836951695936714501148551838", 10); - mpz_set_str(table[30], "19037522830886200238496308840217816377880495211080114221275962396131691377387", 10); - mpz_set_str(table[31], "12749637905634617692307388131106696770111381313017158407997328078770530837740", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=13 -*/ -void EscalarMulWindow_e6955b0c27cae86c(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4092213701451706983421451188429404938730274104365496627715502983148034881365", 10); - mpz_set_str(table[3], "17793652202913438129989529738660378946020613503107319358235937582964372639678", 10); - mpz_set_str(table[4], "11930436627630820972865983369632835385367920927579552565277074705346972639623", 10); - mpz_set_str(table[5], "9918552317041935150997218140636443022160505100677547029559924853649552764668", 10); - mpz_set_str(table[6], "1471219075881024374457272705680818525101798378348921919930008272829546277026", 10); - mpz_set_str(table[7], "17051853606173695875486117250441221308458718054091039533732662655659589151922", 10); - mpz_set_str(table[8], "12087843304878022388655817917721571564163932537830088640246521337576020950600", 10); - mpz_set_str(table[9], "4084795181125416995646851923845414765385547454014098157614130447188900627946", 10); - mpz_set_str(table[10], "1810775050179665154818001977851498185923554044640089228433226321159491434383", 10); - mpz_set_str(table[11], "20066530790299499783486518088429744183934930139575767620805627953005193764246", 10); - mpz_set_str(table[12], "17324807295416975789879562398972586541363122087738814227711509325208663721738", 10); - mpz_set_str(table[13], "14426381127567588742051902302631726575844365575849847669913699864371310260722", 10); - mpz_set_str(table[14], "7847460266676931542476622121224084681018228345553823201331428517420386952394", 10); - mpz_set_str(table[15], "5818923946956804780352206579452314631743217554075593994088654568090420154901", 10); - mpz_set_str(table[16], "4248846726502195915173240346834948714999010286170778883112240286154201952104", 10); - mpz_set_str(table[17], "7632923667592291289557139255975057139747337016692743142228858776103199664278", 10); - mpz_set_str(table[18], "19024162230503116686255250476367589888459974926057445284461264086806538778867", 10); - mpz_set_str(table[19], "1202513615254711348911745822650872570789134083290576514775065814850788677359", 10); - mpz_set_str(table[20], "6224305771315374284734872626599693896570675031967690266987469786804372856578", 10); - mpz_set_str(table[21], "3530300870942886350704766815315787795571868570095125871349234225278352515548", 10); - mpz_set_str(table[22], "12390816528108879345589592952441588328101994806720591386452636692705717659236", 10); - mpz_set_str(table[23], "17218869607347433174736907703022554580657198141224427837254456611728755854040", 10); - mpz_set_str(table[24], "6618636545466035375932824422591883022916218856904792104037999057184464910127", 10); - mpz_set_str(table[25], "10198677541515604372458184317401496736720254142883990874208587798605183791315", 10); - mpz_set_str(table[26], "14413275103636465561016184267040054208360781504208805792927035947659891511197", 10); - mpz_set_str(table[27], "1348472316920548112882160252515348571001775397511284392517972772202557707501", 10); - mpz_set_str(table[28], "12600929613358523599405700037817948085436664561586929667937447861190247132445", 10); - mpz_set_str(table[29], "19369234812379679318064953129273060230610856817150760020483509620755516617954", 10); - mpz_set_str(table[30], "17758947516728063757985703522427945963218668227181991298748549353809987743225", 10); - mpz_set_str(table[31], "18070337596977817585149248772943298633173257200381629950059698812143441512345", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=14 -*/ -void EscalarMulWindow_e6955a0c27cae6b9(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "17779059894087356572227327102786279369030113869405414408135868357363844731965", 10); - mpz_set_str(table[3], "2328409910752853022546763316586250201350601552222316917735210220203738637156", 10); - mpz_set_str(table[4], "4249426964365172719920270929525397535868778967365753653579283745016664978011", 10); - mpz_set_str(table[5], "15020622618196256624082775358907317933079721990116496693064897198125913914308", 10); - mpz_set_str(table[6], "17244801856314402077335104689146525196060834720208615275177080437772071310141", 10); - mpz_set_str(table[7], "3388585943978364820288092081718529089585865922623586825418596639981421469449", 10); - mpz_set_str(table[8], "7859076674731565208968997439315163737987493769575570984237687199279755082574", 10); - mpz_set_str(table[9], "1357559521562969693511321565426644733540418620658500295933263453294924051330", 10); - mpz_set_str(table[10], "16161060698916004028333246304424642857206015654481621693382543447174966445278", 10); - mpz_set_str(table[11], "17823497092938548913896021782411753411337913475841619024848476797419756808886", 10); - mpz_set_str(table[12], "14175498322298878519036832519215284462004085466033760038320160582340861796702", 10); - mpz_set_str(table[13], "18957416875983044281235379823255058750116379101389129247035954106812825384038", 10); - mpz_set_str(table[14], "12474348198020880659670989520670491881100378257819705899243657076957126525434", 10); - mpz_set_str(table[15], "14868753699029029411994959760692956119744418579996458495253787307769615445331", 10); - mpz_set_str(table[16], "2072604572856849996118086748971994241569621842227724611314640483877164720890", 10); - mpz_set_str(table[17], "6177760074914096077332065839411798022497129487778918582154300659711495071167", 10); - mpz_set_str(table[18], "12703885648648298697057920089743647645116061208434544261384001242841993572016", 10); - mpz_set_str(table[19], "20205494493768526302905082944408326714300722062529947538173468971846075454170", 10); - mpz_set_str(table[20], "17479863575217104067907226202411754435124411447227168333277100081352589545061", 10); - mpz_set_str(table[21], "12293780854507134802651095011199348704332167417624836222990254172912911320079", 10); - mpz_set_str(table[22], "8558007797982939123754140378051766266754244359012612039895275544393797945369", 10); - mpz_set_str(table[23], "14925893803508054460499792517137824544350401886442688791315696630611319130879", 10); - mpz_set_str(table[24], "30783169846240288545096502405237995423748948038561734366526935932169059666", 10); - mpz_set_str(table[25], "14965887452636090372377108590180974781725357719383225713794164799471566792181", 10); - mpz_set_str(table[26], "300704248545831258587054612142812126546226502557278422354350618503240718575", 10); - mpz_set_str(table[27], "18508954300746009354471989540537599220684253049204198342398877648296684724908", 10); - mpz_set_str(table[28], "11950855798893731106082339624511307389765591106567591203096213607304046337854", 10); - mpz_set_str(table[29], "16712492673422169415412311716459251218615374349109271649234601343131043184571", 10); - mpz_set_str(table[30], "19603509089876781156532105957376291076165355281826172007213555416636455928408", 10); - mpz_set_str(table[31], "21070404643442440238002764266236284070715796944413636848692970257727353770553", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=15 -*/ -void EscalarMulWindow_e695590c27cae506(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "423262405806741856453467552437191110943449074516076654517690366110662887142", 10); - mpz_set_str(table[3], "5821598692871327127790265153450790237441118952595259277838443277944753918858", 10); - mpz_set_str(table[4], "19084171342624229095574789283636708256479388400563532006203339823528805279739", 10); - mpz_set_str(table[5], "7876256815944134472589007163636851702847231634040527792189163010928562071586", 10); - mpz_set_str(table[6], "20015992494605509459918247649355165975143760660682132993050570364486308299664", 10); - mpz_set_str(table[7], "5020896878938623851536712703737884113946536293720348955754765178962577770203", 10); - mpz_set_str(table[8], "3527451134099029201046780563600675019708670110572416347683813902306473212920", 10); - mpz_set_str(table[9], "152077109331720324836754822966517188311278098441312028621008510069260382192", 10); - mpz_set_str(table[10], "16390670180070236116015764572577584813119708452219458629684557968685238399571", 10); - mpz_set_str(table[11], "1606961266972646000906512364532658965396200302916648542982621156853114712945", 10); - mpz_set_str(table[12], "3516159058656497722036861333831290228548887091683711536469842055497058000435", 10); - mpz_set_str(table[13], "7794024361678874424894512187791487732218419722927940126607220943986556977764", 10); - mpz_set_str(table[14], "13587159961357308304449437527458632267817908953102264623588753230664467550572", 10); - mpz_set_str(table[15], "13025515381118553214534871233703966582949056430011605081972534899681059843072", 10); - mpz_set_str(table[16], "3379500887852182176198435393440886544701373997861912596324907826584799597781", 10); - mpz_set_str(table[17], "21325352476176470557263509850164969716951279702106311082939505954894610104808", 10); - mpz_set_str(table[18], "15862993518009461331529344023740928273190119759942075926693529957985784396064", 10); - mpz_set_str(table[19], "5704397868224605965441723755110116902270812496571121115153436935891514472446", 10); - mpz_set_str(table[20], "11237721199213012134172757784497616723953217832076135628348477412391661505698", 10); - mpz_set_str(table[21], "15172658004049539646757237014588943751494352570679239369087218661914350981054", 10); - mpz_set_str(table[22], "9220526738427911320952231865655681379690667959730262712160712063588372497502", 10); - mpz_set_str(table[23], "21685179430160098648244308814438386707560408104194799861850477231642799900382", 10); - mpz_set_str(table[24], "6625576931122133302463563334617882057903243032081248639331250555608604850938", 10); - mpz_set_str(table[25], "2061452977735715482856930888437796178444867837900651237034207457133067834207", 10); - mpz_set_str(table[26], "593094746615633977769310038643117733320498696970488234483744033706915835478", 10); - mpz_set_str(table[27], "10635470850898962244064401750419878765514394447457872569398074817467300542063", 10); - mpz_set_str(table[28], "16462922282420858160324657155640719344929066745413973267682588241346193994431", 10); - mpz_set_str(table[29], "21103611084476225987205556872841552833963417786929607438225110976093765620882", 10); - mpz_set_str(table[30], "5295156621155114539472539804011402261531162865079512645408935293189970824781", 10); - mpz_set_str(table[31], "1745666707826988476708736645981628943792814888220610243504699383565568902007", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=16 -*/ -void EscalarMulWindow_e695580c27cae353(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "13673742648586412167973390593398110038460134366916722178249500508067777214401", 10); - mpz_set_str(table[3], "15153854928186390613089538110391429883429324114698359329893828068591912384924", 10); - mpz_set_str(table[4], "14086366920345489600294299402406463424534933247544640736526073747648683530543", 10); - mpz_set_str(table[5], "17953005418808413954218877176527531523109883488457469119995129848659058111732", 10); - mpz_set_str(table[6], "7188067729446111956185059007412149525812314846009684638157692459778095090561", 10); - mpz_set_str(table[7], "250533206918719832354080542968881818562813203850084947078357483696534154226", 10); - mpz_set_str(table[8], "11141010770936235778267696314074560879820287224539894280527409654579468401355", 10); - mpz_set_str(table[9], "12541596359563940232820840149414845048948332822490564006200384437768366047625", 10); - mpz_set_str(table[10], "9420274270603019033608124025135061690642264375167389719883841080689952432565", 10); - mpz_set_str(table[11], "3950897603186404710014778954124240548138424459091498250365433022567245775188", 10); - mpz_set_str(table[12], "8380793094791398545005772410981404244043084629739302591073362302431561529847", 10); - mpz_set_str(table[13], "1710354099589138508952439251039738395982680457280308210969074628864066408532", 10); - mpz_set_str(table[14], "19666430225967680828553398542227135818809470198121780169520949516269528303155", 10); - mpz_set_str(table[15], "21308969666085519878937772163236795038117616515466974334611923989290881101920", 10); - mpz_set_str(table[16], "1864688919425172582901176226686519981673837470649313877770968918640342831622", 10); - mpz_set_str(table[17], "21541515704901196796528447446114142415692035400266185591088487293537642122535", 10); - mpz_set_str(table[18], "21711317258635983012742628538368142078544492503535857358103428156920898392923", 10); - mpz_set_str(table[19], "3147148199278303661020530236335764597055926445880998300559261919787462107204", 10); - mpz_set_str(table[20], "14649344050441883707513106132599985820354259133208401765169478669411385873210", 10); - mpz_set_str(table[21], "11330655277064737956701043407974887580653645181285246026977434064183062608591", 10); - mpz_set_str(table[22], "2731878170105948130666723179176869428833202729535598821213953046536610235137", 10); - mpz_set_str(table[23], "21681581585186625779352495977987369647182072747060769489020375085501671988208", 10); - mpz_set_str(table[24], "19108227063794066786285438106669139907252201688445841688637054359944873786303", 10); - mpz_set_str(table[25], "3791567753430001147104120981816124554557464174760301146314040411733099763153", 10); - mpz_set_str(table[26], "17421192848581767531262021609281960868684458668010608747438233190304005895632", 10); - mpz_set_str(table[27], "1387758121382894023538119922883613164816025901331058952477955849082540033969", 10); - mpz_set_str(table[28], "20733966020068005859445093350305664601623171392000968480892183702282777318412", 10); - mpz_set_str(table[29], "18583770857949903712514354200683653597557898839561369836551952242513017409859", 10); - mpz_set_str(table[30], "4326826542511768684940275292218624545040747486405704341406195469440356115011", 10); - mpz_set_str(table[31], "21714779059321849837236921059022211106966726817757022040500807366635187465810", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=17 -*/ -void EscalarMulWindow_e695570c27cae1a0(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18697830820747369862818107604423804812602341785181434790209421536046851564778", 10); - mpz_set_str(table[3], "11539488201447339629953416808120094534361385427330186126655240041232739801455", 10); - mpz_set_str(table[4], "5207064971754711715584022540143552143994385843040148457364832940872161067274", 10); - mpz_set_str(table[5], "18858648787888455728559470941883346609945171301867546198786117369203554407325", 10); - mpz_set_str(table[6], "14881415147963441466719591747385961746042162836505585349051285204846778454242", 10); - mpz_set_str(table[7], "21520354740499411303496037816382454442091701826916392899394997083789811518044", 10); - mpz_set_str(table[8], "390098382447767190982601356754144582047756793010573561674530468565130005298", 10); - mpz_set_str(table[9], "5611458464882321581874244734012086917894599810551663437993947968904892579952", 10); - mpz_set_str(table[10], "17296929351693435105217701594275476254423148100622890751783867985800290971581", 10); - mpz_set_str(table[11], "654665264453508269374430455158162365524512478454248573088692011960483721526", 10); - mpz_set_str(table[12], "10185241660253897094431825256756938641250445976574939921126671915394640364158", 10); - mpz_set_str(table[13], "12267093644468108766834368003036679992781112009019839956293681664142766596792", 10); - mpz_set_str(table[14], "3757291619675613323086416221359657888317617290639704141780963808253967321799", 10); - mpz_set_str(table[15], "18789844804651422155922217369669256490380864683801279421538978664075834206803", 10); - mpz_set_str(table[16], "15038013445974030210226312173302604299782417377463336629646867686239759540160", 10); - mpz_set_str(table[17], "8766393721130999332560660228490707042688972062902432684608359836188319391021", 10); - mpz_set_str(table[18], "2859848204130892831504747832165793298470965479110097700796011997502483355139", 10); - mpz_set_str(table[19], "5745650640780073915096459013280252744216760267659730264259106058547270430146", 10); - mpz_set_str(table[20], "8118361704753430650102336829679477113449716483239345834060058005733238848602", 10); - mpz_set_str(table[21], "8303921291423077955057063829308214078039980895060694751597677127009797093954", 10); - mpz_set_str(table[22], "17475765136846321057386870807802759443162287492338094750152139224989348692222", 10); - mpz_set_str(table[23], "10232111231604638574549990969871435952172655729432029678526665492565707527923", 10); - mpz_set_str(table[24], "3105936608424393704733128510781825709845341515380419966220226599811368250369", 10); - mpz_set_str(table[25], "10889413405732414258721097394812067810935850529655097676996803038772702348400", 10); - mpz_set_str(table[26], "14793717548628830425036623072175273325474708379407922825900640764910903474843", 10); - mpz_set_str(table[27], "2801190169295877274789958017512670277700721482168044384184698741437044268810", 10); - mpz_set_str(table[28], "13498571610580730994466628231215171603843682927224882391896974684628609048434", 10); - mpz_set_str(table[29], "523251342147181654372725839079151558931332486013985622615293078279863278860", 10); - mpz_set_str(table[30], "12083598852191563441940388724287463910411975370779524202844187656946257599152", 10); - mpz_set_str(table[31], "12049527931656405181261031923035041309077868546808493626072700786196661899439", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=18 -*/ -void EscalarMulWindow_e695660c27cafb1d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3379399181699432623217731510552154316202713990781648613218490208311270562931", 10); - mpz_set_str(table[3], "10843172049773670618847385298229699253090504724495681049657926722247413594206", 10); - mpz_set_str(table[4], "14450248596460811383463621049248166504478681759608610076046949290640449826731", 10); - mpz_set_str(table[5], "3267178159467603284343355542430787551407027131759407913239021434671761847922", 10); - mpz_set_str(table[6], "12276701952657897291522073256988116333714581502742580546355221628133509526283", 10); - mpz_set_str(table[7], "19628076275083041844585341704276483246810841615692306681621002929075216962132", 10); - mpz_set_str(table[8], "7836859926450919877392120543511887050200836970258849183524929885412009975572", 10); - mpz_set_str(table[9], "5290105560450361023117254506795255266192778633174124871604526803022892152977", 10); - mpz_set_str(table[10], "12775319610399810211576125106746148104640396577705143761824887075312989156479", 10); - mpz_set_str(table[11], "4844450962757146340769785944220536747207173906342842768226923464392598683670", 10); - mpz_set_str(table[12], "2199989780260332865856459579875939893218366948316638554485144631557561507080", 10); - mpz_set_str(table[13], "1664500376583587314841324394496401407727486534559623483032338283391356988842", 10); - mpz_set_str(table[14], "14237539326374514604959623487456571185100490104875487400668998754288228106703", 10); - mpz_set_str(table[15], "11371911393534201524121140820879016362055034651119156810853760003987338884417", 10); - mpz_set_str(table[16], "13574292992612715305482056774524172214479202315848802894891300107368000824755", 10); - mpz_set_str(table[17], "20217291280820077572468081599924902384629354106755300130023851694437616357241", 10); - mpz_set_str(table[18], "17332729190444715821932502887166457272095696917189529950018485836811171781074", 10); - mpz_set_str(table[19], "8928571711955816190541028868163833311345675545855227592104872357692329080326", 10); - mpz_set_str(table[20], "7799640264959817050048971275919550445796424852011403014499619703139339854165", 10); - mpz_set_str(table[21], "18615349518994979191330979165097072614971723389820866626957446795183019690572", 10); - mpz_set_str(table[22], "6581651959083860015823010745090266616505792466124212892337109699895687892764", 10); - mpz_set_str(table[23], "10402246954385227223038639511584415609404705100489141992307792115166168769186", 10); - mpz_set_str(table[24], "20845574286178959300819553568420309876368540864175100473707273778102241618163", 10); - mpz_set_str(table[25], "19795923763417135016749435917436011703813878339667538123976670743547933350885", 10); - mpz_set_str(table[26], "13587054233876770749105277042314317974732014628844426366463387352962746283261", 10); - mpz_set_str(table[27], "10389213639519702947776149799131365059577130058525957370304352638201792337016", 10); - mpz_set_str(table[28], "6024293295226361852520916496651927092000048941454794442038155618681187309775", 10); - mpz_set_str(table[29], "21691561303962662299824255087006740041372142465133418306100633464529832321914", 10); - mpz_set_str(table[30], "14791532627712874458023155956255404764020250490858735045063876208720881888981", 10); - mpz_set_str(table[31], "20027425569693737017249784632939478816350967266450234041828730341740353118482", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=19 -*/ -void EscalarMulWindow_e695650c27caf96a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "379349425903821713550630532223576441440513381186397819079208216532411422952", 10); - mpz_set_str(table[3], "19107892239350785984077211943912850532760596891759051444710776654351045614222", 10); - mpz_set_str(table[4], "11280353594541512257574919685002060568207172068669532689768981258321449648547", 10); - mpz_set_str(table[5], "2137545202489257402266811734996928871794892737105559738080320028884283943764", 10); - mpz_set_str(table[6], "19983691625229909059805340205014294793098548369714579680834342307520147481639", 10); - mpz_set_str(table[7], "13830778936281094104099977298590683701505929576344779379566337187189320425932", 10); - mpz_set_str(table[8], "11086690746568527490600096068541542994486918982463335794795545473443368478131", 10); - mpz_set_str(table[9], "11580662810343539560080461955379908514477007894619637726623583621727337423837", 10); - mpz_set_str(table[10], "18955642799938985797972948003387147464454494551005077761001815253098042290904", 10); - mpz_set_str(table[11], "18597029718187982506882415805891494366787558404517871246454909924289796333513", 10); - mpz_set_str(table[12], "14305074609156097955952312588218951195345339166404421339047415565869596559012", 10); - mpz_set_str(table[13], "690623514523908708493027960805697385269507890581332882596566116480176034659", 10); - mpz_set_str(table[14], "20611706075838341423633915098290191545949708122744561495239121618765313930802", 10); - mpz_set_str(table[15], "3845575718579933343278139898013486390823378547870337023307353525027835942660", 10); - mpz_set_str(table[16], "2478043406005879623483017719950300866241503815933009862378703830485598229119", 10); - mpz_set_str(table[17], "1383631236499289476784713841116640798000700551077308900873060639255959590025", 10); - mpz_set_str(table[18], "12349784917285116305247291251371396729363143696525117666455067432646235314146", 10); - mpz_set_str(table[19], "16334223641716971764757547192903169353455781326280623687815241771687572129865", 10); - mpz_set_str(table[20], "15882892205970355631107815584572321201763891439907568323360981499144978834621", 10); - mpz_set_str(table[21], "18783023729403057852350213269844944783961625452585774749570435945310202678554", 10); - mpz_set_str(table[22], "9596730397664164141672412456152963833582528965966793039880273162632961791662", 10); - mpz_set_str(table[23], "15409274789759147195506796454688186976288543457706237430805957138587635100441", 10); - mpz_set_str(table[24], "4813269313006480048070988100749027302180611382429427271089699256053609550378", 10); - mpz_set_str(table[25], "4428333261400869870098137668784767735793049338845931567987062597321127081604", 10); - mpz_set_str(table[26], "15833799957140371690428662200025618893900834090445452632012559616472171663251", 10); - mpz_set_str(table[27], "12623216000145546996949783338552280132976394381301068136242560086691735805150", 10); - mpz_set_str(table[28], "3359488754919514056157827364813642645567362222485560814947284570012139282296", 10); - mpz_set_str(table[29], "13182633811136778326412290071915964950552694407726567248121591272059828493900", 10); - mpz_set_str(table[30], "18344403849859881128576637682617943766394705082113421550049141843443730503163", 10); - mpz_set_str(table[31], "4359734782083362965519911663713090977500958121224832706764918936303087023658", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=20 -*/ -void EscalarMulWindow_e698e40c27ce070e(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16777655066149369327124291278088574671112030619368469048779993756310513268616", 10); - mpz_set_str(table[3], "4634019888105622973807563829540165825498623150484770039567692393175833637671", 10); - mpz_set_str(table[4], "53372432075113461294212927623034318312986384016964247987299954466217724572", 10); - mpz_set_str(table[5], "21222280082852734327876908204262711706179553933131055021830879442555702909056", 10); - mpz_set_str(table[6], "10446611131569744194879930309070342482915314388262602168777260257945844413581", 10); - mpz_set_str(table[7], "17932039171865762615513115651971768508779260034202570792438758021028159091683", 10); - mpz_set_str(table[8], "4667012780388820804018655167035141203405144059674350075656822472462063278033", 10); - mpz_set_str(table[9], "2921856238642177739916590840023080274550242539569173642325118194745464517315", 10); - mpz_set_str(table[10], "1489960209940786061583080321981151805314315232360824425984553880933186990694", 10); - mpz_set_str(table[11], "21120780874579052859918422123517089781900831596441921602412235108476581780668", 10); - mpz_set_str(table[12], "8718474883888947110768435025682732572992203457115241377990223014391596665523", 10); - mpz_set_str(table[13], "19032472091844184846046885535846801715513552788617620197536449678878065381489", 10); - mpz_set_str(table[14], "16996157389333632677607961816610117660887306489831803292557097776507757525888", 10); - mpz_set_str(table[15], "11493940525966459763233057014223427028694376288802979773223809318032814817300", 10); - mpz_set_str(table[16], "9261677088939894748499361830764337859405453699942819789001890423637089102586", 10); - mpz_set_str(table[17], "11388921744174066538406314201891921507634460789084367604976972575203373469874", 10); - mpz_set_str(table[18], "7442141633407347441990485354276773483423576236543645618533984231826068244096", 10); - mpz_set_str(table[19], "16688217174667942192597745826670674120092209845993400563091585503457408326438", 10); - mpz_set_str(table[20], "20844308047584040195262432415475351812716112266301592095205905452208541213584", 10); - mpz_set_str(table[21], "21306710929855482749401890110600956011811406776992362749776938848913343866004", 10); - mpz_set_str(table[22], "14649534122562536167873619926958729444834379257504527673023839845348170644831", 10); - mpz_set_str(table[23], "20377195103787159261672413214784820833464632336785446645173093182127746835635", 10); - mpz_set_str(table[24], "8895577731263932062426513852464333814611638514946485929000615303545101303911", 10); - mpz_set_str(table[25], "16690272539101338741331854476710213982646608128095492874978686907076211193441", 10); - mpz_set_str(table[26], "14637801588902173078883728435205979605383582994403761904993772951178658661612", 10); - mpz_set_str(table[27], "15556352645043640590481313403684214937884749350715627679499043108304560580032", 10); - mpz_set_str(table[28], "16491440686422045546754825555510545537573484719469285180489726866779631365499", 10); - mpz_set_str(table[29], "13780819536949712747062711170626282770117877673882735852691539576219013514205", 10); - mpz_set_str(table[30], "18671122420482751944784190861631715819837944784726989949485471870702575441012", 10); - mpz_set_str(table[31], "12124425748835041858630547955816658525946943092845541228047681400237566091687", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=21 -*/ -void EscalarMulWindow_e698e50c27ce08c1(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "14039197829042233210185992800840342338003761045566389158900335456277860044633", 10); - mpz_set_str(table[3], "8825106331433947656958915899633977149289341414166936703486542876338734902214", 10); - mpz_set_str(table[4], "15095982714695416100950522019908470501539408862098883269490380922208216675423", 10); - mpz_set_str(table[5], "11134287379122613107431340219535935486629784643918964780778070509925919379798", 10); - mpz_set_str(table[6], "5806201066651812452198307007415788883737166770230134675945470912181901667971", 10); - mpz_set_str(table[7], "12452641974926388987777634332185366482718581358103397919534820807764346134679", 10); - mpz_set_str(table[8], "8496487741736967816307239370860081844148540610563304614572223166141136450664", 10); - mpz_set_str(table[9], "6515186124495517742442831064908301488276696577969746807825777021832272589753", 10); - mpz_set_str(table[10], "8871163556873554542872859188884917500024534701895773736991779860033475779351", 10); - mpz_set_str(table[11], "5872890099072019124719769182033635424291362213376682736999065144487817779759", 10); - mpz_set_str(table[12], "17363735306352581795343563046819247342835214329878310600616704142028848838008", 10); - mpz_set_str(table[13], "18218880869117473387164603473407741784276076176538509089634130399730952915316", 10); - mpz_set_str(table[14], "8386027477772807656627708391171963446157480648802305735918259265732668808083", 10); - mpz_set_str(table[15], "19687762281102340388295514091188028726571729879857295884771308963589952102337", 10); - mpz_set_str(table[16], "8806763414527422646706033124211503226600069612325976159796810560741498397039", 10); - mpz_set_str(table[17], "10424251286473947322555629541873479079353717031160753124405152609735324493117", 10); - mpz_set_str(table[18], "8987709772963618298966745145118843765322233650190155659262677249069516573186", 10); - mpz_set_str(table[19], "5578835771954576245231452735207876212611195360812441579084934075056958891196", 10); - mpz_set_str(table[20], "4869328133149460425264838007327139122108036937512762624940110432985398319451", 10); - mpz_set_str(table[21], "12344885618218737754001075231836794789316562440817685636965946874834953534874", 10); - mpz_set_str(table[22], "20148954836171788174151641924728853539276128095104101269607371794973427007889", 10); - mpz_set_str(table[23], "108627741403201139219994129516748292558174334922005804559682235652656708457", 10); - mpz_set_str(table[24], "16746877888501324922778335102840498994406347621229831804541408927766874982532", 10); - mpz_set_str(table[25], "12434588185890169427234865922008840089282230238237531488960588024283025549395", 10); - mpz_set_str(table[26], "7575769996674802953350195897976424883998358416953812121252598358433246209742", 10); - mpz_set_str(table[27], "12388142876628989256808051406377609190565003868936540259767536756674086073749", 10); - mpz_set_str(table[28], "12843407186058112922591119347576760766573049789955675584163470702929813803767", 10); - mpz_set_str(table[29], "2343208966296086685915997004650955416323127803733138229449364650755663867389", 10); - mpz_set_str(table[30], "6840986370106186924969966814197656097828314884143462176667073174093378152881", 10); - mpz_set_str(table[31], "18209760968771446985408737819211774799307141621073325377962355588454216355527", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=22 -*/ -void EscalarMulWindow_e698e20c27ce03a8(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15631711555578033258523500940835561294499401563342292872379915306758380894815", 10); - mpz_set_str(table[3], "18834791205884987258643654447945418758890737034482227278884571064075678439760", 10); - mpz_set_str(table[4], "1232924394558455398273647587599522706537624058132586202779115272248911202682", 10); - mpz_set_str(table[5], "17833303230895080889959216902701836679189654685265718226911692537025674353649", 10); - mpz_set_str(table[6], "2985363010675498776710035823973308534779126283248947419911729203894216782228", 10); - mpz_set_str(table[7], "995303174859503655015441933597716185437178818415965659684359338901424452267", 10); - mpz_set_str(table[8], "437566714976308452367214633122809687986656634437990370753266749790119013519", 10); - mpz_set_str(table[9], "19529206272648706004490579965157400080492296701179993666393115871715434934725", 10); - mpz_set_str(table[10], "21053932545637636866460507256262585574248024459625275400196428552255217832688", 10); - mpz_set_str(table[11], "13238505236844161302108237022958600105239284560425932588497153806620891820284", 10); - mpz_set_str(table[12], "14738221885741907026496168859762855130638313123865194793394713686883659078666", 10); - mpz_set_str(table[13], "10130473349809524005586022957872835334035485889815302054938803046567229332021", 10); - mpz_set_str(table[14], "19082597823767183986973149369595319402986068587362854892674691192121539866770", 10); - mpz_set_str(table[15], "2974712380689759096651038103638866419244930106689442976125603176942104057564", 10); - mpz_set_str(table[16], "4968377445231331394612662291766375940519266178117277611205543326105819696507", 10); - mpz_set_str(table[17], "308051870163380961668450783238640324240158897655551649879309242257625464516", 10); - mpz_set_str(table[18], "143145578578409144355991313510326323032732394846904084168106976181727124291", 10); - mpz_set_str(table[19], "4534228930726044913960469025859070803171449727902123790808775304997038006854", 10); - mpz_set_str(table[20], "7549398425930664276585051299523370291040048032792053800127951108759026819473", 10); - mpz_set_str(table[21], "8381514489184948217242976309236859270111448224406737907949391219157807502391", 10); - mpz_set_str(table[22], "7081728363625164803461197468983646976360826316144988521407728588347844357868", 10); - mpz_set_str(table[23], "2220441304837452587602205209854024148821448161516925267269425769789244849682", 10); - mpz_set_str(table[24], "7600566888315861787276475227149240118535535675131854594794725935293156156345", 10); - mpz_set_str(table[25], "2518543267736502482525749979499206659205623975068592128089538541609356397646", 10); - mpz_set_str(table[26], "15964546934255736197215107778492678732154813344410741849144170794983572901045", 10); - mpz_set_str(table[27], "11108260911019516113738169910743348501977642236570099384754413111216036967235", 10); - mpz_set_str(table[28], "1268409639470179650151777579305834369087781077158435876229349716093818630860", 10); - mpz_set_str(table[29], "12116692109562525117748684272446381207063947914491907158883458255351001755339", 10); - mpz_set_str(table[30], "21880068498434663893026435732702345344466753678404381230836174069069830790061", 10); - mpz_set_str(table[31], "16324265685603273807052115540100128665715365875271278209751006495035490162717", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=23 -*/ -void EscalarMulWindow_e698e30c27ce055b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11798301185410583790831982960921750325182175352689111003919084769704803694695", 10); - mpz_set_str(table[3], "10320507559881538305442440388599880600101961708359800619588812325976600071175", 10); - mpz_set_str(table[4], "10992380046202553728861226116804750801860495309222180455192050912656571103720", 10); - mpz_set_str(table[5], "20746504294608920109139695193353753766924548979974787683175107063649821757148", 10); - mpz_set_str(table[6], "12803271769506889229569359866195264181650659426122199129217985985677245964497", 10); - mpz_set_str(table[7], "12777208000963804772914758731979577679411982369114737894261616814245396577238", 10); - mpz_set_str(table[8], "5056256971231365636008952459055560403127127971967423375879203995246080587426", 10); - mpz_set_str(table[9], "14679552420354879541770922331850106484158970802232913124170883214669637080939", 10); - mpz_set_str(table[10], "10919301278344548707513020306219902524837796055556405511996756103297555727874", 10); - mpz_set_str(table[11], "21859364279343042815097100425563438652377978005395579703935946388999354651538", 10); - mpz_set_str(table[12], "1484608924137526623693394879926039469672374869781472619727808552028062310694", 10); - mpz_set_str(table[13], "2464071424631007604234496176677676463718240755275391610330172152263542025526", 10); - mpz_set_str(table[14], "12080718782101260122650814197245474681608191865292176042822521203797695910346", 10); - mpz_set_str(table[15], "20650658053855156593275428272170432524538387387078934253383897576552964739457", 10); - mpz_set_str(table[16], "18960132970055859574487738159906249609630408737632122614927969256399073906464", 10); - mpz_set_str(table[17], "830663679062394654079072360240041554084938025612663365619389564309524341706", 10); - mpz_set_str(table[18], "12516550835764888840186918457921749644134691645556312835447177614210820171445", 10); - mpz_set_str(table[19], "6911599512264570767810838558833828125239613928732247342257488973404472882679", 10); - mpz_set_str(table[20], "3063684577483271534878882054606130869308747135806272583291883524655496335146", 10); - mpz_set_str(table[21], "2464467942685338240514728971637190802634050463763588371327509072888928899673", 10); - mpz_set_str(table[22], "7366277537661412068861569927151816204215121201677392619777906606437971565388", 10); - mpz_set_str(table[23], "8315416474862471676494982738677636031784175446210295818644731945649792214419", 10); - mpz_set_str(table[24], "13930433247833341929562607678253063529932503298466873358130636444227790229005", 10); - mpz_set_str(table[25], "13657364666783669374405500135099069628416465670878715674244742119551618915641", 10); - mpz_set_str(table[26], "1117973501212793165418659143600582146453616982398874520894316241927249104029", 10); - mpz_set_str(table[27], "20484777878246356526658870888718785100679283234214202485954611267340543194576", 10); - mpz_set_str(table[28], "319520992354708541373755758310984768204770492971774523929151706353780111164", 10); - mpz_set_str(table[29], "6574194972508636233014241106289769969597988543755001082232573920749262646233", 10); - mpz_set_str(table[30], "2656051586347266298016418493880420612948988466424561544900583311287142485018", 10); - mpz_set_str(table[31], "2761572019450156499564749645009342056734978070352838294058294953587033665276", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=24 -*/ -void EscalarMulWindow_e698e80c27ce0dda(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "17351845850750176330302386143271454019986956878302371623825420752743851593735", 10); - mpz_set_str(table[3], "12075532622678853701341956212463986752947878251561614929554858573655664204828", 10); - mpz_set_str(table[4], "5268310846833705826772381806671280491475489620656583480880246943710981141691", 10); - mpz_set_str(table[5], "9385490350823108296999850757050916322228290280677181904320714202439717767422", 10); - mpz_set_str(table[6], "11865950769220096390634285805117550010278460558176997058880860355046049428568", 10); - mpz_set_str(table[7], "459442895305814190695826238160158989509240406275369337352052544557769056319", 10); - mpz_set_str(table[8], "11000060784145321905235302876930287466345760160566048613958488699577356496533", 10); - mpz_set_str(table[9], "609499755531011926711350038473050375887336787225016040024184562095663706097", 10); - mpz_set_str(table[10], "21047770345286746752322681107649806746441393632604503304194248718852944411487", 10); - mpz_set_str(table[11], "13516973722741553768025367021591301011638417327217220496926066123804629317971", 10); - mpz_set_str(table[12], "6905161585723141809795614685402288575865116931801978697601302106968481529140", 10); - mpz_set_str(table[13], "3076769530411085661908443419093838945279270383088064927883723494868312673502", 10); - mpz_set_str(table[14], "9261886629687258503004959961033285420916245813210880613548148699873216759374", 10); - mpz_set_str(table[15], "19071566171207295778784283346809732267737033620433376836792563962313994578625", 10); - mpz_set_str(table[16], "3469109305797854135905737624675722807114122156120072619139732155200769710979", 10); - mpz_set_str(table[17], "5202070023884855698159514560052546547100308770238216654942333256709433129892", 10); - mpz_set_str(table[18], "4992965992430408256947356700901520022475757622279126070463091524658354958973", 10); - mpz_set_str(table[19], "2023062360307938396554186189143829458322972472122709188385752138612458811877", 10); - mpz_set_str(table[20], "8731784736964002767378468136309109957646284246937833729933610769447991753480", 10); - mpz_set_str(table[21], "21538327300874802284756748222604848360706643956609924106140479577847893198530", 10); - mpz_set_str(table[22], "15139692648767211280809789134986093832610632490099251208879432098934898968358", 10); - mpz_set_str(table[23], "6985531268899350934330829853646066145744407151797019745970665801002511588287", 10); - mpz_set_str(table[24], "21765270233564657427425235463772724927598377592934022924205782566750681233935", 10); - mpz_set_str(table[25], "18508890223188965053204091822551140811335348826333579433323525784334430383927", 10); - mpz_set_str(table[26], "10461271546216443746217170370116972218127141442243227395112643512011677972023", 10); - mpz_set_str(table[27], "17467239786415991962502641293398074788116214050307575611282756538107265894383", 10); - mpz_set_str(table[28], "20482469263305679290004142039681971451024512516948743030512746362959388606066", 10); - mpz_set_str(table[29], "7843334092669307652128131850517982100364152376975332666229835309829819065753", 10); - mpz_set_str(table[30], "12590285961903499113253265859992170165545260023329770070095707580664645730275", 10); - mpz_set_str(table[31], "7194233330489109228257570457060236313303750551497443588936654850618121652054", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=25 -*/ -void EscalarMulWindow_e698e90c27ce0f8d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18679633421357654521429185503276703378250966807467092342363108178634864479079", 10); - mpz_set_str(table[3], "21322315859973860093357705236759883291428485443465435890046826520653536618283", 10); - mpz_set_str(table[4], "16642285143607761383883324682448523114695799787227861058116862475673283006949", 10); - mpz_set_str(table[5], "233581951758829149128702218334194499409350081300098466120720723649572707213", 10); - mpz_set_str(table[6], "20974658634486132093705671932681722132897896514661015785562171583158773737580", 10); - mpz_set_str(table[7], "8791264643433259523666474626308297984570323489497414318772346289739068232836", 10); - mpz_set_str(table[8], "11176221570195373612721281952327875203495526127141048535478678557221449823853", 10); - mpz_set_str(table[9], "7462162874881624749823731845900700394235375213388839519316359385077363220280", 10); - mpz_set_str(table[10], "5730468668692984643292903661060232785422008088596341963377282156198188262958", 10); - mpz_set_str(table[11], "13880692275923108251424145304764532477324187976384582509950817933695417187332", 10); - mpz_set_str(table[12], "10262998670148401490193774870662111933850697960129404081368385914799358805628", 10); - mpz_set_str(table[13], "12742482583977661789154654347088028749540785078974457382985405288984678035164", 10); - mpz_set_str(table[14], "14111560712981869778122242802015376496460779107025771699026299115246670934437", 10); - mpz_set_str(table[15], "15928417708975887467177234569851001993585687826100243460026847781812459726208", 10); - mpz_set_str(table[16], "3898915993666074238116912364165206661219183814743442999904170575467252889957", 10); - mpz_set_str(table[17], "4616095144417919052091654987916140814851717669962214065129348701941975173376", 10); - mpz_set_str(table[18], "870009940025555473305507854684809281347899361202817384983799877982065196106", 10); - mpz_set_str(table[19], "18199770521874754046070636155276052104443705262572115667514250178291336769446", 10); - mpz_set_str(table[20], "5251452573312677858772700111593560102764530626161156239221062730062471072200", 10); - mpz_set_str(table[21], "4060189221230632720236127908229618353861583103088859388581197386021336748799", 10); - mpz_set_str(table[22], "500553746406741276509290104078504756910494237842934089170143016496262397600", 10); - mpz_set_str(table[23], "16342504650027689201120271210626364278078361371933992329345633699279035849372", 10); - mpz_set_str(table[24], "3057974382061198115697574311500592432050261591627854043988857243519190484788", 10); - mpz_set_str(table[25], "7249454878981887710537707113195771725592827230097529557963231200376729030686", 10); - mpz_set_str(table[26], "1899688882688929949967362568662327212286796491797008294852911776840902024498", 10); - mpz_set_str(table[27], "17472782395001309162859323574187283949441334006250084213168260969193966757100", 10); - mpz_set_str(table[28], "378299894228858407457921286909295340958233177787553440136437193154547375645", 10); - mpz_set_str(table[29], "9967905892241280854723126176088418640170565284173233172864591940781488067362", 10); - mpz_set_str(table[30], "16935061331481138061051393509541369107079939306980690938637605416392462815374", 10); - mpz_set_str(table[31], "13639971176145374610214912111253055280702049309421061897395334403386234245691", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=26 -*/ -void EscalarMulWindow_e698e60c27ce0a74(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18149639217555882877415078714125918722233175652167252147515809362370647289497", 10); - mpz_set_str(table[3], "16128676484931873977405252903059378046701253412534303083732069827214517104783", 10); - mpz_set_str(table[4], "21741062837605799338950050028689809033616873164346586869014921358902994674254", 10); - mpz_set_str(table[5], "7796406175627857618905064986966731948348273442392637473687724192421057957219", 10); - mpz_set_str(table[6], "7534601249392079530124354518063963801086048546794269780112021066678388981410", 10); - mpz_set_str(table[7], "6677588957553654931783406597190407679134037329597451248476267121733886730791", 10); - mpz_set_str(table[8], "13115340974748485205002137809244391754597074876194778118669788315774020494136", 10); - mpz_set_str(table[9], "13802687287376990740555296070886027524867599566216721044853226069655875214431", 10); - mpz_set_str(table[10], "2999073202325105769717112095763592563858464380343177250544812825539071688027", 10); - mpz_set_str(table[11], "10064086351590110255577947800085273710339883743811947148186517159294056376677", 10); - mpz_set_str(table[12], "6852897146568312467692829313474435837990386224049340482823215485917508827876", 10); - mpz_set_str(table[13], "1210401895753268854214897638425674885738268429911727465370896469648125714193", 10); - mpz_set_str(table[14], "2576582090501413037812575145260792860793836296589021856439629924170761073413", 10); - mpz_set_str(table[15], "20727417578871676794417712575420264288632929992165664741952551486518603808280", 10); - mpz_set_str(table[16], "13230367140527495135201406179219097468955118203095633648770852711515921471138", 10); - mpz_set_str(table[17], "2940475370559210314943904699892612174743036200726254902311869106763910922960", 10); - mpz_set_str(table[18], "4375673118740629477057287977271234385371086429826301848882292947782430241436", 10); - mpz_set_str(table[19], "19214483773944962915121480650397137996182578224815495099888995681365662248643", 10); - mpz_set_str(table[20], "19221602970431180863398127125693575735223010517157104577954453152509466503491", 10); - mpz_set_str(table[21], "2812067302822347878200352298687086974654660652866649971988072238017953747521", 10); - mpz_set_str(table[22], "5008886347059271337779850699333927536827007984024878438848354317160095383734", 10); - mpz_set_str(table[23], "15497994055658328443367445917737913747258359388862053147533085127115066729126", 10); - mpz_set_str(table[24], "3042905534015373077782584239723106622236565352224986873088578482289642706325", 10); - mpz_set_str(table[25], "1731988411085023288614536237087215168558933538164107600051818802279377810575", 10); - mpz_set_str(table[26], "15244994035690954925459854555924816526957680464700034071754296697534232205597", 10); - mpz_set_str(table[27], "4961042611843774276830686504678143537634042868988093197151531923202165896428", 10); - mpz_set_str(table[28], "820995330704602082023389942001516326818113276056207117608315994303105783846", 10); - mpz_set_str(table[29], "17063503948258759982521687096337367273424027932919494422489905984616783526940", 10); - mpz_set_str(table[30], "655009840659097098746477536921819669236312244709885557472771258585495863198", 10); - mpz_set_str(table[31], "5565526667065270568125894359845653415385789737081157482315205604882968801772", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=27 -*/ -void EscalarMulWindow_e698e70c27ce0c27(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4269413356809688023055171952319783340807847112986096639848456682256125645198", 10); - mpz_set_str(table[3], "17891026128563673965161829930746344980280606142672216508664431337850809882768", 10); - mpz_set_str(table[4], "7028665825486996498137491933204532735387436324626373156761028606127092857898", 10); - mpz_set_str(table[5], "16394852272472558952431643649001704750983750210094468004673310412404620285269", 10); - mpz_set_str(table[6], "9575116358732551192150870969228086842347680104624158647630582324869335466440", 10); - mpz_set_str(table[7], "3169542329348866242122582288569568831399118696572711471864800613462373064713", 10); - mpz_set_str(table[8], "16845773816780024268431761968937696546879583698191683564525352316650779482881", 10); - mpz_set_str(table[9], "15371046996217610175317662037035861269567606464107910978539868567748138358188", 10); - mpz_set_str(table[10], "3737865142484713569235227558864529185671037856124866291820139336391043043071", 10); - mpz_set_str(table[11], "5147619658047292583758581391647638644261462089795093902318291830912213819869", 10); - mpz_set_str(table[12], "15412517508402927450744477758569750435850928341579553211082064827884417350437", 10); - mpz_set_str(table[13], "15123306967046167736838038855522970760546316635880988480505894653019908997285", 10); - mpz_set_str(table[14], "1378997542838302882522218636718788433398457256790945020306817286210794852079", 10); - mpz_set_str(table[15], "10681378457761673700208457944265082204938467731057382775794046472907358133325", 10); - mpz_set_str(table[16], "15034216098749163077398659997000814293811394539301049023966449242170607876758", 10); - mpz_set_str(table[17], "1265117124629072894780664826608083949693736965880149409956589379362893867827", 10); - mpz_set_str(table[18], "17141931405175606365519137193715586102927833157366436473975545010128210879676", 10); - mpz_set_str(table[19], "1880341079109052932425109631866414631154435103591430808435188034892166215826", 10); - mpz_set_str(table[20], "15358552313330899939313213174873817402073115873733628011115954184269211049875", 10); - mpz_set_str(table[21], "811576326309334159355379418340956988202908503048709875595006469622118773857", 10); - mpz_set_str(table[22], "11980805963003943581544209754278668018236660791726786320615515322070456177125", 10); - mpz_set_str(table[23], "19129346817397574214942130163039735117121940671425116237677666615095191649280", 10); - mpz_set_str(table[24], "3085324543674639674035900800542024948649385413137066150025713122961690904680", 10); - mpz_set_str(table[25], "7562088399433561926096036673997995344390772153605937104657033492731868301697", 10); - mpz_set_str(table[26], "11616789518748387652676471460186977754323335645971627703992552357828756554626", 10); - mpz_set_str(table[27], "2985309710126181923271106664964882159606697141846195470517976005450302812764", 10); - mpz_set_str(table[28], "20045268470731731980457104327845120289597280757025433801093367686116425682919", 10); - mpz_set_str(table[29], "16450362315825157310960017229296433181706845131153707024014991209612395931227", 10); - mpz_set_str(table[30], "6675140004031465291382046674379185986882524818478619659668057799908410468280", 10); - mpz_set_str(table[31], "19575453177949606388513743103042856370117729503140135834457766083727148716244", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=28 -*/ -void EscalarMulWindow_e698dc0c27cdf976(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11797375556583103475936410264223169234680019331380441010099484115674003702746", 10); - mpz_set_str(table[3], "4388528957314896315680095568173136286307999846483728886086822418140788829241", 10); - mpz_set_str(table[4], "14512796928224367829315911046609507130339935623184687970713628867263115508415", 10); - mpz_set_str(table[5], "17141409409197546604539377770183982538346482127282272413030148047539390094733", 10); - mpz_set_str(table[6], "11732430130035776615471491649984617351069057911905998620220584826380474810879", 10); - mpz_set_str(table[7], "9376537503899738361300653657916351419700478308516458732431878112883192475273", 10); - mpz_set_str(table[8], "3450710052248585649078923563576676153255383176279328519038933288950963690814", 10); - mpz_set_str(table[9], "19053164269481311039996717729028852763030498876969873433965881093928272080178", 10); - mpz_set_str(table[10], "21355313626589875159629414610255849682334054368454202277940412267097837113179", 10); - mpz_set_str(table[11], "17527757806168506495012626599736222178210824889767143658744055128914425287233", 10); - mpz_set_str(table[12], "1659465447879842446146467540027271282532864557283036395430278827789636817143", 10); - mpz_set_str(table[13], "13244470474278251225936022513910782201305167905726898721032137375144042610126", 10); - mpz_set_str(table[14], "9331109824805589603749464659396966463218299078866177675680192948328969487159", 10); - mpz_set_str(table[15], "4808400526998406116861748929457949369609825340968131372779501297781241061100", 10); - mpz_set_str(table[16], "8667862274262081702893474482697473065781453341593792026682829702412730871384", 10); - mpz_set_str(table[17], "19633052771995805984567096389336158666251781701949228572771100982195433597860", 10); - mpz_set_str(table[18], "8096612061827253222675165910361428113904761835575734863433322096067565431363", 10); - mpz_set_str(table[19], "12080201316495449351674561557308329587229007477896718836895704944910296947571", 10); - mpz_set_str(table[20], "912149034276592385598424043084505877896022681633936854279201077702141729663", 10); - mpz_set_str(table[21], "457905390781590143801995368401293058071807834009296351047635713145524414716", 10); - mpz_set_str(table[22], "18373899101758750108039635085717350072838673044198411779451621654401612805078", 10); - mpz_set_str(table[23], "2265159405545722653339762168912044034720386011316093785193404030432577639061", 10); - mpz_set_str(table[24], "10187219345026498206327613890311413079749970014149744260146289389219237776444", 10); - mpz_set_str(table[25], "1840491394547951013168554418948266969441523762850662260360355531074854100525", 10); - mpz_set_str(table[26], "7397867526390808344494686461152969418537013775639108333001354721688263188410", 10); - mpz_set_str(table[27], "5036068870201753969104359010852265468410913004304733341756441896124458851828", 10); - mpz_set_str(table[28], "2404476011504470302758567636525207627527437647847268625194430360600912963850", 10); - mpz_set_str(table[29], "17364002655826848575645873861903997154349751557140302331702560914712946071167", 10); - mpz_set_str(table[30], "198041343598909913407825314031581349255349300471969617864816810014168405444", 10); - mpz_set_str(table[31], "19939953104986055173308746471355776712420237282459384306930139793608995290294", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=29 -*/ -void EscalarMulWindow_e698dd0c27cdfb29(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11917408217324596855586517851658086517261015976052598027245036654858824854428", 10); - mpz_set_str(table[3], "2883968059593129633185458746763579988614458998578738667234249024001667111452", 10); - mpz_set_str(table[4], "4426261888354270882771564412443984047190519880794529359825901743683308477235", 10); - mpz_set_str(table[5], "11952148035215715125822447202686802822283761129105744445365575536929406520575", 10); - mpz_set_str(table[6], "21513705608110320280855953799918709432040078212812226969535239246557921811366", 10); - mpz_set_str(table[7], "2800834962371886931968096751334899818706718463079060829965571874633138208598", 10); - mpz_set_str(table[8], "14313991882703166346202485967549867187873333611248625850008715974525987389453", 10); - mpz_set_str(table[9], "19315136750785365998610966988139456274306389662105253480860896123674000344379", 10); - mpz_set_str(table[10], "20757911663737782174516715541929408382837752317263828301498464158122832952984", 10); - mpz_set_str(table[11], "20117019602322752672388878127847123591725710657575172987782532818829211564848", 10); - mpz_set_str(table[12], "7809533547034666337742955467156936622961864347336605135743612996880227815817", 10); - mpz_set_str(table[13], "3004513876655588111964898493103288819203570452897971697074223702513790522904", 10); - mpz_set_str(table[14], "9505880849101294671433021036863928345842139389293527761843942051680039706288", 10); - mpz_set_str(table[15], "1955257457314763828318644963108733139303371256746457600143840042654994065339", 10); - mpz_set_str(table[16], "8487606718983629981969113676823936884574919719167259787842950705242561711580", 10); - mpz_set_str(table[17], "9905570108236273455798923339377139719222163871503187866563007972318885983387", 10); - mpz_set_str(table[18], "5729959348180737537595984388457564054660714371310248979103860012223230136295", 10); - mpz_set_str(table[19], "6871366531144745323955290212305158983175263167064574507549466174536504156275", 10); - mpz_set_str(table[20], "8834253430534956296012959182313185614813712098499667040156665024119341905245", 10); - mpz_set_str(table[21], "19900793308917826910906043238643018389441619941471999171187318843890975280301", 10); - mpz_set_str(table[22], "2448186961364625066142716931262849888459091897772693570959328524618652827772", 10); - mpz_set_str(table[23], "11320699778989409904937823339569393225314665509840908207974869153995345759353", 10); - mpz_set_str(table[24], "6140992419359407721931795773387696398264211356458053927806306401735407474123", 10); - mpz_set_str(table[25], "11532527578408331007817699078779727660612695629908105164718393815754893305869", 10); - mpz_set_str(table[26], "3103962747980232851483005346087421659763316749863734133736929305431686146144", 10); - mpz_set_str(table[27], "16276232931028267207810576489756397980795039658350963086881277468815137678097", 10); - mpz_set_str(table[28], "5320760790696110047804038501045669461343918557341887697047805921981912446565", 10); - mpz_set_str(table[29], "8962862735228106264445872505785355861536667088899353293275170365537289572586", 10); - mpz_set_str(table[30], "552208416099914852270377912218582981728510367795113162815361752232063865919", 10); - mpz_set_str(table[31], "10208425026470757310072323328690713372169424420407606002933243360520853070768", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=30 -*/ -void EscalarMulWindow_e69bea0c27d04717(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4350032954465131730713461218130679989516820146907523029013733848220571809348", 10); - mpz_set_str(table[3], "2854634417209936886904362207143094938617241895075453527207989103397295707786", 10); - mpz_set_str(table[4], "20363813867853245544998990588216971707597722318158234837386116215776580998846", 10); - mpz_set_str(table[5], "19640312413035974187181797940062815888953019111877666398755316581356718072299", 10); - mpz_set_str(table[6], "16041939189889384791115203147926312498972349148329737862533296331482991991816", 10); - mpz_set_str(table[7], "1140305763694441286015588189764932013916048521785460877014385643699863272910", 10); - mpz_set_str(table[8], "542084569528409964372345461507403345276166531408477518262609407812453447371", 10); - mpz_set_str(table[9], "20411674472105645542735045592167607179454529156933108768591805676116167577009", 10); - mpz_set_str(table[10], "19104209658343450724527001695412145651052068824599525544554053332002237191382", 10); - mpz_set_str(table[11], "2743674979532720777057267299772072910663144255944144489929043881891160491305", 10); - mpz_set_str(table[12], "17961809768993317920350019103478205424752539947462079504381438520073049522680", 10); - mpz_set_str(table[13], "5546551655668682275282781024682371662488244970929195226359511683388180712993", 10); - mpz_set_str(table[14], "18135679793205943156848290395138206950963194544612724149121399087081613225388", 10); - mpz_set_str(table[15], "18313179050133510393873986385364648369485678893432014134966689851498314430187", 10); - mpz_set_str(table[16], "3945810889741684307318435240011832043385508486855796382128425405676939215843", 10); - mpz_set_str(table[17], "6011692872466802351918324009224447806149371877104298028795077040967612963458", 10); - mpz_set_str(table[18], "3626940918336533486128760951662889719206416929909850337428447482604461006340", 10); - mpz_set_str(table[19], "11664899471480111325862919080870604454546145374180623823915812195468599687565", 10); - mpz_set_str(table[20], "6338546172978246851051245667653730477922923531035010938597264405997708635137", 10); - mpz_set_str(table[21], "518940349053692900114523108633991523837843379883062194226936733969764065566", 10); - mpz_set_str(table[22], "6522310070980952033213799771507729897165930438327957804523973081102868716071", 10); - mpz_set_str(table[23], "100419547589926947496172466658294485175305155431501274136728754000993515833", 10); - mpz_set_str(table[24], "13845166423101358431718311924198491637412784486855329985607787525354129074625", 10); - mpz_set_str(table[25], "19182779558157706997387273998891031473603306945308072734828347840985550644257", 10); - mpz_set_str(table[26], "19942510866337884261771783583046666738727078709721354474788032670043154096859", 10); - mpz_set_str(table[27], "2433571954347521371403047681326038745937757495219039289650632854969732418314", 10); - mpz_set_str(table[28], "20336271442491716210022303361469099044718347997285337640636128368988103479336", 10); - mpz_set_str(table[29], "3148662982090953848324329087964597315758390424094324864567944744824256653004", 10); - mpz_set_str(table[30], "12617786301557788340061415046219949524699885761768871033608043325058969722750", 10); - mpz_set_str(table[31], "8998488835485146012550914204560093426551491744856710399549174777132647132570", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=31 -*/ -void EscalarMulWindow_e69be90c27d04564(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4644754257456236075278914399394058059420397993645252092903397071689643213552", 10); - mpz_set_str(table[3], "7093834075129968415337301554032254867061690683060278985481861656001677882880", 10); - mpz_set_str(table[4], "15409841921089912189622913883812561130041878838101344920898896721637428578967", 10); - mpz_set_str(table[5], "7830617612297769304997491156637439023664430486222672440279075775909571797282", 10); - mpz_set_str(table[6], "3487305618390251146572484190094370984538412440951902529671000233533365151675", 10); - mpz_set_str(table[7], "10765504169763674162759393874305908681296039888475360515569570793940932045928", 10); - mpz_set_str(table[8], "6498521114883270679643538942605534482856176046809447145439782976829740028938", 10); - mpz_set_str(table[9], "20281339791199286964292063525524165369741161236461759682855013741849104461782", 10); - mpz_set_str(table[10], "16737501468788111146411539232024716399961790917471931838582332243836129643162", 10); - mpz_set_str(table[11], "19402343935297944958298711428379965359335877878520036592589327976319229820502", 10); - mpz_set_str(table[12], "10289939111838419129338766710877774210959211322093649819810976011210182193734", 10); - mpz_set_str(table[13], "8223922158085606345146303052608086776236490441677506485508715298175458627175", 10); - mpz_set_str(table[14], "20539337747898691472741085832750956664482743181485636615932012669718984605214", 10); - mpz_set_str(table[15], "10561168163913032259950679086449222718878398724945727851266637814896982023040", 10); - mpz_set_str(table[16], "7258666947826866514722926949566160303777186683955033678817705005800183223398", 10); - mpz_set_str(table[17], "20401751220505552706000119316062179215521648054313195585262077050003647551933", 10); - mpz_set_str(table[18], "8367935162214506964820413656895561586536970389914147388437248736570551108055", 10); - mpz_set_str(table[19], "2205720867297009399944922505331480854196080897040969990907655725782889339485", 10); - mpz_set_str(table[20], "18753231187238607116882460259790419560821021577923728787424558853118917624096", 10); - mpz_set_str(table[21], "4534669483261502498454555031979754604789623266298379863506616995474967985525", 10); - mpz_set_str(table[22], "14172488450665879595245096634178080111713465169418265761142723717340067310597", 10); - mpz_set_str(table[23], "5696526324520127671002989538227920875329403637555827242423082334024107337209", 10); - mpz_set_str(table[24], "1206329684332039828964651595611269380402328627795352031319992380792485078388", 10); - mpz_set_str(table[25], "17972372469097908224259652367388522408279987066314364493983072112512657216039", 10); - mpz_set_str(table[26], "14448905903416685787897339742737450851047686799185511034436404254270953590447", 10); - mpz_set_str(table[27], "10181231898101111905088694830837847943004635469336591872506441893551990037260", 10); - mpz_set_str(table[28], "17958330700401983374599093120809253561362415701272592427016220742714384857035", 10); - mpz_set_str(table[29], "6007443933749217345994635958872407119748860550396694565716070669657686174810", 10); - mpz_set_str(table[30], "14276719612754420010455219113253724885466272319560365895291613201410170310450", 10); - mpz_set_str(table[31], "10693116629759773692189329295948538197161270692843773327458719522025162586177", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=32 -*/ -void EscalarMulWindow_e69bec0c27d04a7d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18168877122827038334929527623374674231182583683891922220179914694168010786609", 10); - mpz_set_str(table[3], "21395811060098255242833034628260081554785647687889044523645926681680028484661", 10); - mpz_set_str(table[4], "13367844415017515789777305479374977144089191780909676464344031987995809036484", 10); - mpz_set_str(table[5], "16074411931546690824652026447579165915324981546292288185615083410752375961393", 10); - mpz_set_str(table[6], "7580464821914578712695847440568741835359919774840061852660085700510160784180", 10); - mpz_set_str(table[7], "5346673312756119795929142505004484081315653916592392601250804345079494718212", 10); - mpz_set_str(table[8], "9400452618118044380167843348869550882126738430534329856930646946072845826914", 10); - mpz_set_str(table[9], "19877022756927401789929353662508552637001579550825019106361227797763225828014", 10); - mpz_set_str(table[10], "11344712897977616324604615269052957068440855217627556530481536722932367046697", 10); - mpz_set_str(table[11], "21454340139778828988490122275370292435478856890507859952044368035766395167165", 10); - mpz_set_str(table[12], "21728667295636532545786442398160936907123045759740626529083464212445498771803", 10); - mpz_set_str(table[13], "9496447065220600072732124726941341547208600170407379076709072318418833657899", 10); - mpz_set_str(table[14], "1984697856201695259397868842203304549391727971727361732486915043413790916446", 10); - mpz_set_str(table[15], "5864205212580166345710335386415413373628377225097547470558242424491418049975", 10); - mpz_set_str(table[16], "15467384593112544208550904621637938940819772220998069930254989149520660568264", 10); - mpz_set_str(table[17], "13732634352298231231186568628160498473001952217735168106320637787088824812082", 10); - mpz_set_str(table[18], "6310704219133213607427284905330742358802037490549873845104009471331789948263", 10); - mpz_set_str(table[19], "8244326056827942803574592909275566951059019484662582292518486442245427496328", 10); - mpz_set_str(table[20], "17860425133426115012992100275292042363933776614239554876813471744327779718366", 10); - mpz_set_str(table[21], "2704602191345245792891905759546835856750732083256594149970326047694894768417", 10); - mpz_set_str(table[22], "6226133231413948142546942013839354941290887461387672537958836650050287480780", 10); - mpz_set_str(table[23], "11524291542935660287360855314476343150908538265570984288264336745969245965333", 10); - mpz_set_str(table[24], "7317838014577449588227715046033008549419937563866544370785624382646342167982", 10); - mpz_set_str(table[25], "15668375363151717222979808655957280264239929005544159585611141373699288235927", 10); - mpz_set_str(table[26], "13470315519331989093227502282047593782489538748626409820123517429593804291901", 10); - mpz_set_str(table[27], "9618461529532936701948164118242433992104275319665351481969898980460429470538", 10); - mpz_set_str(table[28], "19447071247334913032627113703119308492956565317443610634453007167725563410838", 10); - mpz_set_str(table[29], "9160898587124532346718199507262224741002251747603839372568935620559957223174", 10); - mpz_set_str(table[30], "16191884273407827105310031625928532517066508356426290845447781296919162298470", 10); - mpz_set_str(table[31], "11162402218840562691017503436330049572505961003118743691522907428839903496698", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=33 -*/ -void EscalarMulWindow_e69beb0c27d048ca(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6695775034168506219261537941034956927584422065076874801251660020428423104026", 10); - mpz_set_str(table[3], "5197420267683237306240775499875424144996523958400069022742285016534913385799", 10); - mpz_set_str(table[4], "17074609679021226285449642930975458476511844534614765112810293567988339496833", 10); - mpz_set_str(table[5], "10533691752850825062476518417950462929377671083305746097362765594757062687232", 10); - mpz_set_str(table[6], "13356608653567414655270342780312496170441603732808275648772250549294619087714", 10); - mpz_set_str(table[7], "1030716247791189929844088863163178366484069672471789317426450938865890574778", 10); - mpz_set_str(table[8], "20510571107372697486394751374344875434147976921404258783584332447627675396257", 10); - mpz_set_str(table[9], "12770083372100092832406108275349223480759865233011877406286425086472397887457", 10); - mpz_set_str(table[10], "223544369321138288883341539066019400464550950532942330029526813373258985528", 10); - mpz_set_str(table[11], "7616138897944611542954874086896865721938130685611930759645930549102552235095", 10); - mpz_set_str(table[12], "3087013059053718874934218938239071184961131231178827196009232241767383923591", 10); - mpz_set_str(table[13], "12604252438843664306831942589605285290630596405760109418660139017646646244269", 10); - mpz_set_str(table[14], "6857523874460704459251130739841555713735596313837728208122888679423297438372", 10); - mpz_set_str(table[15], "20485883534054426652566562959687928237813615165320957258873762291411180563164", 10); - mpz_set_str(table[16], "4358251930912448671298381923638710986102635143209553461502002448706919720401", 10); - mpz_set_str(table[17], "7142242320858937432342378044154436327354192663127754244697701771347165274606", 10); - mpz_set_str(table[18], "16940427345157479162358821230086923264652946527570868835759718148888833356980", 10); - mpz_set_str(table[19], "7377776643855758149954231921150968590556447189790842128654024741589565501977", 10); - mpz_set_str(table[20], "16825286187462427966438509313184801551590788729421980955777353101940276958482", 10); - mpz_set_str(table[21], "11213483608634305003613466676890484036788810486264758367374906029343525674103", 10); - mpz_set_str(table[22], "4604905195665109541955183695302050658901838170989978908038913249059952648801", 10); - mpz_set_str(table[23], "16202059727028069007202632575798283229373099948818861709732019157240754134267", 10); - mpz_set_str(table[24], "16452157401351640538938099965252676476108500978809287709572402698502049428276", 10); - mpz_set_str(table[25], "21340556381956640404782213432278949569712095946165390109738024692733598131089", 10); - mpz_set_str(table[26], "1845553526355757456853030171475488788243843504865980903413480810159871260653", 10); - mpz_set_str(table[27], "9073244485009210828068583976267719830425244296238830099204259544852268624066", 10); - mpz_set_str(table[28], "5924207578131749931692341430444437708280021699637339929201454236396772622131", 10); - mpz_set_str(table[29], "891733986774401515492584735286979329004999536934152306058649704163030671485", 10); - mpz_set_str(table[30], "19954984102575697683024763856133322056785812670293251149947811629454727255473", 10); - mpz_set_str(table[31], "7930092559151051993125981285785954615902139308034469080070188670778564918033", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=34 -*/ -void EscalarMulWindow_e69be60c27d0404b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "19356731180643309637009121646192804396766471748907440680403874992498550563936", 10); - mpz_set_str(table[3], "3214400749599751117032458916881242732298803247792239104774025503399355667725", 10); - mpz_set_str(table[4], "16176731219468381342338125115096093861536452745109122160740171559764396541701", 10); - mpz_set_str(table[5], "14292624222819795233131788626348133481378384030246167916543272349434345280017", 10); - mpz_set_str(table[6], "17001560595214375341407271813373493016868159311775717637125537997777326599986", 10); - mpz_set_str(table[7], "14098620486805565271297686041885804202986304629438161814105349240085262180484", 10); - mpz_set_str(table[8], "8950825534540625735109708330862303475368234806272419702362731373978759921032", 10); - mpz_set_str(table[9], "3187760222925636964961005022102038508294617828939716339969126545665490911639", 10); - mpz_set_str(table[10], "4206423529377484823374053871965263992268492361308043993445741405815440558195", 10); - mpz_set_str(table[11], "117402775101048846251950640665847179638595588207873204021950654297341007322", 10); - mpz_set_str(table[12], "12671804052728908592353296845628376913703600024216805591488162991063369538070", 10); - mpz_set_str(table[13], "9643532933350186842582715991489586688376308608952745935832020889414349175718", 10); - mpz_set_str(table[14], "2003483400428325022049318565403033513523819391942815705601950420113273071638", 10); - mpz_set_str(table[15], "9564509433383063496563620129733447283928935829151622380292623870105823123397", 10); - mpz_set_str(table[16], "13172307421343686976662800077391980043199555236705928617999793099244381275047", 10); - mpz_set_str(table[17], "9473492893959582088074400216725431432817228363183147064907391832599934156811", 10); - mpz_set_str(table[18], "3175634055931942852687296940283492856782159164762715277286248415655419167369", 10); - mpz_set_str(table[19], "19645064273841840834420152698365923439503423041115413270278618553739145726426", 10); - mpz_set_str(table[20], "2187325799028424613009897104407761487517923043665367878843245053392354789558", 10); - mpz_set_str(table[21], "858125624403277591213185002708527141323683107681104663947498365434285988710", 10); - mpz_set_str(table[22], "8928436775642075381449033430442251127214071473210180473154443506344988616047", 10); - mpz_set_str(table[23], "3556056691320241384174749967408654749136532987869766603026020578477093486658", 10); - mpz_set_str(table[24], "15882762071326605923630789856005377427598219925296721519185181863534340760741", 10); - mpz_set_str(table[25], "21013311961759198647484428840170370451737520016703334902877566437243610426333", 10); - mpz_set_str(table[26], "19617881628561550943891951219507153773810407064128297117390250215815646453171", 10); - mpz_set_str(table[27], "14564512694077277786275475836119383938096845806807349610320860538929086123285", 10); - mpz_set_str(table[28], "3909991144345443273336006272149351586238824009912076105297289353243649854339", 10); - mpz_set_str(table[29], "9653609465399255206199387481500542044995699730023024980360288543930623874623", 10); - mpz_set_str(table[30], "11439753936921323737030138941142488791529072393958106102322749616254417325380", 10); - mpz_set_str(table[31], "12110200772811938781097335995157143221829926879430281715589261757357242155172", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=35 -*/ -void EscalarMulWindow_e69be50c27d03e98(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15477858470919536743712764743292374382766910760573518973501234558946829424107", 10); - mpz_set_str(table[3], "17638789856201997338913036702341536640895282466111091966155486992750146958438", 10); - mpz_set_str(table[4], "7342690806915747576242538190877019505351600308035800763739279162133829363537", 10); - mpz_set_str(table[5], "5542290470077131483708137691828733226529489703740740260042745111531161118255", 10); - mpz_set_str(table[6], "4262049143693218282345805448276452210668203219524666610638765049564490883972", 10); - mpz_set_str(table[7], "8354133749962510427375999573843822831437235408714054885162597498295243407650", 10); - mpz_set_str(table[8], "17149998808269740365260796258728720037784140211237634441916366354474099540770", 10); - mpz_set_str(table[9], "21659796089416995949593404673332180275815497571442342905020865263110379860492", 10); - mpz_set_str(table[10], "5544115216916018249681852933145303572849458084775929644277059709748102432415", 10); - mpz_set_str(table[11], "7996278026520385999790495450140160036901347094531618138787726566105786893201", 10); - mpz_set_str(table[12], "5721675316776116677463060138927185301057866558465709031545140648154769427783", 10); - mpz_set_str(table[13], "17117856567397355908509384205517499340244585771242434131528529382491888164846", 10); - mpz_set_str(table[14], "17705309800835522565027208214619711057887528020635061576349562165907024080259", 10); - mpz_set_str(table[15], "13839122306496999981028366601288764577930256081754733203274302140204568362814", 10); - mpz_set_str(table[16], "12365339860491877448754964037017549012894874043326183453800663588685239129458", 10); - mpz_set_str(table[17], "7103352533142456625374776482097144897197741475549515134770911906817996853812", 10); - mpz_set_str(table[18], "20153805647755735674952030814882814200345002244582151700061172622136610649128", 10); - mpz_set_str(table[19], "19444840935820463375633100488173678100595726396437778215099437545187000336739", 10); - mpz_set_str(table[20], "12841849695787951519393669935771785819784466010534322836789720666863555910500", 10); - mpz_set_str(table[21], "14382950779010918477707385209038675456891395351788920609263233734261375421368", 10); - mpz_set_str(table[22], "20927148739115175789658571869286401388014111538113579857632566180932257691779", 10); - mpz_set_str(table[23], "18977034102311500876178051164245263182357848046092241842306215894497748163515", 10); - mpz_set_str(table[24], "12579904268229887884049836087446593707449070785690850582924631561204008263755", 10); - mpz_set_str(table[25], "11760996811281626838470806316954716199716752673144666141920798572658978581592", 10); - mpz_set_str(table[26], "18452087186763282521507882040320950290104742840759543597224990555567967253823", 10); - mpz_set_str(table[27], "21601443770186145669257018965320399635222072691176301354036469676415541588433", 10); - mpz_set_str(table[28], "13322368584583048478563822129589427826843795482859734430026366838899453843387", 10); - mpz_set_str(table[29], "2406525191445135487303102887742565347243926932577196863745858903452202198695", 10); - mpz_set_str(table[30], "5500441860857208815025223521189103935787080535077269596074130361358824514495", 10); - mpz_set_str(table[31], "11617266299199627504717528199837393719683852577001875437407627848684233508015", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=36 -*/ -void EscalarMulWindow_e69be80c27d043b1(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "17307669482643854263039904768588642635668857066388704306432435831758544837368", 10); - mpz_set_str(table[3], "16663190255416788407704976808532117057267079617443273321124829697453785444918", 10); - mpz_set_str(table[4], "7767688629439000977837583357048335803751727340651680730246959289946807183372", 10); - mpz_set_str(table[5], "670581420579370880760146636132432925158828701960760091123631831306066305857", 10); - mpz_set_str(table[6], "2754250386286792623408556107974057271384273619504869025763750491029768906432", 10); - mpz_set_str(table[7], "8972786173153157070923759063212088798164256593722111835652463937188906463832", 10); - mpz_set_str(table[8], "14952056120512888114956945784836096542980969062346335198552004255800581056809", 10); - mpz_set_str(table[9], "6208756170645771699974023924287711642819871950426788021388368388870068687211", 10); - mpz_set_str(table[10], "9487648326365151551210554720420517469667792470137555600645318278604820484844", 10); - mpz_set_str(table[11], "1761309055531769349179645391904019713243903726225475135955152977686810583411", 10); - mpz_set_str(table[12], "5393072332321576326324197849135578399689821905720106921767796905958389363455", 10); - mpz_set_str(table[13], "10219118870309667485905216591926989718802585969480959458081391563502394591754", 10); - mpz_set_str(table[14], "5012767231488385044616901150444815729766025148641534181224024719384569893478", 10); - mpz_set_str(table[15], "16971623375723949656735019154248722809180354622485970215410552856554116607732", 10); - mpz_set_str(table[16], "4641426648770894369488744049829994303917271881423240560998089530609770090830", 10); - mpz_set_str(table[17], "4885584141747048552920631926316329629943509280393191735953118555351800251524", 10); - mpz_set_str(table[18], "12168020483068372765472881384015064854173197357090588010091059008891478831924", 10); - mpz_set_str(table[19], "18769920721582347071100103860066024471886671624714267331128145731329578228191", 10); - mpz_set_str(table[20], "7486224941958967137281889168713117579286318794267933621159090263190091529622", 10); - mpz_set_str(table[21], "21008971468325197881661859020566988292260522741791296564199977711833331249447", 10); - mpz_set_str(table[22], "4303526478971332560438812109593348718907589330664035157460219337426436086699", 10); - mpz_set_str(table[23], "20792984994808067430361918636129565102954500138670007924286812085776974057580", 10); - mpz_set_str(table[24], "14559224584593636533853717297473881862676223317392544680668888444486518910425", 10); - mpz_set_str(table[25], "11975107998928827633083789319419094147500486171078475229516207544676716420033", 10); - mpz_set_str(table[26], "7728378291071634444660618821270833315069857642508327085412478054352067999083", 10); - mpz_set_str(table[27], "20332442452387954184551835122301709925524185513837803683177065672085544112959", 10); - mpz_set_str(table[28], "12798918567003036544589386025591090627172197031340787352654563746126406921707", 10); - mpz_set_str(table[29], "3329299673492925078594424888360807614697713101209268644939864284199642011774", 10); - mpz_set_str(table[30], "18394010273015341621427578548822976137750553416709676276954674815272968212961", 10); - mpz_set_str(table[31], "13615908497862565630094458349378103741629210136694775430382238855588043856859", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=37 -*/ -void EscalarMulWindow_e69be70c27d041fe(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9586950849703040997332496941311580827976739144750984047254996838554546235603", 10); - mpz_set_str(table[3], "2090285971362784586936521878866714584515422069745141071121222574879560547495", 10); - mpz_set_str(table[4], "20209442401801277282153213469610084346628371453461430310977869157838601964593", 10); - mpz_set_str(table[5], "177047666113722750123940819379330396454553543995305900754850011316619314611", 10); - mpz_set_str(table[6], "21621217688827256178324175700156122327875740717499516176272125761887287425859", 10); - mpz_set_str(table[7], "6427841745400342600990354490036610634313918528912098554943136181273175607692", 10); - mpz_set_str(table[8], "5427492986714083811507634481699217234152653916086833474156145822988026504957", 10); - mpz_set_str(table[9], "4872529677049968453427621564178312615471969367943201516431203863422062681938", 10); - mpz_set_str(table[10], "5728361243232283934190671989748947452660946050753721231095853259130128738309", 10); - mpz_set_str(table[11], "2050682098312649517547182126261112843356939265652326979687561223810334757974", 10); - mpz_set_str(table[12], "11029738845484600582427172624502595796793017211233240961500181076244076636737", 10); - mpz_set_str(table[13], "14215812279240788836354389861098019414358714808301542167064399870385144208087", 10); - mpz_set_str(table[14], "20141671793981498983094554391078722331741181770577364751935173292266384291267", 10); - mpz_set_str(table[15], "9423397011088682550441781828134858336342533574070101464963920574476131359448", 10); - mpz_set_str(table[16], "9511970957011993585023995786977374973306376936151726332981591230076928168021", 10); - mpz_set_str(table[17], "5050989132399831590142800043144646568552442494682751556916392292026512126564", 10); - mpz_set_str(table[18], "7921431342146006518841472403349361694696837284346661346550700645363707173551", 10); - mpz_set_str(table[19], "369114272715611994947243500141363187314941700907979969215444571664389154462", 10); - mpz_set_str(table[20], "393551513784143364217846086657753182891808645211302657506021269111983622728", 10); - mpz_set_str(table[21], "17568513579355029305508006474298070400828434968082588523603246629715173711746", 10); - mpz_set_str(table[22], "13864578826386492876630752562033073076136187202442046249877980818586207543144", 10); - mpz_set_str(table[23], "12457587815579238336015380657698245398677469348250732194383948196853468122686", 10); - mpz_set_str(table[24], "13029983506654160991296430284076194518578140374131769107184768203920377732908", 10); - mpz_set_str(table[25], "18048538059080820310986027973940517109996059980332614120410298329771255320983", 10); - mpz_set_str(table[26], "11144874847284538497187220686105175837653418347949213702251932893557585038064", 10); - mpz_set_str(table[27], "12016895202186391285166731990364722640940496755242143853746342358645015626449", 10); - mpz_set_str(table[28], "9950668404031269595402973478118581272405627596631633280905024236166815290178", 10); - mpz_set_str(table[29], "17276575103192809851485470255630636568755112967284605373073112521118419282982", 10); - mpz_set_str(table[30], "15459495953028188290022630542066258171880759101557517529386015675997556173701", 10); - mpz_set_str(table[31], "5404968800748103568231945340712465020004654645782844402391353716053549582786", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=38 -*/ -void EscalarMulWindow_e69be20c27d0397f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11031848773291267873186065243084213872315980512370138346458027946088130060914", 10); - mpz_set_str(table[3], "19855276696991515082872634390524015252319628835119055625627463036088024324694", 10); - mpz_set_str(table[4], "9759720591348236317390888618674244726821738782822305037163100223258270286344", 10); - mpz_set_str(table[5], "10366086947529075828253187164254133265922908035410147262025891268524691138562", 10); - mpz_set_str(table[6], "17876737775327796908273541001588587099464883400623881497813240134799268653301", 10); - mpz_set_str(table[7], "4664070995588760990363270210931759392582902505684778160337574775218938667332", 10); - mpz_set_str(table[8], "3163494980155562615310616269176352735423265350881561383679355580749055298850", 10); - mpz_set_str(table[9], "12743244853906757184841663597029604911629298558376404056194098044105937995801", 10); - mpz_set_str(table[10], "18894191482342621837486150377182799157802489170343843837811245990870506736214", 10); - mpz_set_str(table[11], "4812733793949861117383214441752403306242210289856783905371333898642641082497", 10); - mpz_set_str(table[12], "3594745955763248975589685637593398913185618933678360958857582997592005964766", 10); - mpz_set_str(table[13], "21395536110796607671721566277692559800154546051703301306773740203894868718673", 10); - mpz_set_str(table[14], "21621130055189892264800018463483264346920254848096408182766671993811318501985", 10); - mpz_set_str(table[15], "4422467983394168751929855389350597350118535149832095890949810085966429025447", 10); - mpz_set_str(table[16], "2998997651710192522321163098409041871650587829905058181318071451964038769990", 10); - mpz_set_str(table[17], "19709820544091923057607690820673843924219687381275553503067902933947559506719", 10); - mpz_set_str(table[18], "3484392812004749315642181652805335528377334673018196404998868095496503885632", 10); - mpz_set_str(table[19], "16322895093377578280779646179210626116794987660120746222943606082886827128827", 10); - mpz_set_str(table[20], "11403907538482891572428539697549038230800547825992188342881209246537405440780", 10); - mpz_set_str(table[21], "18195646139215879357148116323224212104863972717849085954880768019064292830079", 10); - mpz_set_str(table[22], "10295025732985283395518330747291968152692673857998328527008627549178215995215", 10); - mpz_set_str(table[23], "3704001853065649188851269168112010354231522884233765296423330296985360487733", 10); - mpz_set_str(table[24], "19285914399489289455204334894067366878018411935925540944308891092189202103041", 10); - mpz_set_str(table[25], "11275386310323277376445688087258777292227029473362709315980123513512352487597", 10); - mpz_set_str(table[26], "11253128570410572157795965460378200704251745324433664259436364402809952469253", 10); - mpz_set_str(table[27], "13678124442459781648502116407119163395996885151427816228897318850876370683761", 10); - mpz_set_str(table[28], "17131070275236789601069549782601657932528022188130328095983074153079792292519", 10); - mpz_set_str(table[29], "3737602467673707200309864835361347899625671639151883114723218212611516799091", 10); - mpz_set_str(table[30], "19428526732889569337036345477989611076037248893449456467054464464715759480357", 10); - mpz_set_str(table[31], "15415803230511320441427357626992665138327609628685860759397869805137079110259", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=39 -*/ -void EscalarMulWindow_e69be10c27d037cc(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1877473440848550039737548624719092669039759436076550397043550756885273933160", 10); - mpz_set_str(table[3], "15553609960609674142111547668862713168734737693644666320650247603437579965475", 10); - mpz_set_str(table[4], "10373982481710347506088793024234259396769940487443965415532306949329297536895", 10); - mpz_set_str(table[5], "17187216354891779721016313499051591766819944027396007071682229274026222977634", 10); - mpz_set_str(table[6], "20074006355017003729414061766882177488757633952325977993007153632742610396327", 10); - mpz_set_str(table[7], "17818063815384074821217830049696443201670983270981606315355185228492730280553", 10); - mpz_set_str(table[8], "13754512859986013143208423132991850272487128276456945247171484994612791296596", 10); - mpz_set_str(table[9], "19576626816189887509125860470584218340717735128787286133316231115932418182346", 10); - mpz_set_str(table[10], "4090049760204722842848025313106885472851063152524382754646298895430781342940", 10); - mpz_set_str(table[11], "16437033798863112996435931936175199674848893514477165013039019126659470799872", 10); - mpz_set_str(table[12], "12615047441256253439982292579412711384034157198132875227190324279725098764971", 10); - mpz_set_str(table[13], "17017295969024965424244491173204323307434344858250605604827268491475338720451", 10); - mpz_set_str(table[14], "8851104979457438759377756333954165977466782187548958973525456848721853520552", 10); - mpz_set_str(table[15], "19616112506100170999975693192631919504145452951048369659073636955180627834921", 10); - mpz_set_str(table[16], "3543893977283419677653354469301906648845506262045028984417193242222972402571", 10); - mpz_set_str(table[17], "18672100037313803442629607804696410009018030510908372236366809980248214902565", 10); - mpz_set_str(table[18], "14151011215754753275953057537504572555245843780363420956653380242721031912417", 10); - mpz_set_str(table[19], "4789122634383947551023343656690425111752922990621365807138913830048291097285", 10); - mpz_set_str(table[20], "3365326030486176209860959005766980397057116613063050978463177715868121930579", 10); - mpz_set_str(table[21], "17743731771785155697004375046425413113431470112660751550096430241416838955526", 10); - mpz_set_str(table[22], "16334228387987139672938764182719400157865839331892878617199650018650049902942", 10); - mpz_set_str(table[23], "5949779148425289097755576138057407910249225977751658101615058920163626074715", 10); - mpz_set_str(table[24], "1767637989551376072895631775304064545854810537463471627137294610672587309708", 10); - mpz_set_str(table[25], "17731423747662789116383437956431590385350034518107417296138794406822673280158", 10); - mpz_set_str(table[26], "12307692310876733199147427527424422362926076847253980331884952686598334900087", 10); - mpz_set_str(table[27], "6181717108367136878887630829184362294011564924843166916093380887665473172202", 10); - mpz_set_str(table[28], "701760095059377045455583312563164763755476495091670659201475255099307716822", 10); - mpz_set_str(table[29], "9636162240031677877166641100913295101763219520129130789084217061701537105526", 10); - mpz_set_str(table[30], "7083854214784697692743884873881116891712577934450873605611161870871264119856", 10); - mpz_set_str(table[31], "7045038150918812377889732524655437902810531256775325111590096408593954009046", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=40 -*/ -void EscalarMulWindow_e684600c27bc7db8(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6036355027117291367803935904347904350611569604994628698666365676215607386874", 10); - mpz_set_str(table[3], "9470781519771956392054550195937279092773873670145135625037233029170034571000", 10); - mpz_set_str(table[4], "9532675295313861579306183807300053245837483443707176933432236413786711232615", 10); - mpz_set_str(table[5], "12602590000410365771039350337230672602022635229535744066998938056274774693962", 10); - mpz_set_str(table[6], "12474093035349057065435248151390233447669146673507024367415212273807397471068", 10); - mpz_set_str(table[7], "15090247843821716202793224017953423716294976975730482056742963266949090704321", 10); - mpz_set_str(table[8], "993401335099733679196104478246237172516229959107401964890709934715109383666", 10); - mpz_set_str(table[9], "4549835431802039209672582833046615930670613868388322557846320365486432865329", 10); - mpz_set_str(table[10], "18615693556164856515661662500211371115751969491172607019818868580531772769520", 10); - mpz_set_str(table[11], "12557380975196622146484143952799803377982900778384937927590994448162712406411", 10); - mpz_set_str(table[12], "21528064624971072836570433006788669323788103143815997699785127963180931679285", 10); - mpz_set_str(table[13], "2815013592661255772060458001206715011409597520516504741640748597928030514456", 10); - mpz_set_str(table[14], "3283979506432038757211295161706121204468048662680735081633823925636801547138", 10); - mpz_set_str(table[15], "17979259647516459885536032829330171271887168033049512956985480630126402921607", 10); - mpz_set_str(table[16], "17679460920469054540961921780259819518073073225825973021584960591844923526248", 10); - mpz_set_str(table[17], "1435546266715668935095994191129531425311368275460137428461902948813106005133", 10); - mpz_set_str(table[18], "8529569085560589258729123956325076977912516490984024131424202844108799299247", 10); - mpz_set_str(table[19], "14481204978249534685224508067409260017760408355243377092535739467560252539864", 10); - mpz_set_str(table[20], "5469648139591835701556357296669245434546329076027353304988201187896135733761", 10); - mpz_set_str(table[21], "8656399088437178980013918229953485726086133022762077932812311030398244680669", 10); - mpz_set_str(table[22], "9453484883554390052019033701573798569441565517195307870806396090645110901971", 10); - mpz_set_str(table[23], "2428705983531577652063225905012638240205977788535395577120897179597078390829", 10); - mpz_set_str(table[24], "8770845409247342317045867059283141752214525325141736923338817738273720253637", 10); - mpz_set_str(table[25], "10227070102072752704599056055717145346089895691242846586200447274931375568504", 10); - mpz_set_str(table[26], "12351497051066130754136747927357673006783165273221671674795978348293197924111", 10); - mpz_set_str(table[27], "10399138865887889172750326544145319920102338612354666914685658386385743856535", 10); - mpz_set_str(table[28], "3687201658877386269675562742672190827865815856365296497260718839984937528322", 10); - mpz_set_str(table[29], "11372725189122860200735097372440512569231475100810300031276146876637703080784", 10); - mpz_set_str(table[30], "15842658200268673885101124458352413063036847727835395734460438249573819844142", 10); - mpz_set_str(table[31], "5260848707964136641726275398826795509620380915293530555564019231519378758485", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=41 -*/ -void EscalarMulWindow_e684610c27bc7f6b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9049157878168304256653449895907353781869611266644813952473684865042109337042", 10); - mpz_set_str(table[3], "12389470665747793185620358781235851242679605886629314583690882283575935256672", 10); - mpz_set_str(table[4], "15820067201685709791446447583790910155550308811742442175406022761338328454431", 10); - mpz_set_str(table[5], "18933615658181637253586639093236307605169765043574853214660237871137889668122", 10); - mpz_set_str(table[6], "16268031786082356881390126615340499834888973547448347407612074392001229054116", 10); - mpz_set_str(table[7], "13403374209066712765051385005005290202580655781281156893506620579185125651434", 10); - mpz_set_str(table[8], "12443349336884307714178794889988387823359717547244391161588276962473746464301", 10); - mpz_set_str(table[9], "8865217004801814820071754424297047193368031348497541004043826193944071940478", 10); - mpz_set_str(table[10], "10405312675358469123384333322022234414010992859146270783984523097261588402079", 10); - mpz_set_str(table[11], "15576110011669724418535862529578949341724918859194415259002744070823422524091", 10); - mpz_set_str(table[12], "2959121400672142294042865442517391633632715449545284698594378498018112165467", 10); - mpz_set_str(table[13], "14329928203050411659263068059568018648091852703579618818241874225854851033468", 10); - mpz_set_str(table[14], "7114766822589092509785506520541005701778906668978339826593984526368514401858", 10); - mpz_set_str(table[15], "5775178933170501931557559885350212563450149681901808721200816015750405320044", 10); - mpz_set_str(table[16], "8944172830892074899314370751557040890150768955823981583652756837995492991755", 10); - mpz_set_str(table[17], "7512312292369758631512001425697241522515694700567727045416645279145705831892", 10); - mpz_set_str(table[18], "550897582470191906200868582814473987275434131570257271078587066370896560559", 10); - mpz_set_str(table[19], "5976763693632566058193596669979825661089187124788895456697614504801823884741", 10); - mpz_set_str(table[20], "5078133351430707910420535872715477894146235008945906157749939301851969963200", 10); - mpz_set_str(table[21], "16713977601277385997542346589271210943923985259682807939018692402173239634212", 10); - mpz_set_str(table[22], "20325773786908361664154055870513974619336071512807780736515037336216729482098", 10); - mpz_set_str(table[23], "12933368737451083278239958495890763526451440857809685985614786462151270403622", 10); - mpz_set_str(table[24], "11172678350195317096946317157489734078869608787387241745585886646764816080012", 10); - mpz_set_str(table[25], "4682520801386285636306564508974514328180899311914695159998232017469596845530", 10); - mpz_set_str(table[26], "12635379674674560804687198058232239264138501915111472333253480725869332688338", 10); - mpz_set_str(table[27], "1766653178103027911686269525961088666167393838200439665857362631139132338384", 10); - mpz_set_str(table[28], "21834134436898574588628001276850799742861006774133000031501677961314850076484", 10); - mpz_set_str(table[29], "12427429562864458517471234973378871969504922247751762022411217185105625195059", 10); - mpz_set_str(table[30], "4528582156170357658879720449774402365494927005978391077176929516480011110960", 10); - mpz_set_str(table[31], "19566660159865826747666264107866451108291737741968835810890051194038117832458", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=42 -*/ -void EscalarMulWindow_e684620c27bc811e(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16374769721376430840842257175660037581116689253001572418668231472135368119129", 10); - mpz_set_str(table[3], "13759412791308992624630717261380499431298404595960558382849326605388483813141", 10); - mpz_set_str(table[4], "17101118581080733788377267369796649744646094273525875582730309545814037104786", 10); - mpz_set_str(table[5], "8346925150147448846650655000830061632464893918480721100977869267550638743740", 10); - mpz_set_str(table[6], "16004997392325943104130831332697511746448901049675259649965618000507887314881", 10); - mpz_set_str(table[7], "12591368094644377864605631759305201560354168563962153951759207469634945341775", 10); - mpz_set_str(table[8], "14259351533215298779115106025065732588210893711127839722757743808238665984759", 10); - mpz_set_str(table[9], "8447442187204601448429746272219199678215852240535899646054374198700423679942", 10); - mpz_set_str(table[10], "10080292641230775537158183250493716731922153696018921478234635515902884448768", 10); - mpz_set_str(table[11], "3008166143834905196676500458556366815843921169320021276149276941023424251599", 10); - mpz_set_str(table[12], "18635330010195827731172046070424714525600593103448319680796985336934838426225", 10); - mpz_set_str(table[13], "6870714717041282152731506039404232002968764000137863568100152500018094628970", 10); - mpz_set_str(table[14], "9715983011735451313214040659603599731191529157725650820964107012571024668044", 10); - mpz_set_str(table[15], "15668341751832674964899719439620043834808587814313816475290936280710774121061", 10); - mpz_set_str(table[16], "19854313321788681655192570071804074598688500260763627246614618514799217710814", 10); - mpz_set_str(table[17], "12840271923779161012362023610679191895140531269505260846570628796771298859403", 10); - mpz_set_str(table[18], "20548115208111910058272152820751651134506689438829448473059278499725406848389", 10); - mpz_set_str(table[19], "14073771305216179686338663031673579041085817872178587662397402004081466548333", 10); - mpz_set_str(table[20], "13219941232407496667425796549282794247891842765519607465499369099899098913637", 10); - mpz_set_str(table[21], "18204552199279958506336653343673291506079741563809223371746634352472005750653", 10); - mpz_set_str(table[22], "18626223079267935096194035064030472731715594266969450398370618589712016167185", 10); - mpz_set_str(table[23], "10110268722853574487780406783538284371808370244403645386850820780451748844582", 10); - mpz_set_str(table[24], "4346346756930467159444621652769162319531926581718261690159687638253374942385", 10); - mpz_set_str(table[25], "14688175027282253884378419588624911773077580306143678671700907543443280367422", 10); - mpz_set_str(table[26], "13752713808876322463577872240992761807109066269294845721398393931142717144357", 10); - mpz_set_str(table[27], "6287433609528014121110982752683173229279511269211206698315472803509822189095", 10); - mpz_set_str(table[28], "18885266426395519080949431678122133331901594351690199604116272680955650358381", 10); - mpz_set_str(table[29], "4397095009026172161718114572112466940649154554219936020208951320387153221836", 10); - mpz_set_str(table[30], "1636679318348535354406811409644190254695155426589959637792501050388367968533", 10); - mpz_set_str(table[31], "6045362009124980420721878937399849376037622131458142857123588639292698397008", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=43 -*/ -void EscalarMulWindow_e684630c27bc82d1(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16868424585950443164167961595249842310394768842524058680821397465715237078422", 10); - mpz_set_str(table[3], "13469605623336401919277411491989737457586432846632404104363430941889579430040", 10); - mpz_set_str(table[4], "5643192289783613541492335245459958457219080118959071624407680008476345563905", 10); - mpz_set_str(table[5], "15240871288722266231269940981572371229064054921164118653025676497002265904966", 10); - mpz_set_str(table[6], "15035628225327978120938559230666779734194043221229825814342593400264078590039", 10); - mpz_set_str(table[7], "1251884969097280329652760118318800203768878648453025276295791059521598247300", 10); - mpz_set_str(table[8], "1699932370279535150438251664289841801595764750938415617442722746564888777697", 10); - mpz_set_str(table[9], "13701622976582581018113030761401213478445108136797667122483584523425622719875", 10); - mpz_set_str(table[10], "18373025158868026427597340437438471626969327053080751886183152715350045713493", 10); - mpz_set_str(table[11], "10520297404632996149484278163172792833592428348950663009672001557383667940961", 10); - mpz_set_str(table[12], "11239722570657638882071847349104013664977783536682673447616479473318427488", 10); - mpz_set_str(table[13], "12006002656745879272977492507231887274693978835865855329047391265225883250341", 10); - mpz_set_str(table[14], "14434000709848329936623811299339195492571122619211660652519374301307752629403", 10); - mpz_set_str(table[15], "15852871632838075373291692443081083081819702186507978563236260236107328928554", 10); - mpz_set_str(table[16], "20597184115028219437082729766105743338146613662234305634378939463830392148142", 10); - mpz_set_str(table[17], "1245829206776252932053761235034509701390992797593773353291677440533486148901", 10); - mpz_set_str(table[18], "17079330057571769415442490216644367208114046384039823297526628170141464068422", 10); - mpz_set_str(table[19], "11505668642665180770732571612427865347138736860208769311006727188120772373581", 10); - mpz_set_str(table[20], "19449247283899615663328685962241331736336474772120809821655136184994679690378", 10); - mpz_set_str(table[21], "19184926075196842752627618705711102374424404967439967584810552676634519172175", 10); - mpz_set_str(table[22], "19254758195827452917289113769963420403555358815998850368652570793499070216132", 10); - mpz_set_str(table[23], "14215926209462692197182203676316645633059342924694262094626278512681873241689", 10); - mpz_set_str(table[24], "17883462230785397065183671788255948626210388219135348326261224755755423726953", 10); - mpz_set_str(table[25], "19660971719736541453710960233791497670698845667936886412113109272059138930468", 10); - mpz_set_str(table[26], "11497121381445734450263969996519847669244971728461431077339573809205249899743", 10); - mpz_set_str(table[27], "9468198604931472923284206335059174907307749251925517365211859898875806124453", 10); - mpz_set_str(table[28], "340230207720899104157788240826165612093523123877879767031973995346901073931", 10); - mpz_set_str(table[29], "19057121218095803650400648929659753124187772464438058898218944667456287466444", 10); - mpz_set_str(table[30], "10202329436562641892251890658312974877250491731172132313155583558932102215713", 10); - mpz_set_str(table[31], "3331808326978303271090114835766082600669263632107482517851974894821310880697", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=44 -*/ -void EscalarMulWindow_e684640c27bc8484(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "19198320167181649080151960350514348849249604859599611351928290714146318824808", 10); - mpz_set_str(table[3], "5336132696748869536861038294973547567357683612637241398987159788547232480350", 10); - mpz_set_str(table[4], "20104536688144907148396838691869613403751777878928417537897808074633205806634", 10); - mpz_set_str(table[5], "21321507292368377242638596755737007251437128946821282487099734532797338729096", 10); - mpz_set_str(table[6], "21132729298347053836323123477559443403741222056884387902875533281339992486014", 10); - mpz_set_str(table[7], "15604974489107531936047999892976686179957949008842506965238339472992162050860", 10); - mpz_set_str(table[8], "10073089368474400769142464369740977417099995973289261881734081551572023575121", 10); - mpz_set_str(table[9], "13558992091486350175170150373846875116802211313968334151084766289553357824732", 10); - mpz_set_str(table[10], "1844602875495871191265120085744337256300770950205562622915855495095877578746", 10); - mpz_set_str(table[11], "12075935930232513447726071931338021431190375109799395879512946453492139984518", 10); - mpz_set_str(table[12], "15856916537291627080686297851713329678994388106571217849795529816243917143038", 10); - mpz_set_str(table[13], "12815855031925801078096601215906267192821703882277196886338227981826360328020", 10); - mpz_set_str(table[14], "12757198154355723152167860064472796117437993324503356931058749667538266344611", 10); - mpz_set_str(table[15], "1482189199946983619590957860996638884985282210679745993134467669621861356144", 10); - mpz_set_str(table[16], "20010084950193100242248031110568527529171330778871171641928669908185141250079", 10); - mpz_set_str(table[17], "20645725020427167151843153928487062134164091033840658610265074618643205922966", 10); - mpz_set_str(table[18], "13059318330938147303907966652108434130705282008827169374839689137299249600092", 10); - mpz_set_str(table[19], "21051541777078238027670014516018147174631139407686774292463930367461762201050", 10); - mpz_set_str(table[20], "7351784653018553553470648570709573042878527767605002111433745974483464120179", 10); - mpz_set_str(table[21], "12321132428505695916648714611341194802832212244297917631957487904975884633898", 10); - mpz_set_str(table[22], "13569544997913770138664232938933308726112164936038236896903323006739493381900", 10); - mpz_set_str(table[23], "6510900182517216186300768327734633930164742309630349160535774541329697634582", 10); - mpz_set_str(table[24], "8864994441518299577266360218083192325922558202213628226801943360408405958441", 10); - mpz_set_str(table[25], "7493854544599842249431688286284274841072457349257740217334761851524207371089", 10); - mpz_set_str(table[26], "3455045041980678081421131853169159540116546418916081294928955235769611260849", 10); - mpz_set_str(table[27], "8415922586911094197736735759223237608885611732143760972535278272858812689164", 10); - mpz_set_str(table[28], "9839140415712740795400814646739576312673712884005889818039490796293020169724", 10); - mpz_set_str(table[29], "6347425921934489673463449271431178581378489622675004748014472303079191971451", 10); - mpz_set_str(table[30], "3352181008318470761972202227154220969108332398203486706581213694965650539844", 10); - mpz_set_str(table[31], "20011493695391395143579367726292923504362505998799961847086220205609368987595", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=45 -*/ -void EscalarMulWindow_e684650c27bc8637(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11358203158679440839935038204013542841444958733645789654091304202677211020517", 10); - mpz_set_str(table[3], "10198375248299371418004463621339765291702464637799525907976734069670590655959", 10); - mpz_set_str(table[4], "5640771103795071855015547063208043052064880653839989538145511516119420803061", 10); - mpz_set_str(table[5], "3572127675729934348781073782829417144601311647810868308081890169524342091591", 10); - mpz_set_str(table[6], "3165075507482898381633759142613837711480464559664825190546043626859869623447", 10); - mpz_set_str(table[7], "5276780632252137403354566093549182865729938812613361642559946552387581479862", 10); - mpz_set_str(table[8], "16495082045267630987985070056382982718559132442826550073368742187679233640995", 10); - mpz_set_str(table[9], "17976454385418689913839483092280414154384043428551314180998182793825639592932", 10); - mpz_set_str(table[10], "5585913523717147043618482967254355301828513592438860997642329456576138560820", 10); - mpz_set_str(table[11], "9587426722227767872790157139872934784974708541382452144151293179823325143811", 10); - mpz_set_str(table[12], "9277777044327580246057540998635414522707517795801777248881733756912697646965", 10); - mpz_set_str(table[13], "4437585467808519461207095406946958910034640752454219401797599599065002133559", 10); - mpz_set_str(table[14], "751847780409285199923110701213588945728798631708400042494020281294558475130", 10); - mpz_set_str(table[15], "9777866444546761632260268862719640620415675321379368902037912160462418297689", 10); - mpz_set_str(table[16], "12025212247424298102865482411172201538090884360506135875235042946635312383946", 10); - mpz_set_str(table[17], "7402444178642141157174580472235595011966536638910653511125739975139386608583", 10); - mpz_set_str(table[18], "11077731909763130828580011353442158304410957031086422747542512675250106767239", 10); - mpz_set_str(table[19], "7844852735812537631556651673190091429543504802814562764576498573313933797496", 10); - mpz_set_str(table[20], "948659922679101300341238221811262354366513868059452722896954601390660202871", 10); - mpz_set_str(table[21], "12774480570138819462045922798913038826976096893913858712521740174383304302855", 10); - mpz_set_str(table[22], "3467933742541424586567545259962148279890118948071815506091221764633552743023", 10); - mpz_set_str(table[23], "18800846024966972681253897780285096568965163806524351739213026162355352988455", 10); - mpz_set_str(table[24], "12983067540566413682341665751614486787140259398030718860719002157454815978997", 10); - mpz_set_str(table[25], "5908505150667581730701077560300826189281751231850627083233304213201014144381", 10); - mpz_set_str(table[26], "1832699544376630118021234138249220909456732396411586952668795176067799645927", 10); - mpz_set_str(table[27], "4808043596117940237263286910898845658903382348700548425183938831394434612238", 10); - mpz_set_str(table[28], "966145747230158626445157800238193978670477031055546985406113404674852526335", 10); - mpz_set_str(table[29], "10579293590209416225906178088867634727730465385697831694982611450832631288788", 10); - mpz_set_str(table[30], "21199107697994009541223315952344300422175838886921072273030074846165590478789", 10); - mpz_set_str(table[31], "16227136849799743735790973090087817810819231735325440686866669938917528842568", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=46 -*/ -void EscalarMulWindow_e684660c27bc87ea(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9294944581630152517843124312576277268647256541087612833551714268692410000384", 10); - mpz_set_str(table[3], "93672056031748289203536474675140068289956074372704276886242649048442656570", 10); - mpz_set_str(table[4], "8871750697402786393668101055548550955086899314109886591998352753413338344966", 10); - mpz_set_str(table[5], "20686189399915615116236555317071204076397525472971028390809600443444758189052", 10); - mpz_set_str(table[6], "4546527580698870950143854890355615765363148236303606104958401824319606177137", 10); - mpz_set_str(table[7], "6173834688588905753072963298940459832178926672289431068275659350280602917500", 10); - mpz_set_str(table[8], "2484940198811774992783100093847905916200606529318843366211314377361951244713", 10); - mpz_set_str(table[9], "3907631999468685241117409616828719878593509894077661203391632444263946380188", 10); - mpz_set_str(table[10], "19358483176580442416350166633807416680278184472416935213229007464139200253832", 10); - mpz_set_str(table[11], "4739164280695060706243371357353432811474659941594732086938791801188837688633", 10); - mpz_set_str(table[12], "25050751210504519216950112433488778262331723764805009408639058021069121231", 10); - mpz_set_str(table[13], "1107088713475466706449430448996317863352163121744440273934523705262804030126", 10); - mpz_set_str(table[14], "17466873334961865408477608701304229093543444811772056093875981173718523150223", 10); - mpz_set_str(table[15], "18121282831388052832613906728315371341921421295928751151579881839355310511850", 10); - mpz_set_str(table[16], "2135966305488332697696544120560922888383374984201569098709794000846014342666", 10); - mpz_set_str(table[17], "4160907728127256013994214572559259242541538050266008153036855184141316703646", 10); - mpz_set_str(table[18], "2854982808494848051723930298045091192593731892861910214052961227936906428218", 10); - mpz_set_str(table[19], "15986791942246127423403757257167237980680328107984202672799924263886369004220", 10); - mpz_set_str(table[20], "15923401052651001831849154219253941003751617159757475484595725044615762192509", 10); - mpz_set_str(table[21], "4941735005045176509184628976585185290914026067093562778961259676164158673221", 10); - mpz_set_str(table[22], "6058648167641552246107796352113321474859469675600353857354292269564005074853", 10); - mpz_set_str(table[23], "542856370170516615432638950168192613406616612171143498438742377098089313337", 10); - mpz_set_str(table[24], "21796440091850446820982409886350059877781511783715041674928916040694765178324", 10); - mpz_set_str(table[25], "12733558536444241144104445355979943699148655740292251276608809714469319887889", 10); - mpz_set_str(table[26], "11085242460563650113956303844211324604593296586029729705224665826567327503390", 10); - mpz_set_str(table[27], "11345440708653194019206856953966575200180167130894966604265511042902172370628", 10); - mpz_set_str(table[28], "3715847540800537955609773281654697422170457255342608910433148069584714669806", 10); - mpz_set_str(table[29], "20547142829526188047444920707550262048006044042697503497670695035919970130296", 10); - mpz_set_str(table[30], "15822361156221651879168883882947084959430889415992045845779564852479745608354", 10); - mpz_set_str(table[31], "17113442432094366454821058395274183679144022375251092890335599383390289585356", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=47 -*/ -void EscalarMulWindow_e684670c27bc899d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18925867776653597898422038321018373211496333219584331684158666888271208434971", 10); - mpz_set_str(table[3], "3218987821387916557569400428340125811699529866769304729163573933651914878718", 10); - mpz_set_str(table[4], "8042110227510899662844205947056386853316948854099671464788653555520747542923", 10); - mpz_set_str(table[5], "12731906060601865921301916966998910091952039319128382028941279883816625053811", 10); - mpz_set_str(table[6], "7846345453803135249143917326836475772650952196172957229177649135610801425861", 10); - mpz_set_str(table[7], "15030543581056271024825930849982048386393365865876798032560387300159292596607", 10); - mpz_set_str(table[8], "6328532818677424376956665198712048490375526760139762060113509932980016557001", 10); - mpz_set_str(table[9], "9339007355782143066310114962685698092508288029849139855301688874345564030260", 10); - mpz_set_str(table[10], "8346005780349696611173325295118244592122279978299179874154959759363677445244", 10); - mpz_set_str(table[11], "17941754841860109498373841044569507611544302131237505891419415025091331459978", 10); - mpz_set_str(table[12], "4397594159944001532493031321316588194265393562479813134930505439343511773401", 10); - mpz_set_str(table[13], "6502489071257704137212803667079996751056176175233929990078320988913452438277", 10); - mpz_set_str(table[14], "2864140653293198439198715045881994808714698256498989744801858973867014034854", 10); - mpz_set_str(table[15], "5993545009245160797926019334506027160142600946320582582422163341150343622057", 10); - mpz_set_str(table[16], "11939267480629275794982820275145852252172633902542095616667756869794066020007", 10); - mpz_set_str(table[17], "11585987427904323207209658297227332332495909277534484222520439916761994274203", 10); - mpz_set_str(table[18], "1952840790707188329727174116871428576263706682306246094918634512179991295405", 10); - mpz_set_str(table[19], "15372626835595841438549330136082999373390688878141810191912539285422161976536", 10); - mpz_set_str(table[20], "16605863176813990471768507331903239978375623989400064050415575871608641680463", 10); - mpz_set_str(table[21], "21202308481596801032495221662238909733053294920299401446372269062196694889423", 10); - mpz_set_str(table[22], "18464427162021565882891698662820462694315917959650566356700668417115007697009", 10); - mpz_set_str(table[23], "4726098062265344541475867966227022684014627851819457016716289431186464913582", 10); - mpz_set_str(table[24], "14907082382368850140278500714809163321627503509470220515303203944609951407788", 10); - mpz_set_str(table[25], "20268152065625742552586733170628638826524828369583760767378682928245751771352", 10); - mpz_set_str(table[26], "15038388697901410428116905776598732852090308019299859524541819082256970215571", 10); - mpz_set_str(table[27], "4041451710702442461175793560122447322421342376960176847981169858899954990935", 10); - mpz_set_str(table[28], "11212236402643727013934146887904689330416711614861470127228258008743702079763", 10); - mpz_set_str(table[29], "19678998786510739724425231779780865100663072652055904253825718324909326503357", 10); - mpz_set_str(table[30], "10479692091872153164360236840873839589008755183446640717074493849509424890935", 10); - mpz_set_str(table[31], "4197316437801067473931189858732214533522611626453051383043803663128161346401", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=48 -*/ -void EscalarMulWindow_e684580c27bc7020(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4745553688090187507702023815741546100773765747525046780830893542809326434269", 10); - mpz_set_str(table[3], "19609562688739457554746271151421097753584537371326387850382429597196054522455", 10); - mpz_set_str(table[4], "21468776539834690184343002036409916222791413452107961953141748321693148839076", 10); - mpz_set_str(table[5], "19463591723984137462865029270150969056994337740829720559513479618374214976581", 10); - mpz_set_str(table[6], "4777001384812346226304685383499714194384755515825778719752432299796061371491", 10); - mpz_set_str(table[7], "19958598804456881789336809870168505052627827412414498213931114388141531903825", 10); - mpz_set_str(table[8], "18316600951261063523041288549538056235126619931589179522750571984408234851019", 10); - mpz_set_str(table[9], "21442163574331265842363387478568754583646637602300808295398324114305120603727", 10); - mpz_set_str(table[10], "3008326846029307253603390514405429378530853066718170472774203817367860956409", 10); - mpz_set_str(table[11], "19218029447980020601315439948390656683594321568142618200307932063034071190544", 10); - mpz_set_str(table[12], "21399441267063536031003316565158482176374724980774583155264759223787147799217", 10); - mpz_set_str(table[13], "17030068272232494875209552956726416026472346550146665273817090947581885151817", 10); - mpz_set_str(table[14], "7938847958952814066160894258920675950384823606771905786105718865860677190614", 10); - mpz_set_str(table[15], "14592003161730215272638437036449503652637894281812839983001493046810483514298", 10); - mpz_set_str(table[16], "12394638385194835645052908348585901072862108291325484532332478048811593734234", 10); - mpz_set_str(table[17], "15949506939481186547288392965382366602496954712738621813791214254638093074390", 10); - mpz_set_str(table[18], "12078132328062331689780747358139226898518722653738016128708752058535602427355", 10); - mpz_set_str(table[19], "16622842011121394510041430193700491686849786112601385240075541169633355826027", 10); - mpz_set_str(table[20], "14418498040868724253295984446008273039206749541013731457364637800721233141721", 10); - mpz_set_str(table[21], "8885217258482159210670047413691057636290416850847152092605348659600953807157", 10); - mpz_set_str(table[22], "18182408619148372561407741713336729741183829746643879872707192041988015883927", 10); - mpz_set_str(table[23], "5960366158035834487189075733401220480500280361532439028333310348520613227959", 10); - mpz_set_str(table[24], "9536745880217079512005277936204810244230167360819153313604182860623081950866", 10); - mpz_set_str(table[25], "18802774000780485190864845422997581925819216302286348207093233798037998964276", 10); - mpz_set_str(table[26], "18712641710803771484571345263736048885500750782406591660334370943834811628505", 10); - mpz_set_str(table[27], "5006458636478942442891235124541878873877472533797849892904695562259131513852", 10); - mpz_set_str(table[28], "17858138530514393971276168677591018538860356721043051209528630610531361989259", 10); - mpz_set_str(table[29], "20990700251448981181714193146492436390445011629441867101428989866712869247698", 10); - mpz_set_str(table[30], "5978738552467007029506876463502560968009761893423673748084849551676240115740", 10); - mpz_set_str(table[31], "6095294971059226952244252728057255767291818575745271857446258195154760603452", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=49 -*/ -void EscalarMulWindow_e684590c27bc71d3(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "5129674555358910333866544510712603207414512773946086316287835556618045310227", 10); - mpz_set_str(table[3], "17456197894656894624440439810423174870837684249303341977565687035335788451978", 10); - mpz_set_str(table[4], "13825373671386236957123187152453795460025370237097837083427491763550190231938", 10); - mpz_set_str(table[5], "15859226986220524334910175664115258425657666076465556206854244479904756933206", 10); - mpz_set_str(table[6], "16821114763756400814167553774518828069763988192861517508786610458716027534274", 10); - mpz_set_str(table[7], "2096784699013873957503723814575727088961449762347379793041077601682831222138", 10); - mpz_set_str(table[8], "11007541089685757122438826774111649860335908504124917414999208367001736173716", 10); - mpz_set_str(table[9], "21834166514679682493595291712099334235356879390098479622972267688068281282645", 10); - mpz_set_str(table[10], "961294528390187738640726417394026428744384202707949561589165356950566623030", 10); - mpz_set_str(table[11], "4843404761746040450878112712248048946192329836828011081099583716631665199735", 10); - mpz_set_str(table[12], "17753610332565385342233700679016857096732927677674079299901048706502023344323", 10); - mpz_set_str(table[13], "7340737830761819778932240368702542344398303914533989887946929098579704241381", 10); - mpz_set_str(table[14], "7485711199499041280583568401235747195782463526779526999436153673339775539811", 10); - mpz_set_str(table[15], "2142031401968400929503510506809717682807299048321716777515378017925804172613", 10); - mpz_set_str(table[16], "20360726418211144063687312297130206754517607649513487097949783496378997928067", 10); - mpz_set_str(table[17], "10084495929941453632660314280175724975128971466274072816113016220485118106704", 10); - mpz_set_str(table[18], "16439750268193993850122913059536089086005993049484072354058446664310560915791", 10); - mpz_set_str(table[19], "18846478280944081835687070220388531405254463099766114703812851236032096883527", 10); - mpz_set_str(table[20], "4420942263256394637881355812401884942112634736955530771971988030203525903549", 10); - mpz_set_str(table[21], "14198693842034168855892704279336338486109495341176916748522962058077327077065", 10); - mpz_set_str(table[22], "6041555813882714115066197562820868826774723322620254360321098473212143665585", 10); - mpz_set_str(table[23], "20748515536378168545350875692420036778051051407959125779163633648695901864806", 10); - mpz_set_str(table[24], "3644905067853954991416835522909416617631364637345433980323913806222873092466", 10); - mpz_set_str(table[25], "8116482129580703447499186401826280629738713931353688362576599939036715144760", 10); - mpz_set_str(table[26], "12184572798374118217666851631205571574428678303828319078921759522861829536220", 10); - mpz_set_str(table[27], "5346870201233526613855167264516405972670153375069773146752349231612576971123", 10); - mpz_set_str(table[28], "4503044147132047341559683630906041415722430212610331693856274032147277000454", 10); - mpz_set_str(table[29], "14765113222221426653718588860458742005060115956673138585327972871355018047961", 10); - mpz_set_str(table[30], "13996242313247674316783774317017654151358086460595183727726330855974642581866", 10); - mpz_set_str(table[31], "15815633097180063401484093329011216749926764774201041400881386018032709569181", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=50 -*/ -void EscalarMulWindow_e687e60c27bf9741(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "356945572834696926615570510880047483629195949303885973623175677442826897195", 10); - mpz_set_str(table[3], "15515798416120970741443867573730657238772249381184199038638634647167929173535", 10); - mpz_set_str(table[4], "832642174284427733895074363837746033272509581814828935308160823330753714463", 10); - mpz_set_str(table[5], "1473261066677183491771144322436621573732818079048241277449788630674565611900", 10); - mpz_set_str(table[6], "8954798224153025186636493079655666312025175213148020988167609560533032985272", 10); - mpz_set_str(table[7], "11317203273451437978149912745313472351226626087079539570080325116221994621676", 10); - mpz_set_str(table[8], "11908636934537370872492311580668613787809336406362454440099232369794929432857", 10); - mpz_set_str(table[9], "19606250250980128429595119739035077802558826537878584374443023267709744215302", 10); - mpz_set_str(table[10], "9375002237566064668961915118549135231559875713369097582496716356262904267756", 10); - mpz_set_str(table[11], "6216839341735791600469640136991703539765543721181114957009765204840307468412", 10); - mpz_set_str(table[12], "422468318749508664730905822300162999604953333967669911245808864865179063583", 10); - mpz_set_str(table[13], "8233084568263698715114660619479071654556380128603486196496844237684644873671", 10); - mpz_set_str(table[14], "5694591125834772832968116232550788815559931203905362730608967633118393299046", 10); - mpz_set_str(table[15], "21449211136879912548384968972403945873677476655516314183078940127417264014254", 10); - mpz_set_str(table[16], "17512803248375863232584804418005928218053610165446233041192950530548150969857", 10); - mpz_set_str(table[17], "20970384927135135941687793569693311541411703622145982015545951879751255646464", 10); - mpz_set_str(table[18], "154889066770802792391318666804657200371892210382303806766709161140067751026", 10); - mpz_set_str(table[19], "9705435040331948880519431288156146645199776712226298776273908423134502262195", 10); - mpz_set_str(table[20], "18412805425507630721135238407391653444148829190638444828973229501553224696922", 10); - mpz_set_str(table[21], "16893531972151917966888615294962601036490237639324379686364106235785700640303", 10); - mpz_set_str(table[22], "1317401904823605427910400257951780642039212475651110910269419801589536775599", 10); - mpz_set_str(table[23], "16505773986237007368715261394665638044499970155648420529516963732557470428323", 10); - mpz_set_str(table[24], "8139968496928242412844146884705229449311856420430645899800031288037184971865", 10); - mpz_set_str(table[25], "9172089602192091064006425681108151046320037236029888112895349728960657590433", 10); - mpz_set_str(table[26], "1558032307708944983647563677197104762903609359323139614282143514635814650419", 10); - mpz_set_str(table[27], "108126353126877145067960721589823393151792954035779397604624454131714033618", 10); - mpz_set_str(table[28], "12485126681953627001133895564260325838574600045977614879319337315684519899450", 10); - mpz_set_str(table[29], "21385061428633652004442771474887342534304453310026440257138019892584855431206", 10); - mpz_set_str(table[30], "1104551878118863962464190204566347212682779710112472119871324595928956564039", 10); - mpz_set_str(table[31], "15322932262357902431853327773068449583766349454217947210944136035839911650447", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=51 -*/ -void EscalarMulWindow_e687e50c27bf958e(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "14280928984975544235433788111012728263225783186552988784282081030665290420523", 10); - mpz_set_str(table[3], "20803635230805303161820015692911208521977759767082084103923011086509766582526", 10); - mpz_set_str(table[4], "10341028774939699727227651400240331703049296664055590045013471804959465786518", 10); - mpz_set_str(table[5], "7604309484420118988896740306670521247149108658132603629252881595201679349886", 10); - mpz_set_str(table[6], "9011875625266167138886678377254308440953754721748313729517181381711252934780", 10); - mpz_set_str(table[7], "892322513592344300444119412785365605053716652232823131000105602243432555880", 10); - mpz_set_str(table[8], "18486175949748153317629598867893794483922649269618407497539525894165813765578", 10); - mpz_set_str(table[9], "15840162634917903904113833356358469023670783234642294558574928095156668664864", 10); - mpz_set_str(table[10], "2968909390657183778688654473764673250969936744964824221292316503234824888918", 10); - mpz_set_str(table[11], "21020860943834605053283990952095154232387251966871868120049490891452421599914", 10); - mpz_set_str(table[12], "16781597910611118553192257714323688960583262818916976097368762397000693644162", 10); - mpz_set_str(table[13], "14074475193476068174324882714224760919965016356864658494871388335588833555770", 10); - mpz_set_str(table[14], "14593393677635072676617432837077382959343608021960142837585439912159877318586", 10); - mpz_set_str(table[15], "17999639659322268175710363786435525605798888247806857271633109979101610319087", 10); - mpz_set_str(table[16], "11833691872543782351719487670127207596043371024551952805491858070633988252718", 10); - mpz_set_str(table[17], "827504421172078168460799924356606559249685654857689629151968334671864388396", 10); - mpz_set_str(table[18], "7327284626811840585486315466861402446210241033289844442278534330826668701923", 10); - mpz_set_str(table[19], "9446224232223888188424365019967292594376256441030224073350543821207427024323", 10); - mpz_set_str(table[20], "13485161518145036927948603181263699993625035428037167999804072920201939236164", 10); - mpz_set_str(table[21], "6764710206523464093897465546323177021905133113339759574454899318266861301323", 10); - mpz_set_str(table[22], "7265307570039676523364470649635716794801234804159593051749458469314538232694", 10); - mpz_set_str(table[23], "9091371587973716344157827951828360926766196510458042851950677490155899092934", 10); - mpz_set_str(table[24], "207972438327396317570644659247454825459364371949145337333304443527831822600", 10); - mpz_set_str(table[25], "2227449218622024215844365463100754710658379433800634186512830160789605596764", 10); - mpz_set_str(table[26], "4101443514515101630727893037847810918376053050454305214577510881644101664646", 10); - mpz_set_str(table[27], "10224825037826090291865824383714110036793921487103798001423704215149860382305", 10); - mpz_set_str(table[28], "10356014205682705325581914066923383713113955825325777240430811318239223761641", 10); - mpz_set_str(table[29], "746124427280968361675081285616412061887402150096170656125670471657521775708", 10); - mpz_set_str(table[30], "4364259151027161509853916728690649755157399097864479478675423032959389732547", 10); - mpz_set_str(table[31], "9895251962405943175374555214196920216782650156701257939151053405890602125683", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=52 -*/ -void EscalarMulWindow_e687e40c27bf93db(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8195505999488733718664564215184512117460191150885626226602287026423445188485", 10); - mpz_set_str(table[3], "20748904396461048596223756392836227939261463952108020374122647419585596160244", 10); - mpz_set_str(table[4], "13297718493728489512143558871738836489949094398997161183406015376909602072918", 10); - mpz_set_str(table[5], "20977334272530646620093609531103197424958362428113878463224701582600748588396", 10); - mpz_set_str(table[6], "6678468228559943937212472189307148084375145367707288284846571643298650239712", 10); - mpz_set_str(table[7], "8523850808856375009216404940087392615910035813609925985738778432610393564190", 10); - mpz_set_str(table[8], "16247763274735072728635353552943402983967865120388751649617232487272397091016", 10); - mpz_set_str(table[9], "7033000445747619285255127530314728037005956720945434696816460770583323430431", 10); - mpz_set_str(table[10], "14010257622472940218182231730036072883858518649499224088801502122075792166908", 10); - mpz_set_str(table[11], "10568306917869125738735759284450755394124164897594809381776856302299061706665", 10); - mpz_set_str(table[12], "5794589017119491576168686056711899606507420767604610061421262216428980664971", 10); - mpz_set_str(table[13], "1264601947765205345639385384931496790962530627941566000292525283568855082752", 10); - mpz_set_str(table[14], "9341618850216116773817344073815070610994999966095649784121562589699541756819", 10); - mpz_set_str(table[15], "19486443877025115139492919401587399458409420527758104336020010053229119860899", 10); - mpz_set_str(table[16], "8889198622664195119315601666524731832527180285480910657832154119008317088242", 10); - mpz_set_str(table[17], "19565288086870899427209207460740623234291464069525635114464706722187751773676", 10); - mpz_set_str(table[18], "5229961970920875159515142626305541910253943137553663313914030011649856517521", 10); - mpz_set_str(table[19], "15885776378302400170554921402587629381162570281691316160863422359601356317610", 10); - mpz_set_str(table[20], "454927959401449134020484951213183401811548949764629487079876896903845246381", 10); - mpz_set_str(table[21], "9570190056275612236720586411716321005397705228925442060778550692247328778183", 10); - mpz_set_str(table[22], "5744100191856671929258343693553952141340781799150267424446754532422106737880", 10); - mpz_set_str(table[23], "1025339809009485679448716540122393637600680952555183879879449993617676863812", 10); - mpz_set_str(table[24], "20754719332774039520489599562334323874570285038751296979349532717637588392326", 10); - mpz_set_str(table[25], "4336414223419751165273790265725817189110062157879020511035728356925593631890", 10); - mpz_set_str(table[26], "10330995937677011402440638390679744194302013369990278268741538221961723682713", 10); - mpz_set_str(table[27], "3940161175409442224774181820161075490227232668741299179448154240869209393549", 10); - mpz_set_str(table[28], "13754301388177867405709297680038869592970975496146330571761951496121332720956", 10); - mpz_set_str(table[29], "19867853529037018530112490105266170661265921087858015873054564165594718524951", 10); - mpz_set_str(table[30], "6182042372722969231948462243384512823383124243452645085144869784853782735622", 10); - mpz_set_str(table[31], "13818263682550949588597550397952143100537899046460182714602409969042744556067", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=53 -*/ -void EscalarMulWindow_e687e30c27bf9228(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "10102802783420398911471770902646882179920114873273307350556110482712606795655", 10); - mpz_set_str(table[3], "17465845479054984846669589379063049283449511919485812019742992007415587499800", 10); - mpz_set_str(table[4], "14897526986327596282016960589817289099608729336244988423326359963499288579051", 10); - mpz_set_str(table[5], "10847964300354604511441843308946109551665320843198538468597842956490240255238", 10); - mpz_set_str(table[6], "18614375400151574305454505510340646896798937019784982882259863253657068964826", 10); - mpz_set_str(table[7], "7246732600718934142726622868596333232370607837099213335460076137209906864499", 10); - mpz_set_str(table[8], "10509924577789916854373592141141939331597804882787286265628232905987065377183", 10); - mpz_set_str(table[9], "5295167780681710981039034287719494543059367151427001475194034675856218024657", 10); - mpz_set_str(table[10], "9500463425470432144020710094281955081042921989710196649207358448117657822089", 10); - mpz_set_str(table[11], "1935916851529563434776145128319199849558189750004624817367534814411499591888", 10); - mpz_set_str(table[12], "648050747977522730962685318959406768200545384749002300202716704424883503949", 10); - mpz_set_str(table[13], "4303000944133242188515776035464931074581530142711302456647526034844042163422", 10); - mpz_set_str(table[14], "18754532141554810445730308486976315675378894943773970176146886152381934169945", 10); - mpz_set_str(table[15], "8352495426468697529139075268178129388925303878246618040592373332952153122859", 10); - mpz_set_str(table[16], "17073120037899157137694810602790754900342410307475199858780196947698288512021", 10); - mpz_set_str(table[17], "11613508876811598094128255790753769221366090844594780568076630111003749489327", 10); - mpz_set_str(table[18], "12611361250381361971745832652364346810809532298112742921908261010832782942790", 10); - mpz_set_str(table[19], "10805314462160327703667322080969534763197641624181796033956013238861644468194", 10); - mpz_set_str(table[20], "14727791428195234098747751201790037614610198861719787436559245725642865596009", 10); - mpz_set_str(table[21], "5563245753251368429384989862712466566345756003030328931993297545122937779627", 10); - mpz_set_str(table[22], "135814189051522742306893202039835012327733571057611919329717170240720504635", 10); - mpz_set_str(table[23], "4076118281574231132341039860922775021687907716101427842532991467161130795126", 10); - mpz_set_str(table[24], "4646086378037220549681523488106871648714671183367484595487541550330731303747", 10); - mpz_set_str(table[25], "20197661751126391596094026975633509376250634967965199074570850431134340690857", 10); - mpz_set_str(table[26], "6760925334754190677383122617365795576913847047326357274566382805799304451939", 10); - mpz_set_str(table[27], "5082641574416400319506253738116923237102014923663654861590846623545756307972", 10); - mpz_set_str(table[28], "12550048533737735574982484168535420787782095801996915900511935038244822939775", 10); - mpz_set_str(table[29], "4924527113683973404137803459094677927775249665822479711814943651246295631271", 10); - mpz_set_str(table[30], "6389974496198213452930906098990382688258021311235058905688594163862655648495", 10); - mpz_set_str(table[31], "19215614795500220211516490249126830668092687021211974370533233852706858122463", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=54 -*/ -void EscalarMulWindow_e687ea0c27bf9e0d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15119220930574082489683236226695313258143009576587043372247540506496303779873", 10); - mpz_set_str(table[3], "7652757383269814958081642137897211894804831762208990890776209003954309655365", 10); - mpz_set_str(table[4], "20409516496156208258040242441029671106045775902542782605049859520582390389617", 10); - mpz_set_str(table[5], "7888896459032628924745470612790312478723609508983153262721154407728556748707", 10); - mpz_set_str(table[6], "20678962188901970060029001880893644390760685402573618268211544658654543820899", 10); - mpz_set_str(table[7], "931124264650880986228386417805864160622400087760765659077330602822848145970", 10); - mpz_set_str(table[8], "13750866558797646927355256022812622278972997777820829132528210439239062308887", 10); - mpz_set_str(table[9], "17167748554535311622530861571533954598031599405504523534161464468571232550679", 10); - mpz_set_str(table[10], "10959425746653246003678139790042419238673902308287208494857430250191316276211", 10); - mpz_set_str(table[11], "3424702027279767931912421789144364450647891929290151122876644430879661650642", 10); - mpz_set_str(table[12], "14038349191291580196777205214263941996799980335874997845898133272696998952003", 10); - mpz_set_str(table[13], "9683076491131406177128075477495545891734593803851355591821977024833857990311", 10); - mpz_set_str(table[14], "21171015062148638324241870142681640512854649593490752420387944016905988513076", 10); - mpz_set_str(table[15], "17834909498736929997653575097825551307570381694504740098531673529157612918911", 10); - mpz_set_str(table[16], "8319721735894765689585203698338576523487228238399873911373568451335475226945", 10); - mpz_set_str(table[17], "20810824366644647228335868831886125721626758866923913118272888439412694159653", 10); - mpz_set_str(table[18], "9393048461973786216111642720665238868434210188416380744703154244347561738547", 10); - mpz_set_str(table[19], "19820741948653326551246849339428358082135398375822993707640011208019653459925", 10); - mpz_set_str(table[20], "4196473057604869870948742394762004738539112554385729257113542588579476754923", 10); - mpz_set_str(table[21], "5647922524718931046590738053717565420367317130549069073552302419587329677254", 10); - mpz_set_str(table[22], "13652224550118353360178877008019040220304940965123454296785437848687548430569", 10); - mpz_set_str(table[23], "11030218429830883758666266567706954590250556704738291716259534828310830141060", 10); - mpz_set_str(table[24], "21642103764543686019929814569179062011391001607748241503620790279684600237099", 10); - mpz_set_str(table[25], "2883611216451225361483062875909676098915866268523608783698187590698789099798", 10); - mpz_set_str(table[26], "10670530854358342012833035338425394536459148241262702206220811060707282717228", 10); - mpz_set_str(table[27], "1798670739649413803730087803605011042735503518898125273049327382389240761002", 10); - mpz_set_str(table[28], "21662261493815889954745782413803348043549864381782740044369986606265800202571", 10); - mpz_set_str(table[29], "2814288324824291515794653361119536715595489300556429712206761170403416831466", 10); - mpz_set_str(table[30], "10627906261375744150056541707363220476246388830746065733118968706643704295607", 10); - mpz_set_str(table[31], "14157053269997483574926592591878018326951387365269277410947671912488651160873", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=55 -*/ -void EscalarMulWindow_e687e90c27bf9c5a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11193261769816812274896157499378832033321889327052022291944782466698101329803", 10); - mpz_set_str(table[3], "6285197227440160672576682420161914205141988663414866017388090212011766241989", 10); - mpz_set_str(table[4], "19551510842230142901551991949090142143663606820882289456657880422327154418457", 10); - mpz_set_str(table[5], "7887867601428723430609749094007906155723954393283939475781132619959543465604", 10); - mpz_set_str(table[6], "19547295782014382457332736332679717738577497113111057184589024686907246719934", 10); - mpz_set_str(table[7], "15199524570826738256499698221009578449624617498429407458151654201437167425018", 10); - mpz_set_str(table[8], "11669147499202722074160716770540961052396151941505502496018517883453813078940", 10); - mpz_set_str(table[9], "15165236107733725485613441486147576182383857620503421715388849184583700860478", 10); - mpz_set_str(table[10], "10923223598244238494302097512489049179827141111772530758560279275852845214105", 10); - mpz_set_str(table[11], "20317893352350167087983403794344988939508940235852819680219246896165952952350", 10); - mpz_set_str(table[12], "11323832859000476054261269521669262784685690411424263134316531724555335360816", 10); - mpz_set_str(table[13], "2232840046560229178189959666751419232569601020082219969451420724106590188687", 10); - mpz_set_str(table[14], "20336745559402080500183897166586317941456396618153350337861838249874694184364", 10); - mpz_set_str(table[15], "17218948205563012813205924342088836178590479068722789312390354259054457966638", 10); - mpz_set_str(table[16], "21718248449324142394151982854555121183552909936437838934606761060068666646392", 10); - mpz_set_str(table[17], "4532024589865671348760802917624756386370293099830694991376078984312928173404", 10); - mpz_set_str(table[18], "18059692774830119066127389641544971833267222114418067345125323743897263977275", 10); - mpz_set_str(table[19], "10077367640023407804742987978503664027642588310520607622253058953940785897164", 10); - mpz_set_str(table[20], "12704875445261458412333901113563981398868868961574934087835931414775005840674", 10); - mpz_set_str(table[21], "8647478968182259244997342192784710625550754158844580105199206849881925573202", 10); - mpz_set_str(table[22], "9029947690871937912133711721079394612909747395577149828772984119717530182725", 10); - mpz_set_str(table[23], "7537094500387747067988083006225269543909837441462705148655761119929858342496", 10); - mpz_set_str(table[24], "19121265715497029891712819886230329501595482479027694519325180623066498194166", 10); - mpz_set_str(table[25], "818841409130439808704038136282363332045886503331059225323332346472109239677", 10); - mpz_set_str(table[26], "1221272865590120864616815236961380144423320982687721715352737026802621044352", 10); - mpz_set_str(table[27], "6245982113024300759153453204720158066788302630889512521176417758248767946351", 10); - mpz_set_str(table[28], "6597761425718694778636771957115669277553519082894938520161646181732420763335", 10); - mpz_set_str(table[29], "5501368416423354448081131239737756323482290813063063148122763629606538639816", 10); - mpz_set_str(table[30], "16304212579457534271575714218854786165828853589241892180441678478380806289729", 10); - mpz_set_str(table[31], "20980086410396256429010032811348534213464624695177382077632346926796173970946", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=56 -*/ -void EscalarMulWindow_e687e80c27bf9aa7(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12966528504411800327976272575744574866000502317784213861020508528811827147309", 10); - mpz_set_str(table[3], "3972920327658953868135148945943394871013837275215164742420294893227796465966", 10); - mpz_set_str(table[4], "11356822984582670769709816985144140434343265784974623719578806860245905069468", 10); - mpz_set_str(table[5], "15667877850885123538834216745380336949953013043787083653718147998560427148462", 10); - mpz_set_str(table[6], "17086151647604401248656131205631596249713616472302888332961322655522976193252", 10); - mpz_set_str(table[7], "6511318575678692842343960760286291761888971136486300884056609384653970909166", 10); - mpz_set_str(table[8], "7933757241437724314201927525237345715490236944552702338857050688999173162005", 10); - mpz_set_str(table[9], "7493555517090366941339222624333386045125645124319796842444421351227808830085", 10); - mpz_set_str(table[10], "10539099381460318045416547831072316627370377436317851964811916323930452730367", 10); - mpz_set_str(table[11], "1285159358230687735272168933160229086780410291192801756039374502085982564028", 10); - mpz_set_str(table[12], "5779660668234198741147837139128884496798394462138732527944663066570946492826", 10); - mpz_set_str(table[13], "5945340872795091219076248327622136368046272060377343207060316699148095285093", 10); - mpz_set_str(table[14], "21304707265654324946583778387514308418645169066554423847972439129449184396544", 10); - mpz_set_str(table[15], "10139555092486229281910431099712433649235636986517355395993698512126372125244", 10); - mpz_set_str(table[16], "15604424570959225066514586884368622716281156386113677620704269240160822600833", 10); - mpz_set_str(table[17], "9561464419785165025521988059659848940248492067788178236918274938529008543134", 10); - mpz_set_str(table[18], "6044682926966806815502105668160269732250407345348579174046103389847963073110", 10); - mpz_set_str(table[19], "13478826323343643575903653336700556407184121335243787600667517072656136709010", 10); - mpz_set_str(table[20], "5784413260637211152964530367046753774907745669373268719150898321956708721991", 10); - mpz_set_str(table[21], "19215850042869256347115693993480276299614540613863927557477194629540148652705", 10); - mpz_set_str(table[22], "10839675093009088886088980269374119629423319102270823448020805351499803909244", 10); - mpz_set_str(table[23], "11145418467078256516832885613651345605791301357085718375483455970927494058666", 10); - mpz_set_str(table[24], "19128280768248258493482918359277346946061658678311745685657500317304913689767", 10); - mpz_set_str(table[25], "11870438762450683682676398635294075166761509813417492132665665014944485522294", 10); - mpz_set_str(table[26], "11368951640740504354889949721029632618381423429932064663695645729098763225766", 10); - mpz_set_str(table[27], "9578653442049481060800489332218879008204224824410248577455227231241652452947", 10); - mpz_set_str(table[28], "2076907718936880754481480009158365287164181391298696995575730576099162041561", 10); - mpz_set_str(table[29], "20086445323321926831602490529594362138162374885107125587704394601561797285396", 10); - mpz_set_str(table[30], "9090532219942090765756336604569035170499410286271339758762896951211649054434", 10); - mpz_set_str(table[31], "11536304173802722590936155600121702027608469856488450468668793264853428880510", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=57 -*/ -void EscalarMulWindow_e687e70c27bf98f4(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "17034248665295397220405585341860554916431349936795351485673620834775687604743", 10); - mpz_set_str(table[3], "11863097507194721354272655955956588052425393838156882866781640257142921727492", 10); - mpz_set_str(table[4], "6090077664410226726222877088355189006654158005030825412309730397176961493935", 10); - mpz_set_str(table[5], "1660692056404019005241775651421281573137910605192115645472716025992460677284", 10); - mpz_set_str(table[6], "4075586043359474439841947101012391631373681057928477829922564695989274985636", 10); - mpz_set_str(table[7], "19565250469309406233692308519297623230595244626915298963177420911157051104613", 10); - mpz_set_str(table[8], "16764819912006961458545170395438050352329993375996906668501247471672406922624", 10); - mpz_set_str(table[9], "4997320124825099579543632201098140610146535825141189483771855886225495814145", 10); - mpz_set_str(table[10], "11607963516245556750498785219758599712955042915638245701609837006611951691675", 10); - mpz_set_str(table[11], "2745380724541325406096968912226044001380746839002024891129051350082855883019", 10); - mpz_set_str(table[12], "18578811272340796339152937865611762481872723316542456705139039481163687738332", 10); - mpz_set_str(table[13], "2425775122854145386815938828931415327776003258471747598242708291495617929485", 10); - mpz_set_str(table[14], "6624190979490887753607145270599154442609102942489740594865769673982472987095", 10); - mpz_set_str(table[15], "16550735493976434121694085033134106858767024792868376739764392960414699925090", 10); - mpz_set_str(table[16], "2609185846889441899632451308921558333135507923791146141973623333983254118114", 10); - mpz_set_str(table[17], "3128388219312507797943733743934125881272287210807537710504178685046068424940", 10); - mpz_set_str(table[18], "1631419261593077055754270280622847363744903652300695125750830967401424446523", 10); - mpz_set_str(table[19], "15147896011056951490027572947548152626757975451655652481419024740369994757679", 10); - mpz_set_str(table[20], "5261032549199954715985188871499491612674243433210817703512867104812943299704", 10); - mpz_set_str(table[21], "15379701544662412922985153734102777907498119859009752431510905537719553613417", 10); - mpz_set_str(table[22], "15542900674859521460851566971797467423963604529330485784814714353791030458468", 10); - mpz_set_str(table[23], "21174190477648535421511450294582133644831703304157077597233258663234633574651", 10); - mpz_set_str(table[24], "20521721139420521276189128580979670607640236898205705568180292325094574601345", 10); - mpz_set_str(table[25], "6976056275994036729931351212815220394713764023388649843283648471634691420654", 10); - mpz_set_str(table[26], "647636496819107507992243397199505462496725688818073691089620783734095697572", 10); - mpz_set_str(table[27], "20395776713487040931655033291218280370083125973922809764582104216169425231675", 10); - mpz_set_str(table[28], "3546122781595532492764733250051292210638959659269150010342239694731215975323", 10); - mpz_set_str(table[29], "6199886119535540361773626066158702474449599794105186680124520304371563609288", 10); - mpz_set_str(table[30], "5166330174073572939309093846170185403393681986590142698387793551634131658057", 10); - mpz_set_str(table[31], "11512936838276345379224546846186531767031582084192422933847584006283272950168", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=58 -*/ -void EscalarMulWindow_e687de0c27bf89a9(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "21840141749610387754774432797908309732309863121581275191202770640817754098298", 10); - mpz_set_str(table[3], "16121115176401552416225504359299555883216331214787802615953368580708969452949", 10); - mpz_set_str(table[4], "20479748022130457249287908385155084683315030457488003901691751187243928830015", 10); - mpz_set_str(table[5], "20436138116689734655301941926623362885780775867653553646933875694389266930849", 10); - mpz_set_str(table[6], "16252559098422301812043927829353321451275573400198182034048789776047282935847", 10); - mpz_set_str(table[7], "12651954987463682013877190517656057321600847395042902498636704295230659032998", 10); - mpz_set_str(table[8], "19536244689743357034001457944585084875535151491880762881216777352371097461782", 10); - mpz_set_str(table[9], "11272692943803020755510133503676768476644826907872522118804751620144214997832", 10); - mpz_set_str(table[10], "5878394741809159641363870504056202230531370126503940005523061529764793903582", 10); - mpz_set_str(table[11], "12953084022753321867708936609022290356094744059577981257496393967361661019407", 10); - mpz_set_str(table[12], "17821186880162567381846384073172321528984587538561979368940709298630476769452", 10); - mpz_set_str(table[13], "2453932413862302529461250119196509110304672427108846387775754459419354907908", 10); - mpz_set_str(table[14], "17095624200756109828341053845889384585750751152352752838005880347562538073319", 10); - mpz_set_str(table[15], "16076674139841729984081082282873122077278790925174911239076258038125438945635", 10); - mpz_set_str(table[16], "15973677262219376317351463530833773955453896346108270633915370208269159592772", 10); - mpz_set_str(table[17], "8555405976272674802677648396132318170100820349735810537047511720310046490378", 10); - mpz_set_str(table[18], "5007836521370151647140054242821403967845400744763922051204144049383046884886", 10); - mpz_set_str(table[19], "3676492877157582188496454362703063642130930261996541105166757165946392262605", 10); - mpz_set_str(table[20], "13167754804322970785623821175583995474458361119382052992718501945220665582657", 10); - mpz_set_str(table[21], "17982661690480314134763956742930605650839672005300279176833957583710446017925", 10); - mpz_set_str(table[22], "16196615919394269913715524046362709382879889470445788994112355838960323104800", 10); - mpz_set_str(table[23], "13780842158881551966843701740475262896099286351827028055980576712738150558403", 10); - mpz_set_str(table[24], "18822193107165131686868826351408896582461805319307522493259902802875154533314", 10); - mpz_set_str(table[25], "980489996106118979994210626629207892716891335312670525040567169180579388605", 10); - mpz_set_str(table[26], "518609507629433196828276288289486933387442800316313178613901943943087073660", 10); - mpz_set_str(table[27], "7774130979666374330087005330604381141993157173791087107601100780057759614636", 10); - mpz_set_str(table[28], "21732216142397554500293555787717479468957109510832694583240361357998284898936", 10); - mpz_set_str(table[29], "7055504651733494631811984866737923947263408897781959770632366791537382855891", 10); - mpz_set_str(table[30], "21543969199073775299412959336886535374665597560771837803487744253900410014695", 10); - mpz_set_str(table[31], "3776645205667743630556897477925975880673676768067512443876418300914494865443", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=59 -*/ -void EscalarMulWindow_e687dd0c27bf87f6(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3581485013057186115055677179127042033344735698342979450016018954682943544783", 10); - mpz_set_str(table[3], "2449879450823548727389514566261608400955020121032999969540608621437434713518", 10); - mpz_set_str(table[4], "20771498172790118352172888220973388926333630649003906658535744886052260489492", 10); - mpz_set_str(table[5], "18838190635415086630798767220109460008019909252421468104523785924955266453647", 10); - mpz_set_str(table[6], "11283227683656579335643245963145341362047556594535741690630232325490268844885", 10); - mpz_set_str(table[7], "11100969964312729437913424574140218154400657346914148881998431362325433455493", 10); - mpz_set_str(table[8], "11652522142803112814061813550215422143199337859990477748819895282960016043883", 10); - mpz_set_str(table[9], "17432730010492282985256199043879873469887761450348945702972514836449377244465", 10); - mpz_set_str(table[10], "15619147669628020310722559932857054723359210729672770669455227871419142713792", 10); - mpz_set_str(table[11], "5494309253306004292273014968599465259731266286213884727244655038166368524645", 10); - mpz_set_str(table[12], "13562028699561761865216513406334648442925887485866604346647136095444407000081", 10); - mpz_set_str(table[13], "6358988846639310645881145167261730784194515526202785898817306474592057733266", 10); - mpz_set_str(table[14], "16641742585659036018328972066095326787166622056264456535218855428306938695589", 10); - mpz_set_str(table[15], "17317610457673916133408856968482477923419776296609414421727531904931753047575", 10); - mpz_set_str(table[16], "18823073556301391501465557554563172476792312124717801839905503918706045126714", 10); - mpz_set_str(table[17], "14376868830083824040789531342160326019697492043948100941128839142793042169608", 10); - mpz_set_str(table[18], "12550498958774643001493279083898346641712182211933958734729148696530411766813", 10); - mpz_set_str(table[19], "15083597137638325740195153667924734721743563402942897515324811056051190383808", 10); - mpz_set_str(table[20], "10786674815081732469175381999708594345771132188850070300247068143790473373494", 10); - mpz_set_str(table[21], "4437780706978496623390008136039717210598748754524433838265190784599709998930", 10); - mpz_set_str(table[22], "19551790697903554698691073132217153920541170116588573399367377229949484049711", 10); - mpz_set_str(table[23], "8733341334732625322352868992803429909282609963276541352291647595671314860020", 10); - mpz_set_str(table[24], "12358897331936404122265834993169558129636387941293086036052824783886557431366", 10); - mpz_set_str(table[25], "12516419364387885313414349019433846381812591923769435689156912741446012419537", 10); - mpz_set_str(table[26], "3998646453002821861806239297052000773369614246449171526928972738525403213446", 10); - mpz_set_str(table[27], "10379551391939871867130438317961303899141677775939477704272174964498370579094", 10); - mpz_set_str(table[28], "16916663389312051189985528299091847697105948440997078657249090497433436518687", 10); - mpz_set_str(table[29], "11953633702700660365536312315018557930111957821417006184476201912110087742920", 10); - mpz_set_str(table[30], "10934615037536040128502257196829543616846312662225410635128573995727485998601", 10); - mpz_set_str(table[31], "21180242432950060858380613335607135850238909751262563237872188847950116310017", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=60 -*/ -void EscalarMulWindow_e68aec0c27c1d74a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "5329718093401832461289759633473155714837923950815847249810633756458556098837", 10); - mpz_set_str(table[3], "12900985693670780751244123814206237528567126431403215971145816339577800381828", 10); - mpz_set_str(table[4], "5508863281622493712898926772752698967157539623965838154668479831499964155928", 10); - mpz_set_str(table[5], "17962736758473458608519319205169843462888249209539147118599751672019645725954", 10); - mpz_set_str(table[6], "21814700598382765608485632289705350686042483003906952848452221635999248032723", 10); - mpz_set_str(table[7], "10746837810131045600498503180851005764075230532223872812929739278942493148445", 10); - mpz_set_str(table[8], "12961472500822337513001910298056431336788558805834368437087377932432654905745", 10); - mpz_set_str(table[9], "282960684094498589882312639999054244237093782515234067311574441907227143722", 10); - mpz_set_str(table[10], "5939199498233700087181058953396343961514492227529970332685455894421764383916", 10); - mpz_set_str(table[11], "2979356392809707951443943430555591106718791747623802510990137095501840888598", 10); - mpz_set_str(table[12], "5817944539411315257495426006112088829610949650207072725588365762408049559392", 10); - mpz_set_str(table[13], "17102432335100992507653074074396906774256812262219724933422943959279093261963", 10); - mpz_set_str(table[14], "7368864545090791635291092484816831328738558881316039517497385698546975748166", 10); - mpz_set_str(table[15], "5881798095454432906461989115126697962302695933534293891543742374557317789799", 10); - mpz_set_str(table[16], "16185102384598457040305236706789430602702547767527527070912154893945425003349", 10); - mpz_set_str(table[17], "1509949711440243372857009904055283093935667484074353992824572752991617597292", 10); - mpz_set_str(table[18], "12410424223062224270113130588728064408972622217290538286392714614436621161170", 10); - mpz_set_str(table[19], "1701691521940871512561023290038582782456724028833403585053374295653963308604", 10); - mpz_set_str(table[20], "693530362272448974257837077605167000078837802192655122343826284598552129867", 10); - mpz_set_str(table[21], "1132082509140464948411551008661058325511185640991168364722855936111865527578", 10); - mpz_set_str(table[22], "11594759724715027730801700469999381894382905258658255292188947038824487802680", 10); - mpz_set_str(table[23], "12957850856419054202676584620368290890886621134103862742364058327901904862923", 10); - mpz_set_str(table[24], "71321569139369374526264649008721242534430244618908826752930858288395330140", 10); - mpz_set_str(table[25], "1315902956152924856166663521246653513475131771174010153786565316750104815030", 10); - mpz_set_str(table[26], "5307132264373243703866642583330149108628674133690724078905688577443419933943", 10); - mpz_set_str(table[27], "9505889273318423975208084028710414664488356291083883457642847896302727995481", 10); - mpz_set_str(table[28], "6011374467816723661747678853435133830757957331890311472807362784879689905550", 10); - mpz_set_str(table[29], "11510794113424102121747573608303226682005679949007694223440952622865345372445", 10); - mpz_set_str(table[30], "6133673212618310678184294081206076187296372854838749951523391156071767534788", 10); - mpz_set_str(table[31], "13494901840780481600925491575516103394816749627644427732666596299868587990152", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=61 -*/ -void EscalarMulWindow_e68aed0c27c1d8fd(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8690132215001510855525661707125195116169972801166338995960306063598868523134", 10); - mpz_set_str(table[3], "10628008448893706196877570560651842566415484866399806369046949157096644079399", 10); - mpz_set_str(table[4], "2992118602331571302807622306124171084395369081596727494517467980726225538338", 10); - mpz_set_str(table[5], "15884522913625643883642072502342763718678053705722093350973254736469260409818", 10); - mpz_set_str(table[6], "13469869415032280681748875393314727808289661954240199071555686001959296963028", 10); - mpz_set_str(table[7], "4725115634754108566776323109457915358001088734265208740722718113425145050724", 10); - mpz_set_str(table[8], "5066761258645415765137423691170489290738080646027143372259594054573856352261", 10); - mpz_set_str(table[9], "970187200307873850688565566968603471576282225087910174557295560376601732957", 10); - mpz_set_str(table[10], "3062596509204177345499610882044000017875226802064340424454530465509009563943", 10); - mpz_set_str(table[11], "17389776994439434136540634213920558165685663870223963101978635528475183546729", 10); - mpz_set_str(table[12], "5033073489915153511587186277233837183528646156509486536579770704089704683989", 10); - mpz_set_str(table[13], "6394995862562815798537059351009227683113333105751271424252692101543140164918", 10); - mpz_set_str(table[14], "5915316518646313368501331247979611263730162528672367851839214419889470015310", 10); - mpz_set_str(table[15], "371031883635111023498422775081141077637227079327035961137907152815570877531", 10); - mpz_set_str(table[16], "7807367514401030403372445442161017583241211321365011117782972922373573814705", 10); - mpz_set_str(table[17], "10407835675521613498736587089375329008864560182826581569441173151874235834339", 10); - mpz_set_str(table[18], "12329421014805923072773859126150817938434574929964430407670273802069341407340", 10); - mpz_set_str(table[19], "21070233111029586505155158167938698528294603989448096131694301893763094002524", 10); - mpz_set_str(table[20], "8143009126463936384848481139560345267672812165744010358697699680019261617965", 10); - mpz_set_str(table[21], "16063098527292609924683127550661079366537285688932309674912886506325580584258", 10); - mpz_set_str(table[22], "497134865100447633085532112198824274140257439867828195383838293334600091777", 10); - mpz_set_str(table[23], "19732372214508377704960642956362259671089729573369794822036790076954102078256", 10); - mpz_set_str(table[24], "19493637389735003608234471576760905944482300936960526036369686941777744150453", 10); - mpz_set_str(table[25], "18380526094057075762006762287368638318541581132610665095075060979774377097683", 10); - mpz_set_str(table[26], "15051386733101312432255446957055711738971873360289672449434177087434262525366", 10); - mpz_set_str(table[27], "8487231337159539936165115912716720477949889100189288481318078725692489364253", 10); - mpz_set_str(table[28], "8561759613343053109988884281844247035696469170858052060664988324565738885651", 10); - mpz_set_str(table[29], "10169478941845759867620777158696743036996020677057268844192246712999996760938", 10); - mpz_set_str(table[30], "16111947654263471062987951280933612107797745914404747800879419436244925700160", 10); - mpz_set_str(table[31], "2816313998096377331329464739618546925298330235352507252445643434708670236613", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[10457101036533406547632367118273992217979173478358440826365724437999023779287,19824078218392094440610104313265183977899662750282163392862422243483260492317] -k=62 -sel[2]=0 -sel[3]=0 -*/ -void EscalarMulWindow_04331b56a98f2867(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "2401533621621056639229827562937649963990842351400311499822063218569939743237", 10); - mpz_set_str(table[3], "4854496669479974955369764197611004447018055605684746490663358322047649631427", 10); - mpz_set_str(table[4], "8636605064084931784708728904364011398644223276243075880136138272077826517059", 10); - mpz_set_str(table[5], "20516451417255783586307942218726228704556620573170058938117233409366750061772", 10); - mpz_set_str(table[6], "7291581887654520377080356484648867223387514198503829517506424589864987157009", 10); - mpz_set_str(table[7], "5052305923292895020449465423757368989608894159439880668464526697060758962029", 10); - mpz_set_str(table[8], "2987409044237919138230446301182123540511030111592830867028787349099414142061", 10); - mpz_set_str(table[9], "5364081456978211591904772714849539553795139930715244062079192622674017580276", 10); - mpz_set_str(table[10], "13524325827846504973487682702107846473013960827147501312009698731283423665814", 10); - mpz_set_str(table[11], "1855761682303320144267949465344911140933411024799789711821279849640624021915", 10); - mpz_set_str(table[12], "10386592326729448225285742115053606773124867543003687249868091752363688960584", 10); - mpz_set_str(table[13], "11027109230685264970996929522237471185958846286248479390550791497615496141997", 10); - mpz_set_str(table[14], "20565183328003872635242132644273019992762593114016879535887283130423097901445", 10); - mpz_set_str(table[15], "10934604535457090798050813442859417042898222087342703097830389120839008795593", 10); - mpz_set_str(table[16], "17046382121482353685388213772041341063559639924041456554337984877973524133687", 10); - mpz_set_str(table[17], "11698950125850889205864944006739422575998738942302523943486737963576287732292", 10); - mpz_set_str(table[18], "6753423321137978153314426594304464840752360496363090195948512321633056549348", 10); - mpz_set_str(table[19], "17053701604158674202115982646431841547977027569862778817218240355815366533269", 10); - mpz_set_str(table[20], "7814418104658789495012756671586973503015101447661359190245586882711902499288", 10); - mpz_set_str(table[21], "4884809386272632346260085316264952456128723913431284295922545075579272997776", 10); - mpz_set_str(table[22], "13370648175110326735616539525540991721500970345295164929810376161334657804081", 10); - mpz_set_str(table[23], "359712335075769797957965687115617532427754473261443754898252606148908006836", 10); - mpz_set_str(table[24], "11540959163541907023399933519631654649021346801315816824361701457904159010893", 10); - mpz_set_str(table[25], "8736172202908959764683971721482986700339944699691493549732117625521817431224", 10); - mpz_set_str(table[26], "11655258207334483419447826168458800613717999771746446200823133210063403521139", 10); - mpz_set_str(table[27], "16180852090760558718567754050638991619723564315748839335655881961503420983781", 10); - mpz_set_str(table[28], "16926983117539301171430170992653986152010926752019725784525498344174035890992", 10); - mpz_set_str(table[29], "5682205926059888235852706855333279964534500809866220088108873331941408076178", 10); - mpz_set_str(table[30], "6297376933798356724927828249238067875569883973771389161440033358181866272888", 10); - mpz_set_str(table[31], "13952643067521014993155836650160228088408448372010464939744235439026274695523", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -MultiMux4 -c[0][0]=0 -c[0][10]=0 -c[0][11]=0 -c[0][12]=0 -c[0][13]=0 -c[0][14]=0 -c[0][15]=0 -c[0][1]=0 -c[0][2]=0 -c[0][3]=0 -c[0][4]=0 -c[0][5]=0 -c[0][6]=0 -c[0][7]=0 -c[0][8]=0 -c[0][9]=0 -c[1][0]=0 -c[1][10]=0 -c[1][11]=0 -c[1][12]=0 -c[1][13]=0 -c[1][14]=0 -c[1][15]=0 -c[1][1]=0 -c[1][2]=0 -c[1][3]=0 -c[1][4]=0 -c[1][5]=0 -c[1][6]=0 -c[1][7]=0 -c[1][8]=0 -c[1][9]=0 -n=2 -*/ -void MultiMux4_e43006c194d99269(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_2; - int _sigIdx_3; - Circom_Sizes _sigSizes_2; - int _offset_2; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_3; - int _offset_3; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_1 = ctx->allocBigInts(1); - int _sigIdx_5; - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - int _offset_4; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - int _offset_5; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _sigIdx_8; - int _sigIdx_9; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_10; - Circom_Sizes _sigSizes_6; - int _offset_6; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_11; - int _sigIdx_12; - Circom_Sizes _sigSizes_7; - int _offset_11; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _sigIdx_13; - Circom_Sizes _sigSizes_8; - int _offset_13; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _sigIdx_14; - Circom_Sizes _sigSizes_9; - int _offset_15; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_17; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_16; - Circom_Sizes _sigSizes_11; - int _offset_19; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_12; - int _offset_21; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _tmp_9 = ctx->allocBigInts(1); - int _sigIdx_18; - Circom_Sizes _sigSizes_13; - int _offset_23; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - PBigInt _tmp_10 = ctx->allocBigInts(1); - int _sigIdx_19; - Circom_Sizes _sigSizes_14; - int _offset_25; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_20; - Circom_Sizes _sigSizes_15; - int _offset_27; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - PBigInt _tmp_12 = ctx->allocBigInts(1); - int _sigIdx_21; - Circom_Sizes _sigSizes_16; - int _offset_29; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _sigIdx_22; - Circom_Sizes _sigSizes_17; - int _offset_31; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_23; - Circom_Sizes _sigSizes_18; - int _offset_33; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _sigIdx_24; - Circom_Sizes _sigSizes_19; - int _offset_35; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _tmp_16 = ctx->allocBigInts(1); - int _sigIdx_25; - Circom_Sizes _sigSizes_20; - int _offset_37; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _sigIdx_26; - Circom_Sizes _sigSizes_21; - int _offset_39; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_27; - Circom_Sizes _sigSizes_22; - int _offset_41; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - PBigInt _tmp_19 = ctx->allocBigInts(1); - int _sigIdx_28; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - PBigInt _tmp_20 = ctx->allocBigInts(1); - int _sigIdx_29; - Circom_Sizes _sigSizes_23; - int _offset_43; - int _sigIdx_30; - Circom_Sizes _sigSizes_24; - int _offset_45; - PBigInt _sigValue_25 = ctx->allocBigInts(1); - int _sigIdx_31; - Circom_Sizes _sigSizes_25; - int _offset_47; - PBigInt _sigValue_26 = ctx->allocBigInts(1); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _sigIdx_32; - Circom_Sizes _sigSizes_26; - int _offset_49; - PBigInt _sigValue_27 = ctx->allocBigInts(1); - PBigInt _tmp_22 = ctx->allocBigInts(1); - int _sigIdx_33; - Circom_Sizes _sigSizes_27; - int _offset_51; - PBigInt _sigValue_28 = ctx->allocBigInts(1); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _sigIdx_34; - Circom_Sizes _sigSizes_28; - int _offset_53; - PBigInt _sigValue_29 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _sigIdx_35; - Circom_Sizes _sigSizes_29; - int _offset_55; - PBigInt _sigValue_30 = ctx->allocBigInts(1); - PBigInt _tmp_25 = ctx->allocBigInts(1); - int _sigIdx_36; - Circom_Sizes _sigSizes_30; - int _offset_57; - PBigInt _sigValue_31 = ctx->allocBigInts(1); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _sigIdx_37; - Circom_Sizes _sigSizes_31; - int _offset_59; - PBigInt _sigValue_32 = ctx->allocBigInts(1); - PBigInt _tmp_27 = ctx->allocBigInts(1); - int _sigIdx_38; - PBigInt _sigValue_33 = ctx->allocBigInts(1); - PBigInt _tmp_28 = ctx->allocBigInts(1); - int _sigIdx_39; - Circom_Sizes _sigSizes_32; - int _offset_61; - int _sigIdx_40; - Circom_Sizes _sigSizes_33; - int _offset_63; - PBigInt _sigValue_34 = ctx->allocBigInts(1); - int _sigIdx_41; - Circom_Sizes _sigSizes_34; - int _offset_65; - PBigInt _sigValue_35 = ctx->allocBigInts(1); - PBigInt _tmp_29 = ctx->allocBigInts(1); - int _sigIdx_42; - Circom_Sizes _sigSizes_35; - int _offset_67; - PBigInt _sigValue_36 = ctx->allocBigInts(1); - PBigInt _tmp_30 = ctx->allocBigInts(1); - int _sigIdx_43; - Circom_Sizes _sigSizes_36; - int _offset_69; - PBigInt _sigValue_37 = ctx->allocBigInts(1); - PBigInt _tmp_31 = ctx->allocBigInts(1); - int _sigIdx_44; - Circom_Sizes _sigSizes_37; - int _offset_71; - PBigInt _sigValue_38 = ctx->allocBigInts(1); - PBigInt _tmp_32 = ctx->allocBigInts(1); - int _sigIdx_45; - Circom_Sizes _sigSizes_38; - int _offset_73; - PBigInt _sigValue_39 = ctx->allocBigInts(1); - PBigInt _tmp_33 = ctx->allocBigInts(1); - int _sigIdx_46; - Circom_Sizes _sigSizes_39; - int _offset_75; - PBigInt _sigValue_40 = ctx->allocBigInts(1); - PBigInt _tmp_34 = ctx->allocBigInts(1); - int _sigIdx_47; - Circom_Sizes _sigSizes_40; - int _offset_77; - PBigInt _sigValue_41 = ctx->allocBigInts(1); - PBigInt _tmp_35 = ctx->allocBigInts(1); - int _sigIdx_48; - PBigInt _sigValue_42 = ctx->allocBigInts(1); - PBigInt _tmp_36 = ctx->allocBigInts(1); - int _sigIdx_49; - Circom_Sizes _sigSizes_41; - int _offset_79; - int _sigIdx_50; - Circom_Sizes _sigSizes_42; - int _offset_81; - PBigInt _sigValue_43 = ctx->allocBigInts(1); - int _sigIdx_51; - Circom_Sizes _sigSizes_43; - int _offset_83; - PBigInt _sigValue_44 = ctx->allocBigInts(1); - PBigInt _tmp_37 = ctx->allocBigInts(1); - int _sigIdx_52; - Circom_Sizes _sigSizes_44; - int _offset_85; - PBigInt _sigValue_45 = ctx->allocBigInts(1); - PBigInt _tmp_38 = ctx->allocBigInts(1); - int _sigIdx_53; - Circom_Sizes _sigSizes_45; - int _offset_87; - PBigInt _sigValue_46 = ctx->allocBigInts(1); - PBigInt _tmp_39 = ctx->allocBigInts(1); - int _sigIdx_54; - Circom_Sizes _sigSizes_46; - int _offset_89; - PBigInt _sigValue_47 = ctx->allocBigInts(1); - PBigInt _tmp_40 = ctx->allocBigInts(1); - int _sigIdx_55; - Circom_Sizes _sigSizes_47; - int _offset_91; - PBigInt _sigValue_48 = ctx->allocBigInts(1); - PBigInt _tmp_41 = ctx->allocBigInts(1); - int _sigIdx_56; - Circom_Sizes _sigSizes_48; - int _offset_93; - PBigInt _sigValue_49 = ctx->allocBigInts(1); - PBigInt _tmp_42 = ctx->allocBigInts(1); - int _sigIdx_57; - Circom_Sizes _sigSizes_49; - int _offset_95; - PBigInt _sigValue_50 = ctx->allocBigInts(1); - PBigInt _tmp_43 = ctx->allocBigInts(1); - int _sigIdx_58; - PBigInt _sigValue_51 = ctx->allocBigInts(1); - PBigInt _tmp_44 = ctx->allocBigInts(1); - int _sigIdx_59; - Circom_Sizes _sigSizes_50; - int _offset_97; - int _sigIdx_60; - Circom_Sizes _sigSizes_51; - int _offset_99; - PBigInt _sigValue_52 = ctx->allocBigInts(1); - int _sigIdx_61; - Circom_Sizes _sigSizes_52; - int _offset_101; - PBigInt _sigValue_53 = ctx->allocBigInts(1); - PBigInt _tmp_45 = ctx->allocBigInts(1); - int _sigIdx_62; - Circom_Sizes _sigSizes_53; - int _offset_103; - PBigInt _sigValue_54 = ctx->allocBigInts(1); - PBigInt _tmp_46 = ctx->allocBigInts(1); - int _sigIdx_63; - Circom_Sizes _sigSizes_54; - int _offset_105; - PBigInt _sigValue_55 = ctx->allocBigInts(1); - PBigInt _tmp_47 = ctx->allocBigInts(1); - int _sigIdx_64; - Circom_Sizes _sigSizes_55; - int _offset_106; - PBigInt _sigValue_56 = ctx->allocBigInts(1); - PBigInt _tmp_48 = ctx->allocBigInts(1); - int _sigIdx_65; - Circom_Sizes _sigSizes_56; - int _offset_108; - int _sigIdx_66; - Circom_Sizes _sigSizes_57; - int _offset_110; - PBigInt _sigValue_57 = ctx->allocBigInts(1); - int _sigIdx_67; - Circom_Sizes _sigSizes_58; - int _offset_112; - PBigInt _sigValue_58 = ctx->allocBigInts(1); - PBigInt _tmp_49 = ctx->allocBigInts(1); - int _sigIdx_68; - Circom_Sizes _sigSizes_59; - int _offset_114; - PBigInt _sigValue_59 = ctx->allocBigInts(1); - PBigInt _tmp_50 = ctx->allocBigInts(1); - int _sigIdx_69; - Circom_Sizes _sigSizes_60; - int _offset_116; - PBigInt _sigValue_60 = ctx->allocBigInts(1); - PBigInt _tmp_51 = ctx->allocBigInts(1); - int _sigIdx_70; - Circom_Sizes _sigSizes_61; - int _offset_117; - PBigInt _sigValue_61 = ctx->allocBigInts(1); - PBigInt _tmp_52 = ctx->allocBigInts(1); - int _sigIdx_71; - Circom_Sizes _sigSizes_62; - int _offset_119; - int _sigIdx_72; - Circom_Sizes _sigSizes_63; - int _offset_121; - PBigInt _sigValue_62 = ctx->allocBigInts(1); - int _sigIdx_73; - Circom_Sizes _sigSizes_64; - int _offset_123; - PBigInt _sigValue_63 = ctx->allocBigInts(1); - PBigInt _tmp_53 = ctx->allocBigInts(1); - int _sigIdx_74; - Circom_Sizes _sigSizes_65; - int _offset_125; - PBigInt _sigValue_64 = ctx->allocBigInts(1); - PBigInt _tmp_54 = ctx->allocBigInts(1); - int _sigIdx_75; - Circom_Sizes _sigSizes_66; - int _offset_127; - PBigInt _sigValue_65 = ctx->allocBigInts(1); - PBigInt _tmp_55 = ctx->allocBigInts(1); - int _sigIdx_76; - Circom_Sizes _sigSizes_67; - int _offset_128; - PBigInt _sigValue_66 = ctx->allocBigInts(1); - PBigInt _tmp_56 = ctx->allocBigInts(1); - int _sigIdx_77; - Circom_Sizes _sigSizes_68; - int _offset_130; - int _sigIdx_78; - Circom_Sizes _sigSizes_69; - int _offset_132; - PBigInt _sigValue_67 = ctx->allocBigInts(1); - int _sigIdx_79; - Circom_Sizes _sigSizes_70; - int _offset_134; - PBigInt _sigValue_68 = ctx->allocBigInts(1); - PBigInt _tmp_57 = ctx->allocBigInts(1); - int _sigIdx_80; - Circom_Sizes _sigSizes_71; - int _offset_136; - int _sigIdx_81; - Circom_Sizes _sigSizes_72; - int _offset_138; - PBigInt _sigValue_69 = ctx->allocBigInts(1); - int _sigIdx_82; - Circom_Sizes _sigSizes_73; - int _offset_140; - PBigInt _sigValue_70 = ctx->allocBigInts(1); - PBigInt _tmp_58 = ctx->allocBigInts(1); - int _sigIdx_83; - Circom_Sizes _sigSizes_74; - int _offset_142; - PBigInt _sigValue_71 = ctx->allocBigInts(1); - PBigInt _tmp_59 = ctx->allocBigInts(1); - int _sigIdx_84; - Circom_Sizes _sigSizes_75; - int _offset_144; - PBigInt _sigValue_72 = ctx->allocBigInts(1); - PBigInt _tmp_60 = ctx->allocBigInts(1); - int _sigIdx_85; - Circom_Sizes _sigSizes_76; - int _offset_146; - PBigInt _sigValue_73 = ctx->allocBigInts(1); - PBigInt _tmp_61 = ctx->allocBigInts(1); - int _sigIdx_86; - Circom_Sizes _sigSizes_77; - int _offset_148; - PBigInt _sigValue_74 = ctx->allocBigInts(1); - PBigInt _tmp_62 = ctx->allocBigInts(1); - int _sigIdx_87; - Circom_Sizes _sigSizes_78; - int _offset_150; - PBigInt _sigValue_75 = ctx->allocBigInts(1); - PBigInt _tmp_63 = ctx->allocBigInts(1); - int _sigIdx_88; - Circom_Sizes _sigSizes_79; - int _offset_152; - PBigInt _sigValue_76 = ctx->allocBigInts(1); - PBigInt _tmp_64 = ctx->allocBigInts(1); - int _sigIdx_89; - PBigInt _sigValue_77 = ctx->allocBigInts(1); - PBigInt _tmp_65 = ctx->allocBigInts(1); - int _sigIdx_90; - Circom_Sizes _sigSizes_80; - int _offset_154; - int _sigIdx_91; - Circom_Sizes _sigSizes_81; - int _offset_156; - PBigInt _sigValue_78 = ctx->allocBigInts(1); - int _sigIdx_92; - Circom_Sizes _sigSizes_82; - int _offset_158; - PBigInt _sigValue_79 = ctx->allocBigInts(1); - PBigInt _tmp_66 = ctx->allocBigInts(1); - int _sigIdx_93; - Circom_Sizes _sigSizes_83; - int _offset_160; - PBigInt _sigValue_80 = ctx->allocBigInts(1); - PBigInt _tmp_67 = ctx->allocBigInts(1); - int _sigIdx_94; - Circom_Sizes _sigSizes_84; - int _offset_162; - PBigInt _sigValue_81 = ctx->allocBigInts(1); - PBigInt _tmp_68 = ctx->allocBigInts(1); - int _sigIdx_95; - PBigInt _sigValue_82 = ctx->allocBigInts(1); - PBigInt _tmp_69 = ctx->allocBigInts(1); - int _sigIdx_96; - Circom_Sizes _sigSizes_85; - int _offset_164; - int _sigIdx_97; - Circom_Sizes _sigSizes_86; - int _offset_166; - PBigInt _sigValue_83 = ctx->allocBigInts(1); - int _sigIdx_98; - Circom_Sizes _sigSizes_87; - int _offset_168; - PBigInt _sigValue_84 = ctx->allocBigInts(1); - PBigInt _tmp_70 = ctx->allocBigInts(1); - int _sigIdx_99; - Circom_Sizes _sigSizes_88; - int _offset_170; - PBigInt _sigValue_85 = ctx->allocBigInts(1); - PBigInt _tmp_71 = ctx->allocBigInts(1); - int _sigIdx_100; - Circom_Sizes _sigSizes_89; - int _offset_172; - PBigInt _sigValue_86 = ctx->allocBigInts(1); - PBigInt _tmp_72 = ctx->allocBigInts(1); - int _sigIdx_101; - PBigInt _sigValue_87 = ctx->allocBigInts(1); - PBigInt _tmp_73 = ctx->allocBigInts(1); - int _sigIdx_102; - Circom_Sizes _sigSizes_90; - int _offset_174; - int _sigIdx_103; - Circom_Sizes _sigSizes_91; - int _offset_176; - PBigInt _sigValue_88 = ctx->allocBigInts(1); - int _sigIdx_104; - Circom_Sizes _sigSizes_92; - int _offset_178; - PBigInt _sigValue_89 = ctx->allocBigInts(1); - PBigInt _tmp_74 = ctx->allocBigInts(1); - int _sigIdx_105; - Circom_Sizes _sigSizes_93; - int _offset_180; - PBigInt _sigValue_90 = ctx->allocBigInts(1); - PBigInt _tmp_75 = ctx->allocBigInts(1); - int _sigIdx_106; - Circom_Sizes _sigSizes_94; - int _offset_182; - PBigInt _sigValue_91 = ctx->allocBigInts(1); - PBigInt _tmp_76 = ctx->allocBigInts(1); - int _sigIdx_107; - PBigInt _sigValue_92 = ctx->allocBigInts(1); - PBigInt _tmp_77 = ctx->allocBigInts(1); - int _sigIdx_108; - Circom_Sizes _sigSizes_95; - int _offset_184; - int _sigIdx_109; - Circom_Sizes _sigSizes_96; - int _offset_186; - PBigInt _sigValue_93 = ctx->allocBigInts(1); - int _sigIdx_110; - Circom_Sizes _sigSizes_97; - int _offset_188; - PBigInt _sigValue_94 = ctx->allocBigInts(1); - PBigInt _tmp_78 = ctx->allocBigInts(1); - int _sigIdx_111; - Circom_Sizes _sigSizes_98; - int _offset_189; - PBigInt _sigValue_95 = ctx->allocBigInts(1); - PBigInt _tmp_79 = ctx->allocBigInts(1); - int _sigIdx_112; - Circom_Sizes _sigSizes_99; - int _offset_191; - int _sigIdx_113; - Circom_Sizes _sigSizes_100; - int _offset_193; - PBigInt _sigValue_96 = ctx->allocBigInts(1); - int _sigIdx_114; - Circom_Sizes _sigSizes_101; - int _offset_195; - PBigInt _sigValue_97 = ctx->allocBigInts(1); - PBigInt _tmp_80 = ctx->allocBigInts(1); - int _sigIdx_115; - Circom_Sizes _sigSizes_102; - int _offset_196; - PBigInt _sigValue_98 = ctx->allocBigInts(1); - PBigInt _tmp_81 = ctx->allocBigInts(1); - int _sigIdx_116; - Circom_Sizes _sigSizes_103; - int _offset_198; - int _sigIdx_117; - Circom_Sizes _sigSizes_104; - int _offset_200; - PBigInt _sigValue_99 = ctx->allocBigInts(1); - int _sigIdx_118; - Circom_Sizes _sigSizes_105; - int _offset_202; - PBigInt _sigValue_100 = ctx->allocBigInts(1); - PBigInt _tmp_82 = ctx->allocBigInts(1); - int _sigIdx_119; - Circom_Sizes _sigSizes_106; - int _offset_203; - PBigInt _sigValue_101 = ctx->allocBigInts(1); - PBigInt _tmp_83 = ctx->allocBigInts(1); - int _sigIdx_120; - Circom_Sizes _sigSizes_107; - int _offset_205; - int _sigIdx_121; - Circom_Sizes _sigSizes_108; - int _offset_207; - PBigInt _sigValue_102 = ctx->allocBigInts(1); - int _sigIdx_122; - Circom_Sizes _sigSizes_109; - int _offset_209; - int _sigIdx_123; - Circom_Sizes _sigSizes_110; - int _offset_211; - PBigInt _sigValue_103 = ctx->allocBigInts(1); - int _sigIdx_124; - Circom_Sizes _sigSizes_111; - int _offset_213; - PBigInt _sigValue_104 = ctx->allocBigInts(1); - PBigInt _tmp_84 = ctx->allocBigInts(1); - int _sigIdx_125; - Circom_Sizes _sigSizes_112; - int _offset_215; - PBigInt _sigValue_105 = ctx->allocBigInts(1); - PBigInt _tmp_85 = ctx->allocBigInts(1); - int _sigIdx_126; - Circom_Sizes _sigSizes_113; - int _offset_217; - PBigInt _sigValue_106 = ctx->allocBigInts(1); - PBigInt _tmp_86 = ctx->allocBigInts(1); - int _sigIdx_127; - Circom_Sizes _sigSizes_114; - int _offset_219; - PBigInt _sigValue_107 = ctx->allocBigInts(1); - PBigInt _tmp_87 = ctx->allocBigInts(1); - int _sigIdx_128; - Circom_Sizes _sigSizes_115; - int _offset_221; - PBigInt _sigValue_108 = ctx->allocBigInts(1); - PBigInt _tmp_88 = ctx->allocBigInts(1); - int _sigIdx_129; - Circom_Sizes _sigSizes_116; - int _offset_223; - PBigInt _sigValue_109 = ctx->allocBigInts(1); - PBigInt _tmp_89 = ctx->allocBigInts(1); - int _sigIdx_130; - Circom_Sizes _sigSizes_117; - int _offset_225; - PBigInt _sigValue_110 = ctx->allocBigInts(1); - PBigInt _tmp_90 = ctx->allocBigInts(1); - int _sigIdx_131; - Circom_Sizes _sigSizes_118; - int _offset_226; - PBigInt _sigValue_111 = ctx->allocBigInts(1); - PBigInt _tmp_91 = ctx->allocBigInts(1); - int _sigIdx_132; - Circom_Sizes _sigSizes_119; - int _offset_228; - PBigInt _sigValue_112 = ctx->allocBigInts(1); - int _sigIdx_133; - Circom_Sizes _sigSizes_120; - int _offset_230; - PBigInt _sigValue_113 = ctx->allocBigInts(1); - PBigInt _tmp_92 = ctx->allocBigInts(1); - int _sigIdx_134; - Circom_Sizes _sigSizes_121; - int _offset_232; - PBigInt _sigValue_114 = ctx->allocBigInts(1); - PBigInt _tmp_93 = ctx->allocBigInts(1); - int _sigIdx_135; - Circom_Sizes _sigSizes_122; - int _offset_234; - PBigInt _sigValue_115 = ctx->allocBigInts(1); - PBigInt _tmp_94 = ctx->allocBigInts(1); - int _sigIdx_136; - Circom_Sizes _sigSizes_123; - int _offset_236; - PBigInt _sigValue_116 = ctx->allocBigInts(1); - PBigInt _tmp_95 = ctx->allocBigInts(1); - int _sigIdx_137; - Circom_Sizes _sigSizes_124; - int _offset_238; - PBigInt _sigValue_117 = ctx->allocBigInts(1); - PBigInt _tmp_96 = ctx->allocBigInts(1); - int _sigIdx_138; - Circom_Sizes _sigSizes_125; - int _offset_240; - PBigInt _sigValue_118 = ctx->allocBigInts(1); - PBigInt _tmp_97 = ctx->allocBigInts(1); - int _sigIdx_139; - Circom_Sizes _sigSizes_126; - int _offset_242; - PBigInt _sigValue_119 = ctx->allocBigInts(1); - PBigInt _tmp_98 = ctx->allocBigInts(1); - PBigInt _tmp_99 = ctx->allocBigInts(1); - int _sigIdx_140; - Circom_Sizes _sigSizes_127; - int _offset_244; - PBigInt _tmp_101 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _sigIdx_141; - Circom_Sizes _sigSizes_128; - PBigInt _v_119; - int _offset_250; - PBigInt _sigValue_120 = ctx->allocBigInts(1); - int _sigIdx_142; - Circom_Sizes _sigSizes_129; - PBigInt _v_120; - int _offset_252; - PBigInt _sigValue_121 = ctx->allocBigInts(1); - PBigInt _tmp_102 = ctx->allocBigInts(1); - int _sigIdx_143; - Circom_Sizes _sigSizes_130; - PBigInt _v_121; - int _offset_254; - PBigInt _sigValue_122 = ctx->allocBigInts(1); - PBigInt _tmp_103 = ctx->allocBigInts(1); - int _sigIdx_144; - Circom_Sizes _sigSizes_131; - PBigInt _v_122; - int _offset_256; - PBigInt _sigValue_123 = ctx->allocBigInts(1); - PBigInt _tmp_104 = ctx->allocBigInts(1); - int _sigIdx_145; - Circom_Sizes _sigSizes_132; - PBigInt _v_123; - int _offset_258; - PBigInt _sigValue_124 = ctx->allocBigInts(1); - PBigInt _tmp_105 = ctx->allocBigInts(1); - int _sigIdx_146; - Circom_Sizes _sigSizes_133; - PBigInt _v_124; - int _offset_260; - PBigInt _sigValue_125 = ctx->allocBigInts(1); - PBigInt _tmp_106 = ctx->allocBigInts(1); - int _sigIdx_147; - Circom_Sizes _sigSizes_134; - PBigInt _v_125; - int _offset_262; - PBigInt _sigValue_126 = ctx->allocBigInts(1); - PBigInt _tmp_107 = ctx->allocBigInts(1); - int _sigIdx_148; - Circom_Sizes _sigSizes_135; - PBigInt _v_126; - int _offset_264; - PBigInt _sigValue_127 = ctx->allocBigInts(1); - PBigInt _tmp_108 = ctx->allocBigInts(1); - int _sigIdx_149; - Circom_Sizes _sigSizes_136; - PBigInt _v_127; - int _offset_266; - PBigInt _sigValue_128 = ctx->allocBigInts(1); - PBigInt _tmp_109 = ctx->allocBigInts(1); - int _sigIdx_150; - Circom_Sizes _sigSizes_137; - PBigInt _v_128; - int _offset_268; - PBigInt _sigValue_129 = ctx->allocBigInts(1); - PBigInt _tmp_110 = ctx->allocBigInts(1); - int _sigIdx_151; - Circom_Sizes _sigSizes_138; - PBigInt _v_129; - int _offset_270; - PBigInt _sigValue_130 = ctx->allocBigInts(1); - PBigInt _tmp_111 = ctx->allocBigInts(1); - int _sigIdx_152; - Circom_Sizes _sigSizes_139; - PBigInt _v_130; - int _offset_272; - PBigInt _sigValue_131 = ctx->allocBigInts(1); - PBigInt _tmp_112 = ctx->allocBigInts(1); - int _sigIdx_153; - Circom_Sizes _sigSizes_140; - PBigInt _v_131; - int _offset_274; - PBigInt _sigValue_132 = ctx->allocBigInts(1); - PBigInt _tmp_113 = ctx->allocBigInts(1); - int _sigIdx_154; - Circom_Sizes _sigSizes_141; - PBigInt _v_132; - int _offset_276; - PBigInt _sigValue_133 = ctx->allocBigInts(1); - PBigInt _tmp_114 = ctx->allocBigInts(1); - int _sigIdx_155; - Circom_Sizes _sigSizes_142; - PBigInt _v_133; - int _offset_278; - PBigInt _sigValue_134 = ctx->allocBigInts(1); - PBigInt _tmp_115 = ctx->allocBigInts(1); - int _sigIdx_156; - Circom_Sizes _sigSizes_143; - PBigInt _v_134; - int _offset_280; - PBigInt _sigValue_135 = ctx->allocBigInts(1); - PBigInt _tmp_116 = ctx->allocBigInts(1); - int _sigIdx_157; - PBigInt _sigValue_136 = ctx->allocBigInts(1); - PBigInt _tmp_117 = ctx->allocBigInts(1); - int _sigIdx_158; - Circom_Sizes _sigSizes_144; - PBigInt _v_135; - int _offset_282; - int _sigIdx_159; - Circom_Sizes _sigSizes_145; - PBigInt _v_136; - int _offset_284; - PBigInt _sigValue_137 = ctx->allocBigInts(1); - int _sigIdx_160; - Circom_Sizes _sigSizes_146; - PBigInt _v_137; - int _offset_286; - PBigInt _sigValue_138 = ctx->allocBigInts(1); - PBigInt _tmp_118 = ctx->allocBigInts(1); - int _sigIdx_161; - Circom_Sizes _sigSizes_147; - PBigInt _v_138; - int _offset_288; - PBigInt _sigValue_139 = ctx->allocBigInts(1); - PBigInt _tmp_119 = ctx->allocBigInts(1); - int _sigIdx_162; - Circom_Sizes _sigSizes_148; - PBigInt _v_139; - int _offset_290; - PBigInt _sigValue_140 = ctx->allocBigInts(1); - PBigInt _tmp_120 = ctx->allocBigInts(1); - int _sigIdx_163; - Circom_Sizes _sigSizes_149; - PBigInt _v_140; - int _offset_292; - PBigInt _sigValue_141 = ctx->allocBigInts(1); - PBigInt _tmp_121 = ctx->allocBigInts(1); - int _sigIdx_164; - Circom_Sizes _sigSizes_150; - PBigInt _v_141; - int _offset_294; - PBigInt _sigValue_142 = ctx->allocBigInts(1); - PBigInt _tmp_122 = ctx->allocBigInts(1); - int _sigIdx_165; - Circom_Sizes _sigSizes_151; - PBigInt _v_142; - int _offset_296; - PBigInt _sigValue_143 = ctx->allocBigInts(1); - PBigInt _tmp_123 = ctx->allocBigInts(1); - int _sigIdx_166; - Circom_Sizes _sigSizes_152; - PBigInt _v_143; - int _offset_298; - PBigInt _sigValue_144 = ctx->allocBigInts(1); - PBigInt _tmp_124 = ctx->allocBigInts(1); - int _sigIdx_167; - PBigInt _sigValue_145 = ctx->allocBigInts(1); - PBigInt _tmp_125 = ctx->allocBigInts(1); - int _sigIdx_168; - Circom_Sizes _sigSizes_153; - PBigInt _v_144; - int _offset_300; - int _sigIdx_169; - Circom_Sizes _sigSizes_154; - PBigInt _v_145; - int _offset_302; - PBigInt _sigValue_146 = ctx->allocBigInts(1); - int _sigIdx_170; - Circom_Sizes _sigSizes_155; - PBigInt _v_146; - int _offset_304; - PBigInt _sigValue_147 = ctx->allocBigInts(1); - PBigInt _tmp_126 = ctx->allocBigInts(1); - int _sigIdx_171; - Circom_Sizes _sigSizes_156; - PBigInt _v_147; - int _offset_306; - PBigInt _sigValue_148 = ctx->allocBigInts(1); - PBigInt _tmp_127 = ctx->allocBigInts(1); - int _sigIdx_172; - Circom_Sizes _sigSizes_157; - PBigInt _v_148; - int _offset_308; - PBigInt _sigValue_149 = ctx->allocBigInts(1); - PBigInt _tmp_128 = ctx->allocBigInts(1); - int _sigIdx_173; - Circom_Sizes _sigSizes_158; - PBigInt _v_149; - int _offset_310; - PBigInt _sigValue_150 = ctx->allocBigInts(1); - PBigInt _tmp_129 = ctx->allocBigInts(1); - int _sigIdx_174; - Circom_Sizes _sigSizes_159; - PBigInt _v_150; - int _offset_312; - PBigInt _sigValue_151 = ctx->allocBigInts(1); - PBigInt _tmp_130 = ctx->allocBigInts(1); - int _sigIdx_175; - Circom_Sizes _sigSizes_160; - PBigInt _v_151; - int _offset_314; - PBigInt _sigValue_152 = ctx->allocBigInts(1); - PBigInt _tmp_131 = ctx->allocBigInts(1); - int _sigIdx_176; - Circom_Sizes _sigSizes_161; - PBigInt _v_152; - int _offset_316; - PBigInt _sigValue_153 = ctx->allocBigInts(1); - PBigInt _tmp_132 = ctx->allocBigInts(1); - int _sigIdx_177; - PBigInt _sigValue_154 = ctx->allocBigInts(1); - PBigInt _tmp_133 = ctx->allocBigInts(1); - int _sigIdx_178; - Circom_Sizes _sigSizes_162; - PBigInt _v_153; - int _offset_318; - int _sigIdx_179; - Circom_Sizes _sigSizes_163; - PBigInt _v_154; - int _offset_320; - PBigInt _sigValue_155 = ctx->allocBigInts(1); - int _sigIdx_180; - Circom_Sizes _sigSizes_164; - PBigInt _v_155; - int _offset_322; - PBigInt _sigValue_156 = ctx->allocBigInts(1); - PBigInt _tmp_134 = ctx->allocBigInts(1); - int _sigIdx_181; - Circom_Sizes _sigSizes_165; - PBigInt _v_156; - int _offset_324; - PBigInt _sigValue_157 = ctx->allocBigInts(1); - PBigInt _tmp_135 = ctx->allocBigInts(1); - int _sigIdx_182; - Circom_Sizes _sigSizes_166; - PBigInt _v_157; - int _offset_326; - PBigInt _sigValue_158 = ctx->allocBigInts(1); - PBigInt _tmp_136 = ctx->allocBigInts(1); - int _sigIdx_183; - Circom_Sizes _sigSizes_167; - PBigInt _v_158; - int _offset_328; - PBigInt _sigValue_159 = ctx->allocBigInts(1); - PBigInt _tmp_137 = ctx->allocBigInts(1); - int _sigIdx_184; - Circom_Sizes _sigSizes_168; - PBigInt _v_159; - int _offset_330; - PBigInt _sigValue_160 = ctx->allocBigInts(1); - PBigInt _tmp_138 = ctx->allocBigInts(1); - int _sigIdx_185; - Circom_Sizes _sigSizes_169; - PBigInt _v_160; - int _offset_332; - PBigInt _sigValue_161 = ctx->allocBigInts(1); - PBigInt _tmp_139 = ctx->allocBigInts(1); - int _sigIdx_186; - Circom_Sizes _sigSizes_170; - PBigInt _v_161; - int _offset_334; - PBigInt _sigValue_162 = ctx->allocBigInts(1); - PBigInt _tmp_140 = ctx->allocBigInts(1); - int _sigIdx_187; - PBigInt _sigValue_163 = ctx->allocBigInts(1); - PBigInt _tmp_141 = ctx->allocBigInts(1); - int _sigIdx_188; - Circom_Sizes _sigSizes_171; - PBigInt _v_162; - int _offset_336; - int _sigIdx_189; - Circom_Sizes _sigSizes_172; - PBigInt _v_163; - int _offset_338; - PBigInt _sigValue_164 = ctx->allocBigInts(1); - int _sigIdx_190; - Circom_Sizes _sigSizes_173; - PBigInt _v_164; - int _offset_340; - PBigInt _sigValue_165 = ctx->allocBigInts(1); - PBigInt _tmp_142 = ctx->allocBigInts(1); - int _sigIdx_191; - Circom_Sizes _sigSizes_174; - PBigInt _v_165; - int _offset_342; - PBigInt _sigValue_166 = ctx->allocBigInts(1); - PBigInt _tmp_143 = ctx->allocBigInts(1); - int _sigIdx_192; - Circom_Sizes _sigSizes_175; - PBigInt _v_166; - int _offset_344; - PBigInt _sigValue_167 = ctx->allocBigInts(1); - PBigInt _tmp_144 = ctx->allocBigInts(1); - int _sigIdx_193; - Circom_Sizes _sigSizes_176; - int _offset_345; - PBigInt _sigValue_168 = ctx->allocBigInts(1); - PBigInt _tmp_145 = ctx->allocBigInts(1); - int _sigIdx_194; - Circom_Sizes _sigSizes_177; - PBigInt _v_167; - int _offset_347; - int _sigIdx_195; - Circom_Sizes _sigSizes_178; - PBigInt _v_168; - int _offset_349; - PBigInt _sigValue_169 = ctx->allocBigInts(1); - int _sigIdx_196; - Circom_Sizes _sigSizes_179; - PBigInt _v_169; - int _offset_351; - PBigInt _sigValue_170 = ctx->allocBigInts(1); - PBigInt _tmp_146 = ctx->allocBigInts(1); - int _sigIdx_197; - Circom_Sizes _sigSizes_180; - PBigInt _v_170; - int _offset_353; - PBigInt _sigValue_171 = ctx->allocBigInts(1); - PBigInt _tmp_147 = ctx->allocBigInts(1); - int _sigIdx_198; - Circom_Sizes _sigSizes_181; - PBigInt _v_171; - int _offset_355; - PBigInt _sigValue_172 = ctx->allocBigInts(1); - PBigInt _tmp_148 = ctx->allocBigInts(1); - int _sigIdx_199; - Circom_Sizes _sigSizes_182; - int _offset_356; - PBigInt _sigValue_173 = ctx->allocBigInts(1); - PBigInt _tmp_149 = ctx->allocBigInts(1); - int _sigIdx_200; - Circom_Sizes _sigSizes_183; - PBigInt _v_172; - int _offset_358; - int _sigIdx_201; - Circom_Sizes _sigSizes_184; - PBigInt _v_173; - int _offset_360; - PBigInt _sigValue_174 = ctx->allocBigInts(1); - int _sigIdx_202; - Circom_Sizes _sigSizes_185; - PBigInt _v_174; - int _offset_362; - PBigInt _sigValue_175 = ctx->allocBigInts(1); - PBigInt _tmp_150 = ctx->allocBigInts(1); - int _sigIdx_203; - Circom_Sizes _sigSizes_186; - PBigInt _v_175; - int _offset_364; - PBigInt _sigValue_176 = ctx->allocBigInts(1); - PBigInt _tmp_151 = ctx->allocBigInts(1); - int _sigIdx_204; - Circom_Sizes _sigSizes_187; - PBigInt _v_176; - int _offset_366; - PBigInt _sigValue_177 = ctx->allocBigInts(1); - PBigInt _tmp_152 = ctx->allocBigInts(1); - int _sigIdx_205; - Circom_Sizes _sigSizes_188; - int _offset_367; - PBigInt _sigValue_178 = ctx->allocBigInts(1); - PBigInt _tmp_153 = ctx->allocBigInts(1); - int _sigIdx_206; - Circom_Sizes _sigSizes_189; - PBigInt _v_177; - int _offset_369; - int _sigIdx_207; - Circom_Sizes _sigSizes_190; - PBigInt _v_178; - int _offset_371; - PBigInt _sigValue_179 = ctx->allocBigInts(1); - int _sigIdx_208; - Circom_Sizes _sigSizes_191; - PBigInt _v_179; - int _offset_373; - PBigInt _sigValue_180 = ctx->allocBigInts(1); - PBigInt _tmp_154 = ctx->allocBigInts(1); - int _sigIdx_209; - Circom_Sizes _sigSizes_192; - PBigInt _v_180; - int _offset_375; - int _sigIdx_210; - Circom_Sizes _sigSizes_193; - PBigInt _v_181; - int _offset_377; - PBigInt _sigValue_181 = ctx->allocBigInts(1); - int _sigIdx_211; - Circom_Sizes _sigSizes_194; - PBigInt _v_182; - int _offset_379; - PBigInt _sigValue_182 = ctx->allocBigInts(1); - PBigInt _tmp_155 = ctx->allocBigInts(1); - int _sigIdx_212; - Circom_Sizes _sigSizes_195; - PBigInt _v_183; - int _offset_381; - PBigInt _sigValue_183 = ctx->allocBigInts(1); - PBigInt _tmp_156 = ctx->allocBigInts(1); - int _sigIdx_213; - Circom_Sizes _sigSizes_196; - PBigInt _v_184; - int _offset_383; - PBigInt _sigValue_184 = ctx->allocBigInts(1); - PBigInt _tmp_157 = ctx->allocBigInts(1); - int _sigIdx_214; - Circom_Sizes _sigSizes_197; - PBigInt _v_185; - int _offset_385; - PBigInt _sigValue_185 = ctx->allocBigInts(1); - PBigInt _tmp_158 = ctx->allocBigInts(1); - int _sigIdx_215; - Circom_Sizes _sigSizes_198; - PBigInt _v_186; - int _offset_387; - PBigInt _sigValue_186 = ctx->allocBigInts(1); - PBigInt _tmp_159 = ctx->allocBigInts(1); - int _sigIdx_216; - Circom_Sizes _sigSizes_199; - PBigInt _v_187; - int _offset_389; - PBigInt _sigValue_187 = ctx->allocBigInts(1); - PBigInt _tmp_160 = ctx->allocBigInts(1); - int _sigIdx_217; - Circom_Sizes _sigSizes_200; - PBigInt _v_188; - int _offset_391; - PBigInt _sigValue_188 = ctx->allocBigInts(1); - PBigInt _tmp_161 = ctx->allocBigInts(1); - int _sigIdx_218; - PBigInt _sigValue_189 = ctx->allocBigInts(1); - PBigInt _tmp_162 = ctx->allocBigInts(1); - int _sigIdx_219; - Circom_Sizes _sigSizes_201; - PBigInt _v_189; - int _offset_393; - int _sigIdx_220; - Circom_Sizes _sigSizes_202; - PBigInt _v_190; - int _offset_395; - PBigInt _sigValue_190 = ctx->allocBigInts(1); - int _sigIdx_221; - Circom_Sizes _sigSizes_203; - PBigInt _v_191; - int _offset_397; - PBigInt _sigValue_191 = ctx->allocBigInts(1); - PBigInt _tmp_163 = ctx->allocBigInts(1); - int _sigIdx_222; - Circom_Sizes _sigSizes_204; - PBigInt _v_192; - int _offset_399; - PBigInt _sigValue_192 = ctx->allocBigInts(1); - PBigInt _tmp_164 = ctx->allocBigInts(1); - int _sigIdx_223; - Circom_Sizes _sigSizes_205; - PBigInt _v_193; - int _offset_401; - PBigInt _sigValue_193 = ctx->allocBigInts(1); - PBigInt _tmp_165 = ctx->allocBigInts(1); - int _sigIdx_224; - PBigInt _sigValue_194 = ctx->allocBigInts(1); - PBigInt _tmp_166 = ctx->allocBigInts(1); - int _sigIdx_225; - Circom_Sizes _sigSizes_206; - PBigInt _v_194; - int _offset_403; - int _sigIdx_226; - Circom_Sizes _sigSizes_207; - PBigInt _v_195; - int _offset_405; - PBigInt _sigValue_195 = ctx->allocBigInts(1); - int _sigIdx_227; - Circom_Sizes _sigSizes_208; - PBigInt _v_196; - int _offset_407; - PBigInt _sigValue_196 = ctx->allocBigInts(1); - PBigInt _tmp_167 = ctx->allocBigInts(1); - int _sigIdx_228; - Circom_Sizes _sigSizes_209; - PBigInt _v_197; - int _offset_409; - PBigInt _sigValue_197 = ctx->allocBigInts(1); - PBigInt _tmp_168 = ctx->allocBigInts(1); - int _sigIdx_229; - Circom_Sizes _sigSizes_210; - PBigInt _v_198; - int _offset_411; - PBigInt _sigValue_198 = ctx->allocBigInts(1); - PBigInt _tmp_169 = ctx->allocBigInts(1); - int _sigIdx_230; - PBigInt _sigValue_199 = ctx->allocBigInts(1); - PBigInt _tmp_170 = ctx->allocBigInts(1); - int _sigIdx_231; - Circom_Sizes _sigSizes_211; - PBigInt _v_199; - int _offset_413; - int _sigIdx_232; - Circom_Sizes _sigSizes_212; - PBigInt _v_200; - int _offset_415; - PBigInt _sigValue_200 = ctx->allocBigInts(1); - int _sigIdx_233; - Circom_Sizes _sigSizes_213; - PBigInt _v_201; - int _offset_417; - PBigInt _sigValue_201 = ctx->allocBigInts(1); - PBigInt _tmp_171 = ctx->allocBigInts(1); - int _sigIdx_234; - Circom_Sizes _sigSizes_214; - PBigInt _v_202; - int _offset_419; - PBigInt _sigValue_202 = ctx->allocBigInts(1); - PBigInt _tmp_172 = ctx->allocBigInts(1); - int _sigIdx_235; - Circom_Sizes _sigSizes_215; - PBigInt _v_203; - int _offset_421; - PBigInt _sigValue_203 = ctx->allocBigInts(1); - PBigInt _tmp_173 = ctx->allocBigInts(1); - int _sigIdx_236; - PBigInt _sigValue_204 = ctx->allocBigInts(1); - PBigInt _tmp_174 = ctx->allocBigInts(1); - int _sigIdx_237; - Circom_Sizes _sigSizes_216; - PBigInt _v_204; - int _offset_423; - int _sigIdx_238; - Circom_Sizes _sigSizes_217; - PBigInt _v_205; - int _offset_425; - PBigInt _sigValue_205 = ctx->allocBigInts(1); - int _sigIdx_239; - Circom_Sizes _sigSizes_218; - PBigInt _v_206; - int _offset_427; - PBigInt _sigValue_206 = ctx->allocBigInts(1); - PBigInt _tmp_175 = ctx->allocBigInts(1); - int _sigIdx_240; - Circom_Sizes _sigSizes_219; - int _offset_428; - PBigInt _sigValue_207 = ctx->allocBigInts(1); - PBigInt _tmp_176 = ctx->allocBigInts(1); - int _sigIdx_241; - Circom_Sizes _sigSizes_220; - PBigInt _v_207; - int _offset_430; - int _sigIdx_242; - Circom_Sizes _sigSizes_221; - PBigInt _v_208; - int _offset_432; - PBigInt _sigValue_208 = ctx->allocBigInts(1); - int _sigIdx_243; - Circom_Sizes _sigSizes_222; - PBigInt _v_209; - int _offset_434; - PBigInt _sigValue_209 = ctx->allocBigInts(1); - PBigInt _tmp_177 = ctx->allocBigInts(1); - int _sigIdx_244; - Circom_Sizes _sigSizes_223; - int _offset_435; - PBigInt _sigValue_210 = ctx->allocBigInts(1); - PBigInt _tmp_178 = ctx->allocBigInts(1); - int _sigIdx_245; - Circom_Sizes _sigSizes_224; - PBigInt _v_210; - int _offset_437; - int _sigIdx_246; - Circom_Sizes _sigSizes_225; - PBigInt _v_211; - int _offset_439; - PBigInt _sigValue_211 = ctx->allocBigInts(1); - int _sigIdx_247; - Circom_Sizes _sigSizes_226; - PBigInt _v_212; - int _offset_441; - PBigInt _sigValue_212 = ctx->allocBigInts(1); - PBigInt _tmp_179 = ctx->allocBigInts(1); - int _sigIdx_248; - Circom_Sizes _sigSizes_227; - int _offset_442; - PBigInt _sigValue_213 = ctx->allocBigInts(1); - PBigInt _tmp_180 = ctx->allocBigInts(1); - int _sigIdx_249; - Circom_Sizes _sigSizes_228; - PBigInt _v_213; - int _offset_444; - int _sigIdx_250; - Circom_Sizes _sigSizes_229; - PBigInt _v_214; - int _offset_446; - PBigInt _sigValue_214 = ctx->allocBigInts(1); - int _sigIdx_251; - Circom_Sizes _sigSizes_230; - PBigInt _v_215; - int _offset_448; - int _sigIdx_252; - Circom_Sizes _sigSizes_231; - PBigInt _v_216; - int _offset_450; - PBigInt _sigValue_215 = ctx->allocBigInts(1); - int _sigIdx_253; - Circom_Sizes _sigSizes_232; - PBigInt _v_217; - int _offset_452; - PBigInt _sigValue_216 = ctx->allocBigInts(1); - PBigInt _tmp_181 = ctx->allocBigInts(1); - int _sigIdx_254; - Circom_Sizes _sigSizes_233; - PBigInt _v_218; - int _offset_454; - PBigInt _sigValue_217 = ctx->allocBigInts(1); - PBigInt _tmp_182 = ctx->allocBigInts(1); - int _sigIdx_255; - Circom_Sizes _sigSizes_234; - PBigInt _v_219; - int _offset_456; - PBigInt _sigValue_218 = ctx->allocBigInts(1); - PBigInt _tmp_183 = ctx->allocBigInts(1); - int _sigIdx_256; - Circom_Sizes _sigSizes_235; - PBigInt _v_220; - int _offset_458; - PBigInt _sigValue_219 = ctx->allocBigInts(1); - PBigInt _tmp_184 = ctx->allocBigInts(1); - int _sigIdx_257; - Circom_Sizes _sigSizes_236; - PBigInt _v_221; - int _offset_460; - PBigInt _sigValue_220 = ctx->allocBigInts(1); - PBigInt _tmp_185 = ctx->allocBigInts(1); - int _sigIdx_258; - Circom_Sizes _sigSizes_237; - PBigInt _v_222; - int _offset_462; - PBigInt _sigValue_221 = ctx->allocBigInts(1); - PBigInt _tmp_186 = ctx->allocBigInts(1); - int _sigIdx_259; - Circom_Sizes _sigSizes_238; - PBigInt _v_223; - int _offset_464; - PBigInt _sigValue_222 = ctx->allocBigInts(1); - PBigInt _tmp_187 = ctx->allocBigInts(1); - int _sigIdx_260; - Circom_Sizes _sigSizes_239; - int _offset_465; - PBigInt _sigValue_223 = ctx->allocBigInts(1); - PBigInt _tmp_188 = ctx->allocBigInts(1); - int _sigIdx_261; - Circom_Sizes _sigSizes_240; - PBigInt _v_224; - int _offset_467; - PBigInt _sigValue_224 = ctx->allocBigInts(1); - int _sigIdx_262; - Circom_Sizes _sigSizes_241; - PBigInt _v_225; - int _offset_469; - PBigInt _sigValue_225 = ctx->allocBigInts(1); - PBigInt _tmp_189 = ctx->allocBigInts(1); - int _sigIdx_263; - Circom_Sizes _sigSizes_242; - PBigInt _v_226; - int _offset_471; - PBigInt _sigValue_226 = ctx->allocBigInts(1); - PBigInt _tmp_190 = ctx->allocBigInts(1); - int _sigIdx_264; - Circom_Sizes _sigSizes_243; - PBigInt _v_227; - int _offset_473; - PBigInt _sigValue_227 = ctx->allocBigInts(1); - PBigInt _tmp_191 = ctx->allocBigInts(1); - int _sigIdx_265; - Circom_Sizes _sigSizes_244; - PBigInt _v_228; - int _offset_475; - PBigInt _sigValue_228 = ctx->allocBigInts(1); - PBigInt _tmp_192 = ctx->allocBigInts(1); - int _sigIdx_266; - Circom_Sizes _sigSizes_245; - PBigInt _v_229; - int _offset_477; - PBigInt _sigValue_229 = ctx->allocBigInts(1); - PBigInt _tmp_193 = ctx->allocBigInts(1); - int _sigIdx_267; - Circom_Sizes _sigSizes_246; - PBigInt _v_230; - int _offset_479; - PBigInt _sigValue_230 = ctx->allocBigInts(1); - PBigInt _tmp_194 = ctx->allocBigInts(1); - int _sigIdx_268; - Circom_Sizes _sigSizes_247; - PBigInt _v_231; - int _offset_481; - PBigInt _sigValue_231 = ctx->allocBigInts(1); - PBigInt _tmp_195 = ctx->allocBigInts(1); - PBigInt _tmp_196 = ctx->allocBigInts(1); - int _sigIdx_269; - Circom_Sizes _sigSizes_248; - PBigInt _v_232; - int _offset_483; - PBigInt _v_233; - PBigInt _tmp_197 = ctx->allocBigInts(1); - PBigInt _v_234; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "2", 10); - PBigInt _tmp_198 = ctx->allocBigInts(1); - - - /* signal input c[n][16] */ - - /* signal input s[4] */ - - /* signal output out[n] */ - - /* signal a3210[n] */ - - /* signal a321[n] */ - - /* signal a320[n] */ - - /* signal a310[n] */ - - /* signal a32[n] */ - - /* signal a31[n] */ - - /* signal a30[n] */ - - /* signal a3[n] */ - - /* signal a210[n] */ - - /* signal a21[n] */ - - /* signal a20[n] */ - - /* signal a10[n] */ - - /* signal a2[n] */ - - /* signal a1[n] */ - - /* signal a0[n] */ - - /* signal a[n] */ - - /* signal s10 */ - - /* s10 <== s[1] * s[0] */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset = _sigIdx + 1*_sigSizes[1]; - ctx->getSignal(ctx->cIdx, _offset, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_1 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_1, _sigValue_1); - ctx->field->mul(_tmp,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); - - /* signal s20 */ - - /* s20 <== s[2] * s[0] */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_2 = _sigIdx_3 + 2*_sigSizes_2[1]; - ctx->getSignal(ctx->cIdx, _offset_2, _sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_3 = _sigIdx_4 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_3, _sigValue_3); - ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); - ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); - - /* signal s21 */ - - /* s21 <== s[2] * s[1] */ - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_4 = _sigIdx_6 + 2*_sigSizes_4[1]; - ctx->getSignal(ctx->cIdx, _offset_4, _sigValue_4); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_5 = _sigIdx_7 + 1*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_5, _sigValue_5); - ctx->field->mul(_tmp_2,_sigValue_4,_sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->setSignal(ctx->cIdx, _sigIdx_8, _tmp_2); - - /* signal s210 */ - - /* s210 <== s21 * s[0] */ - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_6); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx_10 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_6, _sigValue_7); - ctx->field->mul(_tmp_3,_sigValue_6,_sigValue_7); - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); - ctx->setSignal(ctx->cIdx, _sigIdx_11, _tmp_3); - - /* for (var i=0,igetSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_11 = _sigIdx_12 + 0*_sigSizes_7[1] + 15*_sigSizes_7[2]; - ctx->getSignal(ctx->cIdx, _offset_11, _sigValue_8); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_8 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_13 = _sigIdx_13 + 0*_sigSizes_8[1] + 14*_sigSizes_8[2]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_9); - ctx->field->sub(_tmp_5,_sigValue_8,_sigValue_9); - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_9 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_15 = _sigIdx_14 + 0*_sigSizes_9[1] + 13*_sigSizes_9[2]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_10); - ctx->field->sub(_tmp_6,_tmp_5,_sigValue_10); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_17 = _sigIdx_15 + 0*_sigSizes_10[1] + 12*_sigSizes_10[2]; - ctx->getSignal(ctx->cIdx, _offset_17, _sigValue_11); - ctx->field->add(_tmp_7,_tmp_6,_sigValue_11); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_19 = _sigIdx_16 + 0*_sigSizes_11[1] + 11*_sigSizes_11[2]; - ctx->getSignal(ctx->cIdx, _offset_19, _sigValue_12); - ctx->field->sub(_tmp_8,_tmp_7,_sigValue_12); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_12 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_21 = _sigIdx_17 + 0*_sigSizes_12[1] + 10*_sigSizes_12[2]; - ctx->getSignal(ctx->cIdx, _offset_21, _sigValue_13); - ctx->field->add(_tmp_9,_tmp_8,_sigValue_13); - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_13 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_23 = _sigIdx_18 + 0*_sigSizes_13[1] + 9*_sigSizes_13[2]; - ctx->getSignal(ctx->cIdx, _offset_23, _sigValue_14); - ctx->field->add(_tmp_10,_tmp_9,_sigValue_14); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_14 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_25 = _sigIdx_19 + 0*_sigSizes_14[1] + 8*_sigSizes_14[2]; - ctx->getSignal(ctx->cIdx, _offset_25, _sigValue_15); - ctx->field->sub(_tmp_11,_tmp_10,_sigValue_15); - _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_15 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_27 = _sigIdx_20 + 0*_sigSizes_15[1] + 7*_sigSizes_15[2]; - ctx->getSignal(ctx->cIdx, _offset_27, _sigValue_16); - ctx->field->sub(_tmp_12,_tmp_11,_sigValue_16); - _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_16 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_29 = _sigIdx_21 + 0*_sigSizes_16[1] + 6*_sigSizes_16[2]; - ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_17); - ctx->field->add(_tmp_13,_tmp_12,_sigValue_17); - _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_17 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_31 = _sigIdx_22 + 0*_sigSizes_17[1] + 5*_sigSizes_17[2]; - ctx->getSignal(ctx->cIdx, _offset_31, _sigValue_18); - ctx->field->add(_tmp_14,_tmp_13,_sigValue_18); - _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_18 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_33 = _sigIdx_23 + 0*_sigSizes_18[1] + 4*_sigSizes_18[2]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_19); - ctx->field->sub(_tmp_15,_tmp_14,_sigValue_19); - _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_19 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_35 = _sigIdx_24 + 0*_sigSizes_19[1] + 3*_sigSizes_19[2]; - ctx->getSignal(ctx->cIdx, _offset_35, _sigValue_20); - ctx->field->add(_tmp_16,_tmp_15,_sigValue_20); - _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_20 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_37 = _sigIdx_25 + 0*_sigSizes_20[1] + 2*_sigSizes_20[2]; - ctx->getSignal(ctx->cIdx, _offset_37, _sigValue_21); - ctx->field->sub(_tmp_17,_tmp_16,_sigValue_21); - _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_21 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_39 = _sigIdx_26 + 0*_sigSizes_21[1] + 1*_sigSizes_21[2]; - ctx->getSignal(ctx->cIdx, _offset_39, _sigValue_22); - ctx->field->sub(_tmp_18,_tmp_17,_sigValue_22); - _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_22 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_41 = _sigIdx_27 + 0*_sigSizes_22[1] + 0*_sigSizes_22[2]; - ctx->getSignal(ctx->cIdx, _offset_41, _sigValue_23); - ctx->field->add(_tmp_19,_tmp_18,_sigValue_23); - _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); - ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_24); - ctx->field->mul(_tmp_20,_tmp_19,_sigValue_24); - _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _sigSizes_23 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _offset_43 = _sigIdx_29 + 0*_sigSizes_23[1]; - ctx->setSignal(ctx->cIdx, _offset_43, _tmp_20); - - /* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */ - _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_24 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_45 = _sigIdx_30 + 0*_sigSizes_24[1] + 14*_sigSizes_24[2]; - ctx->getSignal(ctx->cIdx, _offset_45, _sigValue_25); - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_25 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_47 = _sigIdx_31 + 0*_sigSizes_25[1] + 12*_sigSizes_25[2]; - ctx->getSignal(ctx->cIdx, _offset_47, _sigValue_26); - ctx->field->sub(_tmp_21,_sigValue_25,_sigValue_26); - _sigIdx_32 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_26 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_49 = _sigIdx_32 + 0*_sigSizes_26[1] + 10*_sigSizes_26[2]; - ctx->getSignal(ctx->cIdx, _offset_49, _sigValue_27); - ctx->field->sub(_tmp_22,_tmp_21,_sigValue_27); - _sigIdx_33 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_27 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_51 = _sigIdx_33 + 0*_sigSizes_27[1] + 8*_sigSizes_27[2]; - ctx->getSignal(ctx->cIdx, _offset_51, _sigValue_28); - ctx->field->add(_tmp_23,_tmp_22,_sigValue_28); - _sigIdx_34 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_28 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_53 = _sigIdx_34 + 0*_sigSizes_28[1] + 6*_sigSizes_28[2]; - ctx->getSignal(ctx->cIdx, _offset_53, _sigValue_29); - ctx->field->sub(_tmp_24,_tmp_23,_sigValue_29); - _sigIdx_35 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_29 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_55 = _sigIdx_35 + 0*_sigSizes_29[1] + 4*_sigSizes_29[2]; - ctx->getSignal(ctx->cIdx, _offset_55, _sigValue_30); - ctx->field->add(_tmp_25,_tmp_24,_sigValue_30); - _sigIdx_36 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_30 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_57 = _sigIdx_36 + 0*_sigSizes_30[1] + 2*_sigSizes_30[2]; - ctx->getSignal(ctx->cIdx, _offset_57, _sigValue_31); - ctx->field->add(_tmp_26,_tmp_25,_sigValue_31); - _sigIdx_37 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_31 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_59 = _sigIdx_37 + 0*_sigSizes_31[1] + 0*_sigSizes_31[2]; - ctx->getSignal(ctx->cIdx, _offset_59, _sigValue_32); - ctx->field->sub(_tmp_27,_tmp_26,_sigValue_32); - _sigIdx_38 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->getSignal(ctx->cIdx, _sigIdx_38, _sigValue_33); - ctx->field->mul(_tmp_28,_tmp_27,_sigValue_33); - _sigIdx_39 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _sigSizes_32 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _offset_61 = _sigIdx_39 + 0*_sigSizes_32[1]; - ctx->setSignal(ctx->cIdx, _offset_61, _tmp_28); - - /* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */ - _sigIdx_40 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_33 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_63 = _sigIdx_40 + 0*_sigSizes_33[1] + 13*_sigSizes_33[2]; - ctx->getSignal(ctx->cIdx, _offset_63, _sigValue_34); - _sigIdx_41 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_34 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_65 = _sigIdx_41 + 0*_sigSizes_34[1] + 12*_sigSizes_34[2]; - ctx->getSignal(ctx->cIdx, _offset_65, _sigValue_35); - ctx->field->sub(_tmp_29,_sigValue_34,_sigValue_35); - _sigIdx_42 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_35 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_67 = _sigIdx_42 + 0*_sigSizes_35[1] + 9*_sigSizes_35[2]; - ctx->getSignal(ctx->cIdx, _offset_67, _sigValue_36); - ctx->field->sub(_tmp_30,_tmp_29,_sigValue_36); - _sigIdx_43 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_36 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_69 = _sigIdx_43 + 0*_sigSizes_36[1] + 8*_sigSizes_36[2]; - ctx->getSignal(ctx->cIdx, _offset_69, _sigValue_37); - ctx->field->add(_tmp_31,_tmp_30,_sigValue_37); - _sigIdx_44 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_37 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_71 = _sigIdx_44 + 0*_sigSizes_37[1] + 5*_sigSizes_37[2]; - ctx->getSignal(ctx->cIdx, _offset_71, _sigValue_38); - ctx->field->sub(_tmp_32,_tmp_31,_sigValue_38); - _sigIdx_45 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_38 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_73 = _sigIdx_45 + 0*_sigSizes_38[1] + 4*_sigSizes_38[2]; - ctx->getSignal(ctx->cIdx, _offset_73, _sigValue_39); - ctx->field->add(_tmp_33,_tmp_32,_sigValue_39); - _sigIdx_46 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_39 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_75 = _sigIdx_46 + 0*_sigSizes_39[1] + 1*_sigSizes_39[2]; - ctx->getSignal(ctx->cIdx, _offset_75, _sigValue_40); - ctx->field->add(_tmp_34,_tmp_33,_sigValue_40); - _sigIdx_47 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_40 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_77 = _sigIdx_47 + 0*_sigSizes_40[1] + 0*_sigSizes_40[2]; - ctx->getSignal(ctx->cIdx, _offset_77, _sigValue_41); - ctx->field->sub(_tmp_35,_tmp_34,_sigValue_41); - _sigIdx_48 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); - ctx->getSignal(ctx->cIdx, _sigIdx_48, _sigValue_42); - ctx->field->mul(_tmp_36,_tmp_35,_sigValue_42); - _sigIdx_49 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _sigSizes_41 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _offset_79 = _sigIdx_49 + 0*_sigSizes_41[1]; - ctx->setSignal(ctx->cIdx, _offset_79, _tmp_36); - - /* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ - _sigIdx_50 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_42 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_81 = _sigIdx_50 + 0*_sigSizes_42[1] + 11*_sigSizes_42[2]; - ctx->getSignal(ctx->cIdx, _offset_81, _sigValue_43); - _sigIdx_51 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_43 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_83 = _sigIdx_51 + 0*_sigSizes_43[1] + 10*_sigSizes_43[2]; - ctx->getSignal(ctx->cIdx, _offset_83, _sigValue_44); - ctx->field->sub(_tmp_37,_sigValue_43,_sigValue_44); - _sigIdx_52 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_44 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_85 = _sigIdx_52 + 0*_sigSizes_44[1] + 9*_sigSizes_44[2]; - ctx->getSignal(ctx->cIdx, _offset_85, _sigValue_45); - ctx->field->sub(_tmp_38,_tmp_37,_sigValue_45); - _sigIdx_53 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_45 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_87 = _sigIdx_53 + 0*_sigSizes_45[1] + 8*_sigSizes_45[2]; - ctx->getSignal(ctx->cIdx, _offset_87, _sigValue_46); - ctx->field->add(_tmp_39,_tmp_38,_sigValue_46); - _sigIdx_54 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_46 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_89 = _sigIdx_54 + 0*_sigSizes_46[1] + 3*_sigSizes_46[2]; - ctx->getSignal(ctx->cIdx, _offset_89, _sigValue_47); - ctx->field->sub(_tmp_40,_tmp_39,_sigValue_47); - _sigIdx_55 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_47 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_91 = _sigIdx_55 + 0*_sigSizes_47[1] + 2*_sigSizes_47[2]; - ctx->getSignal(ctx->cIdx, _offset_91, _sigValue_48); - ctx->field->add(_tmp_41,_tmp_40,_sigValue_48); - _sigIdx_56 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_48 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_93 = _sigIdx_56 + 0*_sigSizes_48[1] + 1*_sigSizes_48[2]; - ctx->getSignal(ctx->cIdx, _offset_93, _sigValue_49); - ctx->field->add(_tmp_42,_tmp_41,_sigValue_49); - _sigIdx_57 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_49 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_95 = _sigIdx_57 + 0*_sigSizes_49[1] + 0*_sigSizes_49[2]; - ctx->getSignal(ctx->cIdx, _offset_95, _sigValue_50); - ctx->field->sub(_tmp_43,_tmp_42,_sigValue_50); - _sigIdx_58 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_58, _sigValue_51); - ctx->field->mul(_tmp_44,_tmp_43,_sigValue_51); - _sigIdx_59 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _sigSizes_50 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _offset_97 = _sigIdx_59 + 0*_sigSizes_50[1]; - ctx->setSignal(ctx->cIdx, _offset_97, _tmp_44); - - /* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */ - _sigIdx_60 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_51 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_99 = _sigIdx_60 + 0*_sigSizes_51[1] + 12*_sigSizes_51[2]; - ctx->getSignal(ctx->cIdx, _offset_99, _sigValue_52); - _sigIdx_61 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_52 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_101 = _sigIdx_61 + 0*_sigSizes_52[1] + 8*_sigSizes_52[2]; - ctx->getSignal(ctx->cIdx, _offset_101, _sigValue_53); - ctx->field->sub(_tmp_45,_sigValue_52,_sigValue_53); - _sigIdx_62 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_53 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_103 = _sigIdx_62 + 0*_sigSizes_53[1] + 4*_sigSizes_53[2]; - ctx->getSignal(ctx->cIdx, _offset_103, _sigValue_54); - ctx->field->sub(_tmp_46,_tmp_45,_sigValue_54); - _sigIdx_63 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_54 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_105 = _sigIdx_63 + 0*_sigSizes_54[1] + 0*_sigSizes_54[2]; - ctx->getSignal(ctx->cIdx, _offset_105, _sigValue_55); - ctx->field->add(_tmp_47,_tmp_46,_sigValue_55); - _sigIdx_64 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_55 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_106 = _sigIdx_64 + 2*_sigSizes_55[1]; - ctx->getSignal(ctx->cIdx, _offset_106, _sigValue_56); - ctx->field->mul(_tmp_48,_tmp_47,_sigValue_56); - _sigIdx_65 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _sigSizes_56 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _offset_108 = _sigIdx_65 + 0*_sigSizes_56[1]; - ctx->setSignal(ctx->cIdx, _offset_108, _tmp_48); - - /* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */ - _sigIdx_66 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_57 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_110 = _sigIdx_66 + 0*_sigSizes_57[1] + 10*_sigSizes_57[2]; - ctx->getSignal(ctx->cIdx, _offset_110, _sigValue_57); - _sigIdx_67 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_58 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_112 = _sigIdx_67 + 0*_sigSizes_58[1] + 8*_sigSizes_58[2]; - ctx->getSignal(ctx->cIdx, _offset_112, _sigValue_58); - ctx->field->sub(_tmp_49,_sigValue_57,_sigValue_58); - _sigIdx_68 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_59 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_114 = _sigIdx_68 + 0*_sigSizes_59[1] + 2*_sigSizes_59[2]; - ctx->getSignal(ctx->cIdx, _offset_114, _sigValue_59); - ctx->field->sub(_tmp_50,_tmp_49,_sigValue_59); - _sigIdx_69 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_60 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_116 = _sigIdx_69 + 0*_sigSizes_60[1] + 0*_sigSizes_60[2]; - ctx->getSignal(ctx->cIdx, _offset_116, _sigValue_60); - ctx->field->add(_tmp_51,_tmp_50,_sigValue_60); - _sigIdx_70 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_61 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_117 = _sigIdx_70 + 1*_sigSizes_61[1]; - ctx->getSignal(ctx->cIdx, _offset_117, _sigValue_61); - ctx->field->mul(_tmp_52,_tmp_51,_sigValue_61); - _sigIdx_71 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _sigSizes_62 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _offset_119 = _sigIdx_71 + 0*_sigSizes_62[1]; - ctx->setSignal(ctx->cIdx, _offset_119, _tmp_52); - - /* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */ - _sigIdx_72 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_63 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_121 = _sigIdx_72 + 0*_sigSizes_63[1] + 9*_sigSizes_63[2]; - ctx->getSignal(ctx->cIdx, _offset_121, _sigValue_62); - _sigIdx_73 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_64 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_123 = _sigIdx_73 + 0*_sigSizes_64[1] + 8*_sigSizes_64[2]; - ctx->getSignal(ctx->cIdx, _offset_123, _sigValue_63); - ctx->field->sub(_tmp_53,_sigValue_62,_sigValue_63); - _sigIdx_74 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_65 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_125 = _sigIdx_74 + 0*_sigSizes_65[1] + 1*_sigSizes_65[2]; - ctx->getSignal(ctx->cIdx, _offset_125, _sigValue_64); - ctx->field->sub(_tmp_54,_tmp_53,_sigValue_64); - _sigIdx_75 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_66 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_127 = _sigIdx_75 + 0*_sigSizes_66[1] + 0*_sigSizes_66[2]; - ctx->getSignal(ctx->cIdx, _offset_127, _sigValue_65); - ctx->field->add(_tmp_55,_tmp_54,_sigValue_65); - _sigIdx_76 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_67 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_128 = _sigIdx_76 + 0*_sigSizes_67[1]; - ctx->getSignal(ctx->cIdx, _offset_128, _sigValue_66); - ctx->field->mul(_tmp_56,_tmp_55,_sigValue_66); - _sigIdx_77 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _sigSizes_68 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _offset_130 = _sigIdx_77 + 0*_sigSizes_68[1]; - ctx->setSignal(ctx->cIdx, _offset_130, _tmp_56); - - /* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */ - _sigIdx_78 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_69 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_132 = _sigIdx_78 + 0*_sigSizes_69[1] + 8*_sigSizes_69[2]; - ctx->getSignal(ctx->cIdx, _offset_132, _sigValue_67); - _sigIdx_79 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_70 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_134 = _sigIdx_79 + 0*_sigSizes_70[1] + 0*_sigSizes_70[2]; - ctx->getSignal(ctx->cIdx, _offset_134, _sigValue_68); - ctx->field->sub(_tmp_57,_sigValue_67,_sigValue_68); - _sigIdx_80 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _sigSizes_71 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _offset_136 = _sigIdx_80 + 0*_sigSizes_71[1]; - ctx->setSignal(ctx->cIdx, _offset_136, _tmp_57); - - /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */ - _sigIdx_81 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_72 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_138 = _sigIdx_81 + 0*_sigSizes_72[1] + 7*_sigSizes_72[2]; - ctx->getSignal(ctx->cIdx, _offset_138, _sigValue_69); - _sigIdx_82 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_73 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_140 = _sigIdx_82 + 0*_sigSizes_73[1] + 6*_sigSizes_73[2]; - ctx->getSignal(ctx->cIdx, _offset_140, _sigValue_70); - ctx->field->sub(_tmp_58,_sigValue_69,_sigValue_70); - _sigIdx_83 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_74 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_142 = _sigIdx_83 + 0*_sigSizes_74[1] + 5*_sigSizes_74[2]; - ctx->getSignal(ctx->cIdx, _offset_142, _sigValue_71); - ctx->field->sub(_tmp_59,_tmp_58,_sigValue_71); - _sigIdx_84 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_75 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_144 = _sigIdx_84 + 0*_sigSizes_75[1] + 4*_sigSizes_75[2]; - ctx->getSignal(ctx->cIdx, _offset_144, _sigValue_72); - ctx->field->add(_tmp_60,_tmp_59,_sigValue_72); - _sigIdx_85 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_76 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_146 = _sigIdx_85 + 0*_sigSizes_76[1] + 3*_sigSizes_76[2]; - ctx->getSignal(ctx->cIdx, _offset_146, _sigValue_73); - ctx->field->sub(_tmp_61,_tmp_60,_sigValue_73); - _sigIdx_86 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_77 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_148 = _sigIdx_86 + 0*_sigSizes_77[1] + 2*_sigSizes_77[2]; - ctx->getSignal(ctx->cIdx, _offset_148, _sigValue_74); - ctx->field->add(_tmp_62,_tmp_61,_sigValue_74); - _sigIdx_87 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_78 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_150 = _sigIdx_87 + 0*_sigSizes_78[1] + 1*_sigSizes_78[2]; - ctx->getSignal(ctx->cIdx, _offset_150, _sigValue_75); - ctx->field->add(_tmp_63,_tmp_62,_sigValue_75); - _sigIdx_88 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_79 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_152 = _sigIdx_88 + 0*_sigSizes_79[1] + 0*_sigSizes_79[2]; - ctx->getSignal(ctx->cIdx, _offset_152, _sigValue_76); - ctx->field->sub(_tmp_64,_tmp_63,_sigValue_76); - _sigIdx_89 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); - ctx->getSignal(ctx->cIdx, _sigIdx_89, _sigValue_77); - ctx->field->mul(_tmp_65,_tmp_64,_sigValue_77); - _sigIdx_90 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_80 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _offset_154 = _sigIdx_90 + 0*_sigSizes_80[1]; - ctx->setSignal(ctx->cIdx, _offset_154, _tmp_65); - - /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */ - _sigIdx_91 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_81 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_156 = _sigIdx_91 + 0*_sigSizes_81[1] + 6*_sigSizes_81[2]; - ctx->getSignal(ctx->cIdx, _offset_156, _sigValue_78); - _sigIdx_92 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_82 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_158 = _sigIdx_92 + 0*_sigSizes_82[1] + 4*_sigSizes_82[2]; - ctx->getSignal(ctx->cIdx, _offset_158, _sigValue_79); - ctx->field->sub(_tmp_66,_sigValue_78,_sigValue_79); - _sigIdx_93 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_83 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_160 = _sigIdx_93 + 0*_sigSizes_83[1] + 2*_sigSizes_83[2]; - ctx->getSignal(ctx->cIdx, _offset_160, _sigValue_80); - ctx->field->sub(_tmp_67,_tmp_66,_sigValue_80); - _sigIdx_94 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_84 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_162 = _sigIdx_94 + 0*_sigSizes_84[1] + 0*_sigSizes_84[2]; - ctx->getSignal(ctx->cIdx, _offset_162, _sigValue_81); - ctx->field->add(_tmp_68,_tmp_67,_sigValue_81); - _sigIdx_95 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->getSignal(ctx->cIdx, _sigIdx_95, _sigValue_82); - ctx->field->mul(_tmp_69,_tmp_68,_sigValue_82); - _sigIdx_96 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_85 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _offset_164 = _sigIdx_96 + 0*_sigSizes_85[1]; - ctx->setSignal(ctx->cIdx, _offset_164, _tmp_69); - - /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */ - _sigIdx_97 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_86 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_166 = _sigIdx_97 + 0*_sigSizes_86[1] + 5*_sigSizes_86[2]; - ctx->getSignal(ctx->cIdx, _offset_166, _sigValue_83); - _sigIdx_98 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_87 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_168 = _sigIdx_98 + 0*_sigSizes_87[1] + 4*_sigSizes_87[2]; - ctx->getSignal(ctx->cIdx, _offset_168, _sigValue_84); - ctx->field->sub(_tmp_70,_sigValue_83,_sigValue_84); - _sigIdx_99 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_88 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_170 = _sigIdx_99 + 0*_sigSizes_88[1] + 1*_sigSizes_88[2]; - ctx->getSignal(ctx->cIdx, _offset_170, _sigValue_85); - ctx->field->sub(_tmp_71,_tmp_70,_sigValue_85); - _sigIdx_100 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_89 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_172 = _sigIdx_100 + 0*_sigSizes_89[1] + 0*_sigSizes_89[2]; - ctx->getSignal(ctx->cIdx, _offset_172, _sigValue_86); - ctx->field->add(_tmp_72,_tmp_71,_sigValue_86); - _sigIdx_101 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); - ctx->getSignal(ctx->cIdx, _sigIdx_101, _sigValue_87); - ctx->field->mul(_tmp_73,_tmp_72,_sigValue_87); - _sigIdx_102 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_90 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _offset_174 = _sigIdx_102 + 0*_sigSizes_90[1]; - ctx->setSignal(ctx->cIdx, _offset_174, _tmp_73); - - /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ - _sigIdx_103 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_91 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_176 = _sigIdx_103 + 0*_sigSizes_91[1] + 3*_sigSizes_91[2]; - ctx->getSignal(ctx->cIdx, _offset_176, _sigValue_88); - _sigIdx_104 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_92 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_178 = _sigIdx_104 + 0*_sigSizes_92[1] + 2*_sigSizes_92[2]; - ctx->getSignal(ctx->cIdx, _offset_178, _sigValue_89); - ctx->field->sub(_tmp_74,_sigValue_88,_sigValue_89); - _sigIdx_105 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_93 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_180 = _sigIdx_105 + 0*_sigSizes_93[1] + 1*_sigSizes_93[2]; - ctx->getSignal(ctx->cIdx, _offset_180, _sigValue_90); - ctx->field->sub(_tmp_75,_tmp_74,_sigValue_90); - _sigIdx_106 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_94 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_182 = _sigIdx_106 + 0*_sigSizes_94[1] + 0*_sigSizes_94[2]; - ctx->getSignal(ctx->cIdx, _offset_182, _sigValue_91); - ctx->field->add(_tmp_76,_tmp_75,_sigValue_91); - _sigIdx_107 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_107, _sigValue_92); - ctx->field->mul(_tmp_77,_tmp_76,_sigValue_92); - _sigIdx_108 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_95 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _offset_184 = _sigIdx_108 + 0*_sigSizes_95[1]; - ctx->setSignal(ctx->cIdx, _offset_184, _tmp_77); - - /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */ - _sigIdx_109 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_96 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_186 = _sigIdx_109 + 0*_sigSizes_96[1] + 4*_sigSizes_96[2]; - ctx->getSignal(ctx->cIdx, _offset_186, _sigValue_93); - _sigIdx_110 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_97 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_188 = _sigIdx_110 + 0*_sigSizes_97[1] + 0*_sigSizes_97[2]; - ctx->getSignal(ctx->cIdx, _offset_188, _sigValue_94); - ctx->field->sub(_tmp_78,_sigValue_93,_sigValue_94); - _sigIdx_111 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_98 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_189 = _sigIdx_111 + 2*_sigSizes_98[1]; - ctx->getSignal(ctx->cIdx, _offset_189, _sigValue_95); - ctx->field->mul(_tmp_79,_tmp_78,_sigValue_95); - _sigIdx_112 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_99 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _offset_191 = _sigIdx_112 + 0*_sigSizes_99[1]; - ctx->setSignal(ctx->cIdx, _offset_191, _tmp_79); - - /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ - _sigIdx_113 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_100 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_193 = _sigIdx_113 + 0*_sigSizes_100[1] + 2*_sigSizes_100[2]; - ctx->getSignal(ctx->cIdx, _offset_193, _sigValue_96); - _sigIdx_114 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_101 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_195 = _sigIdx_114 + 0*_sigSizes_101[1] + 0*_sigSizes_101[2]; - ctx->getSignal(ctx->cIdx, _offset_195, _sigValue_97); - ctx->field->sub(_tmp_80,_sigValue_96,_sigValue_97); - _sigIdx_115 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_102 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_196 = _sigIdx_115 + 1*_sigSizes_102[1]; - ctx->getSignal(ctx->cIdx, _offset_196, _sigValue_98); - ctx->field->mul(_tmp_81,_tmp_80,_sigValue_98); - _sigIdx_116 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_103 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _offset_198 = _sigIdx_116 + 0*_sigSizes_103[1]; - ctx->setSignal(ctx->cIdx, _offset_198, _tmp_81); - - /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ - _sigIdx_117 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_104 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_200 = _sigIdx_117 + 0*_sigSizes_104[1] + 1*_sigSizes_104[2]; - ctx->getSignal(ctx->cIdx, _offset_200, _sigValue_99); - _sigIdx_118 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_105 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_202 = _sigIdx_118 + 0*_sigSizes_105[1] + 0*_sigSizes_105[2]; - ctx->getSignal(ctx->cIdx, _offset_202, _sigValue_100); - ctx->field->sub(_tmp_82,_sigValue_99,_sigValue_100); - _sigIdx_119 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_106 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_203 = _sigIdx_119 + 0*_sigSizes_106[1]; - ctx->getSignal(ctx->cIdx, _offset_203, _sigValue_101); - ctx->field->mul(_tmp_83,_tmp_82,_sigValue_101); - _sigIdx_120 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_107 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _offset_205 = _sigIdx_120 + 0*_sigSizes_107[1]; - ctx->setSignal(ctx->cIdx, _offset_205, _tmp_83); - - /* a[i] <== ( c[i][ 0] ) */ - _sigIdx_121 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_108 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _offset_207 = _sigIdx_121 + 0*_sigSizes_108[1] + 0*_sigSizes_108[2]; - ctx->getSignal(ctx->cIdx, _offset_207, _sigValue_102); - _sigIdx_122 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_109 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _offset_209 = _sigIdx_122 + 0*_sigSizes_109[1]; - ctx->setSignal(ctx->cIdx, _offset_209, _sigValue_102); - - /* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] + - ( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */ - _sigIdx_123 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _sigSizes_110 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _offset_211 = _sigIdx_123 + 0*_sigSizes_110[1]; - ctx->getSignal(ctx->cIdx, _offset_211, _sigValue_103); - _sigIdx_124 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _sigSizes_111 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _offset_213 = _sigIdx_124 + 0*_sigSizes_111[1]; - ctx->getSignal(ctx->cIdx, _offset_213, _sigValue_104); - ctx->field->add(_tmp_84,_sigValue_103,_sigValue_104); - _sigIdx_125 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _sigSizes_112 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _offset_215 = _sigIdx_125 + 0*_sigSizes_112[1]; - ctx->getSignal(ctx->cIdx, _offset_215, _sigValue_105); - ctx->field->add(_tmp_85,_tmp_84,_sigValue_105); - _sigIdx_126 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _sigSizes_113 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _offset_217 = _sigIdx_126 + 0*_sigSizes_113[1]; - ctx->getSignal(ctx->cIdx, _offset_217, _sigValue_106); - ctx->field->add(_tmp_86,_tmp_85,_sigValue_106); - _sigIdx_127 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _sigSizes_114 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _offset_219 = _sigIdx_127 + 0*_sigSizes_114[1]; - ctx->getSignal(ctx->cIdx, _offset_219, _sigValue_107); - ctx->field->add(_tmp_87,_tmp_86,_sigValue_107); - _sigIdx_128 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _sigSizes_115 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _offset_221 = _sigIdx_128 + 0*_sigSizes_115[1]; - ctx->getSignal(ctx->cIdx, _offset_221, _sigValue_108); - ctx->field->add(_tmp_88,_tmp_87,_sigValue_108); - _sigIdx_129 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _sigSizes_116 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _offset_223 = _sigIdx_129 + 0*_sigSizes_116[1]; - ctx->getSignal(ctx->cIdx, _offset_223, _sigValue_109); - ctx->field->add(_tmp_89,_tmp_88,_sigValue_109); - _sigIdx_130 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _sigSizes_117 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _offset_225 = _sigIdx_130 + 0*_sigSizes_117[1]; - ctx->getSignal(ctx->cIdx, _offset_225, _sigValue_110); - ctx->field->add(_tmp_90,_tmp_89,_sigValue_110); - _sigIdx_131 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_118 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_226 = _sigIdx_131 + 3*_sigSizes_118[1]; - ctx->getSignal(ctx->cIdx, _offset_226, _sigValue_111); - ctx->field->mul(_tmp_91,_tmp_90,_sigValue_111); - _sigIdx_132 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_119 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _offset_228 = _sigIdx_132 + 0*_sigSizes_119[1]; - ctx->getSignal(ctx->cIdx, _offset_228, _sigValue_112); - _sigIdx_133 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_120 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _offset_230 = _sigIdx_133 + 0*_sigSizes_120[1]; - ctx->getSignal(ctx->cIdx, _offset_230, _sigValue_113); - ctx->field->add(_tmp_92,_sigValue_112,_sigValue_113); - _sigIdx_134 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_121 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _offset_232 = _sigIdx_134 + 0*_sigSizes_121[1]; - ctx->getSignal(ctx->cIdx, _offset_232, _sigValue_114); - ctx->field->add(_tmp_93,_tmp_92,_sigValue_114); - _sigIdx_135 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_122 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _offset_234 = _sigIdx_135 + 0*_sigSizes_122[1]; - ctx->getSignal(ctx->cIdx, _offset_234, _sigValue_115); - ctx->field->add(_tmp_94,_tmp_93,_sigValue_115); - _sigIdx_136 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_123 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _offset_236 = _sigIdx_136 + 0*_sigSizes_123[1]; - ctx->getSignal(ctx->cIdx, _offset_236, _sigValue_116); - ctx->field->add(_tmp_95,_tmp_94,_sigValue_116); - _sigIdx_137 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_124 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _offset_238 = _sigIdx_137 + 0*_sigSizes_124[1]; - ctx->getSignal(ctx->cIdx, _offset_238, _sigValue_117); - ctx->field->add(_tmp_96,_tmp_95,_sigValue_117); - _sigIdx_138 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_125 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _offset_240 = _sigIdx_138 + 0*_sigSizes_125[1]; - ctx->getSignal(ctx->cIdx, _offset_240, _sigValue_118); - ctx->field->add(_tmp_97,_tmp_96,_sigValue_118); - _sigIdx_139 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_126 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _offset_242 = _sigIdx_139 + 0*_sigSizes_126[1]; - ctx->getSignal(ctx->cIdx, _offset_242, _sigValue_119); - ctx->field->add(_tmp_98,_tmp_97,_sigValue_119); - ctx->field->add(_tmp_99,_tmp_91,_tmp_98); - _sigIdx_140 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_127 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_244 = _sigIdx_140 + 0*_sigSizes_127[1]; - ctx->setSignal(ctx->cIdx, _offset_244, _tmp_99); - mpz_set_str(_tmp_101[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_101); - while (_cond) { - - /* a3210[i] <== ( c[i][15]-c[i][14]-c[i][13]+c[i][12] - c[i][11]+c[i][10]+c[i][ 9]-c[i][ 8] - -c[i][ 7]+c[i][ 6]+c[i][ 5]-c[i][ 4] + c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s210 */ - _sigIdx_141 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_128 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_119 = i + 0; - _offset_250 = _sigIdx_141 + ctx->field->toInt(_v_119)*_sigSizes_128[1] + 15*_sigSizes_128[2]; - ctx->getSignal(ctx->cIdx, _offset_250, _sigValue_120); - _sigIdx_142 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_129 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_120 = i + 0; - _offset_252 = _sigIdx_142 + ctx->field->toInt(_v_120)*_sigSizes_129[1] + 14*_sigSizes_129[2]; - ctx->getSignal(ctx->cIdx, _offset_252, _sigValue_121); - ctx->field->sub(_tmp_102,_sigValue_120,_sigValue_121); - _sigIdx_143 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_130 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_121 = i + 0; - _offset_254 = _sigIdx_143 + ctx->field->toInt(_v_121)*_sigSizes_130[1] + 13*_sigSizes_130[2]; - ctx->getSignal(ctx->cIdx, _offset_254, _sigValue_122); - ctx->field->sub(_tmp_103,_tmp_102,_sigValue_122); - _sigIdx_144 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_131 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_122 = i + 0; - _offset_256 = _sigIdx_144 + ctx->field->toInt(_v_122)*_sigSizes_131[1] + 12*_sigSizes_131[2]; - ctx->getSignal(ctx->cIdx, _offset_256, _sigValue_123); - ctx->field->add(_tmp_104,_tmp_103,_sigValue_123); - _sigIdx_145 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_132 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_123 = i + 0; - _offset_258 = _sigIdx_145 + ctx->field->toInt(_v_123)*_sigSizes_132[1] + 11*_sigSizes_132[2]; - ctx->getSignal(ctx->cIdx, _offset_258, _sigValue_124); - ctx->field->sub(_tmp_105,_tmp_104,_sigValue_124); - _sigIdx_146 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_133 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_124 = i + 0; - _offset_260 = _sigIdx_146 + ctx->field->toInt(_v_124)*_sigSizes_133[1] + 10*_sigSizes_133[2]; - ctx->getSignal(ctx->cIdx, _offset_260, _sigValue_125); - ctx->field->add(_tmp_106,_tmp_105,_sigValue_125); - _sigIdx_147 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_134 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_125 = i + 0; - _offset_262 = _sigIdx_147 + ctx->field->toInt(_v_125)*_sigSizes_134[1] + 9*_sigSizes_134[2]; - ctx->getSignal(ctx->cIdx, _offset_262, _sigValue_126); - ctx->field->add(_tmp_107,_tmp_106,_sigValue_126); - _sigIdx_148 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_135 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_126 = i + 0; - _offset_264 = _sigIdx_148 + ctx->field->toInt(_v_126)*_sigSizes_135[1] + 8*_sigSizes_135[2]; - ctx->getSignal(ctx->cIdx, _offset_264, _sigValue_127); - ctx->field->sub(_tmp_108,_tmp_107,_sigValue_127); - _sigIdx_149 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_136 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_127 = i + 0; - _offset_266 = _sigIdx_149 + ctx->field->toInt(_v_127)*_sigSizes_136[1] + 7*_sigSizes_136[2]; - ctx->getSignal(ctx->cIdx, _offset_266, _sigValue_128); - ctx->field->sub(_tmp_109,_tmp_108,_sigValue_128); - _sigIdx_150 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_137 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_128 = i + 0; - _offset_268 = _sigIdx_150 + ctx->field->toInt(_v_128)*_sigSizes_137[1] + 6*_sigSizes_137[2]; - ctx->getSignal(ctx->cIdx, _offset_268, _sigValue_129); - ctx->field->add(_tmp_110,_tmp_109,_sigValue_129); - _sigIdx_151 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_138 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_129 = i + 0; - _offset_270 = _sigIdx_151 + ctx->field->toInt(_v_129)*_sigSizes_138[1] + 5*_sigSizes_138[2]; - ctx->getSignal(ctx->cIdx, _offset_270, _sigValue_130); - ctx->field->add(_tmp_111,_tmp_110,_sigValue_130); - _sigIdx_152 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_139 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_130 = i + 0; - _offset_272 = _sigIdx_152 + ctx->field->toInt(_v_130)*_sigSizes_139[1] + 4*_sigSizes_139[2]; - ctx->getSignal(ctx->cIdx, _offset_272, _sigValue_131); - ctx->field->sub(_tmp_112,_tmp_111,_sigValue_131); - _sigIdx_153 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_140 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_131 = i + 0; - _offset_274 = _sigIdx_153 + ctx->field->toInt(_v_131)*_sigSizes_140[1] + 3*_sigSizes_140[2]; - ctx->getSignal(ctx->cIdx, _offset_274, _sigValue_132); - ctx->field->add(_tmp_113,_tmp_112,_sigValue_132); - _sigIdx_154 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_141 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_132 = i + 0; - _offset_276 = _sigIdx_154 + ctx->field->toInt(_v_132)*_sigSizes_141[1] + 2*_sigSizes_141[2]; - ctx->getSignal(ctx->cIdx, _offset_276, _sigValue_133); - ctx->field->sub(_tmp_114,_tmp_113,_sigValue_133); - _sigIdx_155 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_142 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_133 = i + 0; - _offset_278 = _sigIdx_155 + ctx->field->toInt(_v_133)*_sigSizes_142[1] + 1*_sigSizes_142[2]; - ctx->getSignal(ctx->cIdx, _offset_278, _sigValue_134); - ctx->field->sub(_tmp_115,_tmp_114,_sigValue_134); - _sigIdx_156 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_143 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_134 = i + 0; - _offset_280 = _sigIdx_156 + ctx->field->toInt(_v_134)*_sigSizes_143[1] + 0*_sigSizes_143[2]; - ctx->getSignal(ctx->cIdx, _offset_280, _sigValue_135); - ctx->field->add(_tmp_116,_tmp_115,_sigValue_135); - _sigIdx_157 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); - ctx->getSignal(ctx->cIdx, _sigIdx_157, _sigValue_136); - ctx->field->mul(_tmp_117,_tmp_116,_sigValue_136); - _sigIdx_158 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _sigSizes_144 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _v_135 = i + 0; - _offset_282 = _sigIdx_158 + ctx->field->toInt(_v_135)*_sigSizes_144[1]; - ctx->setSignal(ctx->cIdx, _offset_282, _tmp_117); - - /* a321[i] <== ( c[i][14]-c[i][12]-c[i][10]+c[i][ 8] - c[i][ 6]+c[i][ 4]+c[i][ 2]-c[i][ 0] ) * s21 */ - _sigIdx_159 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_145 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_136 = i + 0; - _offset_284 = _sigIdx_159 + ctx->field->toInt(_v_136)*_sigSizes_145[1] + 14*_sigSizes_145[2]; - ctx->getSignal(ctx->cIdx, _offset_284, _sigValue_137); - _sigIdx_160 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_146 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_137 = i + 0; - _offset_286 = _sigIdx_160 + ctx->field->toInt(_v_137)*_sigSizes_146[1] + 12*_sigSizes_146[2]; - ctx->getSignal(ctx->cIdx, _offset_286, _sigValue_138); - ctx->field->sub(_tmp_118,_sigValue_137,_sigValue_138); - _sigIdx_161 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_147 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_138 = i + 0; - _offset_288 = _sigIdx_161 + ctx->field->toInt(_v_138)*_sigSizes_147[1] + 10*_sigSizes_147[2]; - ctx->getSignal(ctx->cIdx, _offset_288, _sigValue_139); - ctx->field->sub(_tmp_119,_tmp_118,_sigValue_139); - _sigIdx_162 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_148 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_139 = i + 0; - _offset_290 = _sigIdx_162 + ctx->field->toInt(_v_139)*_sigSizes_148[1] + 8*_sigSizes_148[2]; - ctx->getSignal(ctx->cIdx, _offset_290, _sigValue_140); - ctx->field->add(_tmp_120,_tmp_119,_sigValue_140); - _sigIdx_163 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_149 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_140 = i + 0; - _offset_292 = _sigIdx_163 + ctx->field->toInt(_v_140)*_sigSizes_149[1] + 6*_sigSizes_149[2]; - ctx->getSignal(ctx->cIdx, _offset_292, _sigValue_141); - ctx->field->sub(_tmp_121,_tmp_120,_sigValue_141); - _sigIdx_164 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_150 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_141 = i + 0; - _offset_294 = _sigIdx_164 + ctx->field->toInt(_v_141)*_sigSizes_150[1] + 4*_sigSizes_150[2]; - ctx->getSignal(ctx->cIdx, _offset_294, _sigValue_142); - ctx->field->add(_tmp_122,_tmp_121,_sigValue_142); - _sigIdx_165 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_151 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_142 = i + 0; - _offset_296 = _sigIdx_165 + ctx->field->toInt(_v_142)*_sigSizes_151[1] + 2*_sigSizes_151[2]; - ctx->getSignal(ctx->cIdx, _offset_296, _sigValue_143); - ctx->field->add(_tmp_123,_tmp_122,_sigValue_143); - _sigIdx_166 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_152 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_143 = i + 0; - _offset_298 = _sigIdx_166 + ctx->field->toInt(_v_143)*_sigSizes_152[1] + 0*_sigSizes_152[2]; - ctx->getSignal(ctx->cIdx, _offset_298, _sigValue_144); - ctx->field->sub(_tmp_124,_tmp_123,_sigValue_144); - _sigIdx_167 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->getSignal(ctx->cIdx, _sigIdx_167, _sigValue_145); - ctx->field->mul(_tmp_125,_tmp_124,_sigValue_145); - _sigIdx_168 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _sigSizes_153 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _v_144 = i + 0; - _offset_300 = _sigIdx_168 + ctx->field->toInt(_v_144)*_sigSizes_153[1]; - ctx->setSignal(ctx->cIdx, _offset_300, _tmp_125); - - /* a320[i] <== ( c[i][13]-c[i][12]-c[i][ 9]+c[i][ 8] - c[i][ 5]+c[i][ 4]+c[i][ 1]-c[i][ 0] ) * s20 */ - _sigIdx_169 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_154 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_145 = i + 0; - _offset_302 = _sigIdx_169 + ctx->field->toInt(_v_145)*_sigSizes_154[1] + 13*_sigSizes_154[2]; - ctx->getSignal(ctx->cIdx, _offset_302, _sigValue_146); - _sigIdx_170 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_155 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_146 = i + 0; - _offset_304 = _sigIdx_170 + ctx->field->toInt(_v_146)*_sigSizes_155[1] + 12*_sigSizes_155[2]; - ctx->getSignal(ctx->cIdx, _offset_304, _sigValue_147); - ctx->field->sub(_tmp_126,_sigValue_146,_sigValue_147); - _sigIdx_171 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_156 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_147 = i + 0; - _offset_306 = _sigIdx_171 + ctx->field->toInt(_v_147)*_sigSizes_156[1] + 9*_sigSizes_156[2]; - ctx->getSignal(ctx->cIdx, _offset_306, _sigValue_148); - ctx->field->sub(_tmp_127,_tmp_126,_sigValue_148); - _sigIdx_172 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_157 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_148 = i + 0; - _offset_308 = _sigIdx_172 + ctx->field->toInt(_v_148)*_sigSizes_157[1] + 8*_sigSizes_157[2]; - ctx->getSignal(ctx->cIdx, _offset_308, _sigValue_149); - ctx->field->add(_tmp_128,_tmp_127,_sigValue_149); - _sigIdx_173 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_158 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_149 = i + 0; - _offset_310 = _sigIdx_173 + ctx->field->toInt(_v_149)*_sigSizes_158[1] + 5*_sigSizes_158[2]; - ctx->getSignal(ctx->cIdx, _offset_310, _sigValue_150); - ctx->field->sub(_tmp_129,_tmp_128,_sigValue_150); - _sigIdx_174 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_159 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_150 = i + 0; - _offset_312 = _sigIdx_174 + ctx->field->toInt(_v_150)*_sigSizes_159[1] + 4*_sigSizes_159[2]; - ctx->getSignal(ctx->cIdx, _offset_312, _sigValue_151); - ctx->field->add(_tmp_130,_tmp_129,_sigValue_151); - _sigIdx_175 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_160 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_151 = i + 0; - _offset_314 = _sigIdx_175 + ctx->field->toInt(_v_151)*_sigSizes_160[1] + 1*_sigSizes_160[2]; - ctx->getSignal(ctx->cIdx, _offset_314, _sigValue_152); - ctx->field->add(_tmp_131,_tmp_130,_sigValue_152); - _sigIdx_176 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_161 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_152 = i + 0; - _offset_316 = _sigIdx_176 + ctx->field->toInt(_v_152)*_sigSizes_161[1] + 0*_sigSizes_161[2]; - ctx->getSignal(ctx->cIdx, _offset_316, _sigValue_153); - ctx->field->sub(_tmp_132,_tmp_131,_sigValue_153); - _sigIdx_177 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); - ctx->getSignal(ctx->cIdx, _sigIdx_177, _sigValue_154); - ctx->field->mul(_tmp_133,_tmp_132,_sigValue_154); - _sigIdx_178 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _sigSizes_162 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _v_153 = i + 0; - _offset_318 = _sigIdx_178 + ctx->field->toInt(_v_153)*_sigSizes_162[1]; - ctx->setSignal(ctx->cIdx, _offset_318, _tmp_133); - - /* a310[i] <== ( c[i][11]-c[i][10]-c[i][ 9]+c[i][ 8] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s10 */ - _sigIdx_179 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_163 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_154 = i + 0; - _offset_320 = _sigIdx_179 + ctx->field->toInt(_v_154)*_sigSizes_163[1] + 11*_sigSizes_163[2]; - ctx->getSignal(ctx->cIdx, _offset_320, _sigValue_155); - _sigIdx_180 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_164 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_155 = i + 0; - _offset_322 = _sigIdx_180 + ctx->field->toInt(_v_155)*_sigSizes_164[1] + 10*_sigSizes_164[2]; - ctx->getSignal(ctx->cIdx, _offset_322, _sigValue_156); - ctx->field->sub(_tmp_134,_sigValue_155,_sigValue_156); - _sigIdx_181 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_165 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_156 = i + 0; - _offset_324 = _sigIdx_181 + ctx->field->toInt(_v_156)*_sigSizes_165[1] + 9*_sigSizes_165[2]; - ctx->getSignal(ctx->cIdx, _offset_324, _sigValue_157); - ctx->field->sub(_tmp_135,_tmp_134,_sigValue_157); - _sigIdx_182 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_166 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_157 = i + 0; - _offset_326 = _sigIdx_182 + ctx->field->toInt(_v_157)*_sigSizes_166[1] + 8*_sigSizes_166[2]; - ctx->getSignal(ctx->cIdx, _offset_326, _sigValue_158); - ctx->field->add(_tmp_136,_tmp_135,_sigValue_158); - _sigIdx_183 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_167 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_158 = i + 0; - _offset_328 = _sigIdx_183 + ctx->field->toInt(_v_158)*_sigSizes_167[1] + 3*_sigSizes_167[2]; - ctx->getSignal(ctx->cIdx, _offset_328, _sigValue_159); - ctx->field->sub(_tmp_137,_tmp_136,_sigValue_159); - _sigIdx_184 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_168 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_159 = i + 0; - _offset_330 = _sigIdx_184 + ctx->field->toInt(_v_159)*_sigSizes_168[1] + 2*_sigSizes_168[2]; - ctx->getSignal(ctx->cIdx, _offset_330, _sigValue_160); - ctx->field->add(_tmp_138,_tmp_137,_sigValue_160); - _sigIdx_185 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_169 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_160 = i + 0; - _offset_332 = _sigIdx_185 + ctx->field->toInt(_v_160)*_sigSizes_169[1] + 1*_sigSizes_169[2]; - ctx->getSignal(ctx->cIdx, _offset_332, _sigValue_161); - ctx->field->add(_tmp_139,_tmp_138,_sigValue_161); - _sigIdx_186 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_170 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_161 = i + 0; - _offset_334 = _sigIdx_186 + ctx->field->toInt(_v_161)*_sigSizes_170[1] + 0*_sigSizes_170[2]; - ctx->getSignal(ctx->cIdx, _offset_334, _sigValue_162); - ctx->field->sub(_tmp_140,_tmp_139,_sigValue_162); - _sigIdx_187 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_187, _sigValue_163); - ctx->field->mul(_tmp_141,_tmp_140,_sigValue_163); - _sigIdx_188 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _sigSizes_171 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _v_162 = i + 0; - _offset_336 = _sigIdx_188 + ctx->field->toInt(_v_162)*_sigSizes_171[1]; - ctx->setSignal(ctx->cIdx, _offset_336, _tmp_141); - - /* a32[i] <== ( c[i][12]-c[i][ 8]-c[i][ 4]+c[i][ 0] ) * s[2] */ - _sigIdx_189 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_172 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_163 = i + 0; - _offset_338 = _sigIdx_189 + ctx->field->toInt(_v_163)*_sigSizes_172[1] + 12*_sigSizes_172[2]; - ctx->getSignal(ctx->cIdx, _offset_338, _sigValue_164); - _sigIdx_190 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_173 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_164 = i + 0; - _offset_340 = _sigIdx_190 + ctx->field->toInt(_v_164)*_sigSizes_173[1] + 8*_sigSizes_173[2]; - ctx->getSignal(ctx->cIdx, _offset_340, _sigValue_165); - ctx->field->sub(_tmp_142,_sigValue_164,_sigValue_165); - _sigIdx_191 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_174 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_165 = i + 0; - _offset_342 = _sigIdx_191 + ctx->field->toInt(_v_165)*_sigSizes_174[1] + 4*_sigSizes_174[2]; - ctx->getSignal(ctx->cIdx, _offset_342, _sigValue_166); - ctx->field->sub(_tmp_143,_tmp_142,_sigValue_166); - _sigIdx_192 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_175 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_166 = i + 0; - _offset_344 = _sigIdx_192 + ctx->field->toInt(_v_166)*_sigSizes_175[1] + 0*_sigSizes_175[2]; - ctx->getSignal(ctx->cIdx, _offset_344, _sigValue_167); - ctx->field->add(_tmp_144,_tmp_143,_sigValue_167); - _sigIdx_193 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_176 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_345 = _sigIdx_193 + 2*_sigSizes_176[1]; - ctx->getSignal(ctx->cIdx, _offset_345, _sigValue_168); - ctx->field->mul(_tmp_145,_tmp_144,_sigValue_168); - _sigIdx_194 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _sigSizes_177 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _v_167 = i + 0; - _offset_347 = _sigIdx_194 + ctx->field->toInt(_v_167)*_sigSizes_177[1]; - ctx->setSignal(ctx->cIdx, _offset_347, _tmp_145); - - /* a31[i] <== ( c[i][10]-c[i][ 8]-c[i][ 2]+c[i][ 0] ) * s[1] */ - _sigIdx_195 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_178 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_168 = i + 0; - _offset_349 = _sigIdx_195 + ctx->field->toInt(_v_168)*_sigSizes_178[1] + 10*_sigSizes_178[2]; - ctx->getSignal(ctx->cIdx, _offset_349, _sigValue_169); - _sigIdx_196 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_179 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_169 = i + 0; - _offset_351 = _sigIdx_196 + ctx->field->toInt(_v_169)*_sigSizes_179[1] + 8*_sigSizes_179[2]; - ctx->getSignal(ctx->cIdx, _offset_351, _sigValue_170); - ctx->field->sub(_tmp_146,_sigValue_169,_sigValue_170); - _sigIdx_197 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_180 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_170 = i + 0; - _offset_353 = _sigIdx_197 + ctx->field->toInt(_v_170)*_sigSizes_180[1] + 2*_sigSizes_180[2]; - ctx->getSignal(ctx->cIdx, _offset_353, _sigValue_171); - ctx->field->sub(_tmp_147,_tmp_146,_sigValue_171); - _sigIdx_198 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_181 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_171 = i + 0; - _offset_355 = _sigIdx_198 + ctx->field->toInt(_v_171)*_sigSizes_181[1] + 0*_sigSizes_181[2]; - ctx->getSignal(ctx->cIdx, _offset_355, _sigValue_172); - ctx->field->add(_tmp_148,_tmp_147,_sigValue_172); - _sigIdx_199 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_182 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_356 = _sigIdx_199 + 1*_sigSizes_182[1]; - ctx->getSignal(ctx->cIdx, _offset_356, _sigValue_173); - ctx->field->mul(_tmp_149,_tmp_148,_sigValue_173); - _sigIdx_200 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _sigSizes_183 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _v_172 = i + 0; - _offset_358 = _sigIdx_200 + ctx->field->toInt(_v_172)*_sigSizes_183[1]; - ctx->setSignal(ctx->cIdx, _offset_358, _tmp_149); - - /* a30[i] <== ( c[i][ 9]-c[i][ 8]-c[i][ 1]+c[i][ 0] ) * s[0] */ - _sigIdx_201 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_184 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_173 = i + 0; - _offset_360 = _sigIdx_201 + ctx->field->toInt(_v_173)*_sigSizes_184[1] + 9*_sigSizes_184[2]; - ctx->getSignal(ctx->cIdx, _offset_360, _sigValue_174); - _sigIdx_202 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_185 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_174 = i + 0; - _offset_362 = _sigIdx_202 + ctx->field->toInt(_v_174)*_sigSizes_185[1] + 8*_sigSizes_185[2]; - ctx->getSignal(ctx->cIdx, _offset_362, _sigValue_175); - ctx->field->sub(_tmp_150,_sigValue_174,_sigValue_175); - _sigIdx_203 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_186 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_175 = i + 0; - _offset_364 = _sigIdx_203 + ctx->field->toInt(_v_175)*_sigSizes_186[1] + 1*_sigSizes_186[2]; - ctx->getSignal(ctx->cIdx, _offset_364, _sigValue_176); - ctx->field->sub(_tmp_151,_tmp_150,_sigValue_176); - _sigIdx_204 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_187 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_176 = i + 0; - _offset_366 = _sigIdx_204 + ctx->field->toInt(_v_176)*_sigSizes_187[1] + 0*_sigSizes_187[2]; - ctx->getSignal(ctx->cIdx, _offset_366, _sigValue_177); - ctx->field->add(_tmp_152,_tmp_151,_sigValue_177); - _sigIdx_205 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_188 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_367 = _sigIdx_205 + 0*_sigSizes_188[1]; - ctx->getSignal(ctx->cIdx, _offset_367, _sigValue_178); - ctx->field->mul(_tmp_153,_tmp_152,_sigValue_178); - _sigIdx_206 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _sigSizes_189 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _v_177 = i + 0; - _offset_369 = _sigIdx_206 + ctx->field->toInt(_v_177)*_sigSizes_189[1]; - ctx->setSignal(ctx->cIdx, _offset_369, _tmp_153); - - /* a3[i] <== ( c[i][ 8]-c[i][ 0] ) */ - _sigIdx_207 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_190 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_178 = i + 0; - _offset_371 = _sigIdx_207 + ctx->field->toInt(_v_178)*_sigSizes_190[1] + 8*_sigSizes_190[2]; - ctx->getSignal(ctx->cIdx, _offset_371, _sigValue_179); - _sigIdx_208 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_191 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_179 = i + 0; - _offset_373 = _sigIdx_208 + ctx->field->toInt(_v_179)*_sigSizes_191[1] + 0*_sigSizes_191[2]; - ctx->getSignal(ctx->cIdx, _offset_373, _sigValue_180); - ctx->field->sub(_tmp_154,_sigValue_179,_sigValue_180); - _sigIdx_209 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _sigSizes_192 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _v_180 = i + 0; - _offset_375 = _sigIdx_209 + ctx->field->toInt(_v_180)*_sigSizes_192[1]; - ctx->setSignal(ctx->cIdx, _offset_375, _tmp_154); - - /* a210[i] <== ( c[i][ 7]-c[i][ 6]-c[i][ 5]+c[i][ 4] - c[i][ 3]+c[i][ 2]+c[i][ 1]-c[i][ 0] ) * s210 */ - _sigIdx_210 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_193 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_181 = i + 0; - _offset_377 = _sigIdx_210 + ctx->field->toInt(_v_181)*_sigSizes_193[1] + 7*_sigSizes_193[2]; - ctx->getSignal(ctx->cIdx, _offset_377, _sigValue_181); - _sigIdx_211 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_194 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_182 = i + 0; - _offset_379 = _sigIdx_211 + ctx->field->toInt(_v_182)*_sigSizes_194[1] + 6*_sigSizes_194[2]; - ctx->getSignal(ctx->cIdx, _offset_379, _sigValue_182); - ctx->field->sub(_tmp_155,_sigValue_181,_sigValue_182); - _sigIdx_212 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_195 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_183 = i + 0; - _offset_381 = _sigIdx_212 + ctx->field->toInt(_v_183)*_sigSizes_195[1] + 5*_sigSizes_195[2]; - ctx->getSignal(ctx->cIdx, _offset_381, _sigValue_183); - ctx->field->sub(_tmp_156,_tmp_155,_sigValue_183); - _sigIdx_213 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_196 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_184 = i + 0; - _offset_383 = _sigIdx_213 + ctx->field->toInt(_v_184)*_sigSizes_196[1] + 4*_sigSizes_196[2]; - ctx->getSignal(ctx->cIdx, _offset_383, _sigValue_184); - ctx->field->add(_tmp_157,_tmp_156,_sigValue_184); - _sigIdx_214 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_197 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_185 = i + 0; - _offset_385 = _sigIdx_214 + ctx->field->toInt(_v_185)*_sigSizes_197[1] + 3*_sigSizes_197[2]; - ctx->getSignal(ctx->cIdx, _offset_385, _sigValue_185); - ctx->field->sub(_tmp_158,_tmp_157,_sigValue_185); - _sigIdx_215 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_198 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_186 = i + 0; - _offset_387 = _sigIdx_215 + ctx->field->toInt(_v_186)*_sigSizes_198[1] + 2*_sigSizes_198[2]; - ctx->getSignal(ctx->cIdx, _offset_387, _sigValue_186); - ctx->field->add(_tmp_159,_tmp_158,_sigValue_186); - _sigIdx_216 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_199 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_187 = i + 0; - _offset_389 = _sigIdx_216 + ctx->field->toInt(_v_187)*_sigSizes_199[1] + 1*_sigSizes_199[2]; - ctx->getSignal(ctx->cIdx, _offset_389, _sigValue_187); - ctx->field->add(_tmp_160,_tmp_159,_sigValue_187); - _sigIdx_217 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_200 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_188 = i + 0; - _offset_391 = _sigIdx_217 + ctx->field->toInt(_v_188)*_sigSizes_200[1] + 0*_sigSizes_200[2]; - ctx->getSignal(ctx->cIdx, _offset_391, _sigValue_188); - ctx->field->sub(_tmp_161,_tmp_160,_sigValue_188); - _sigIdx_218 = ctx->getSignalOffset(ctx->cIdx, 0x4f95d417c53f3d99LL /* s210 */); - ctx->getSignal(ctx->cIdx, _sigIdx_218, _sigValue_189); - ctx->field->mul(_tmp_162,_tmp_161,_sigValue_189); - _sigIdx_219 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_201 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _v_189 = i + 0; - _offset_393 = _sigIdx_219 + ctx->field->toInt(_v_189)*_sigSizes_201[1]; - ctx->setSignal(ctx->cIdx, _offset_393, _tmp_162); - - /* a21[i] <== ( c[i][ 6]-c[i][ 4]-c[i][ 2]+c[i][ 0] ) * s21 */ - _sigIdx_220 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_202 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_190 = i + 0; - _offset_395 = _sigIdx_220 + ctx->field->toInt(_v_190)*_sigSizes_202[1] + 6*_sigSizes_202[2]; - ctx->getSignal(ctx->cIdx, _offset_395, _sigValue_190); - _sigIdx_221 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_203 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_191 = i + 0; - _offset_397 = _sigIdx_221 + ctx->field->toInt(_v_191)*_sigSizes_203[1] + 4*_sigSizes_203[2]; - ctx->getSignal(ctx->cIdx, _offset_397, _sigValue_191); - ctx->field->sub(_tmp_163,_sigValue_190,_sigValue_191); - _sigIdx_222 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_204 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_192 = i + 0; - _offset_399 = _sigIdx_222 + ctx->field->toInt(_v_192)*_sigSizes_204[1] + 2*_sigSizes_204[2]; - ctx->getSignal(ctx->cIdx, _offset_399, _sigValue_192); - ctx->field->sub(_tmp_164,_tmp_163,_sigValue_192); - _sigIdx_223 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_205 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_193 = i + 0; - _offset_401 = _sigIdx_223 + ctx->field->toInt(_v_193)*_sigSizes_205[1] + 0*_sigSizes_205[2]; - ctx->getSignal(ctx->cIdx, _offset_401, _sigValue_193); - ctx->field->add(_tmp_165,_tmp_164,_sigValue_193); - _sigIdx_224 = ctx->getSignalOffset(ctx->cIdx, 0x818042195c42a5b3LL /* s21 */); - ctx->getSignal(ctx->cIdx, _sigIdx_224, _sigValue_194); - ctx->field->mul(_tmp_166,_tmp_165,_sigValue_194); - _sigIdx_225 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_206 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _v_194 = i + 0; - _offset_403 = _sigIdx_225 + ctx->field->toInt(_v_194)*_sigSizes_206[1]; - ctx->setSignal(ctx->cIdx, _offset_403, _tmp_166); - - /* a20[i] <== ( c[i][ 5]-c[i][ 4]-c[i][ 1]+c[i][ 0] ) * s20 */ - _sigIdx_226 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_207 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_195 = i + 0; - _offset_405 = _sigIdx_226 + ctx->field->toInt(_v_195)*_sigSizes_207[1] + 5*_sigSizes_207[2]; - ctx->getSignal(ctx->cIdx, _offset_405, _sigValue_195); - _sigIdx_227 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_208 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_196 = i + 0; - _offset_407 = _sigIdx_227 + ctx->field->toInt(_v_196)*_sigSizes_208[1] + 4*_sigSizes_208[2]; - ctx->getSignal(ctx->cIdx, _offset_407, _sigValue_196); - ctx->field->sub(_tmp_167,_sigValue_195,_sigValue_196); - _sigIdx_228 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_209 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_197 = i + 0; - _offset_409 = _sigIdx_228 + ctx->field->toInt(_v_197)*_sigSizes_209[1] + 1*_sigSizes_209[2]; - ctx->getSignal(ctx->cIdx, _offset_409, _sigValue_197); - ctx->field->sub(_tmp_168,_tmp_167,_sigValue_197); - _sigIdx_229 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_210 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_198 = i + 0; - _offset_411 = _sigIdx_229 + ctx->field->toInt(_v_198)*_sigSizes_210[1] + 0*_sigSizes_210[2]; - ctx->getSignal(ctx->cIdx, _offset_411, _sigValue_198); - ctx->field->add(_tmp_169,_tmp_168,_sigValue_198); - _sigIdx_230 = ctx->getSignalOffset(ctx->cIdx, 0x818041195c42a400LL /* s20 */); - ctx->getSignal(ctx->cIdx, _sigIdx_230, _sigValue_199); - ctx->field->mul(_tmp_170,_tmp_169,_sigValue_199); - _sigIdx_231 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_211 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _v_199 = i + 0; - _offset_413 = _sigIdx_231 + ctx->field->toInt(_v_199)*_sigSizes_211[1]; - ctx->setSignal(ctx->cIdx, _offset_413, _tmp_170); - - /* a10[i] <== ( c[i][ 3]-c[i][ 2]-c[i][ 1]+c[i][ 0] ) * s10 */ - _sigIdx_232 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_212 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_200 = i + 0; - _offset_415 = _sigIdx_232 + ctx->field->toInt(_v_200)*_sigSizes_212[1] + 3*_sigSizes_212[2]; - ctx->getSignal(ctx->cIdx, _offset_415, _sigValue_200); - _sigIdx_233 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_213 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_201 = i + 0; - _offset_417 = _sigIdx_233 + ctx->field->toInt(_v_201)*_sigSizes_213[1] + 2*_sigSizes_213[2]; - ctx->getSignal(ctx->cIdx, _offset_417, _sigValue_201); - ctx->field->sub(_tmp_171,_sigValue_200,_sigValue_201); - _sigIdx_234 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_214 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_202 = i + 0; - _offset_419 = _sigIdx_234 + ctx->field->toInt(_v_202)*_sigSizes_214[1] + 1*_sigSizes_214[2]; - ctx->getSignal(ctx->cIdx, _offset_419, _sigValue_202); - ctx->field->sub(_tmp_172,_tmp_171,_sigValue_202); - _sigIdx_235 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_215 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_203 = i + 0; - _offset_421 = _sigIdx_235 + ctx->field->toInt(_v_203)*_sigSizes_215[1] + 0*_sigSizes_215[2]; - ctx->getSignal(ctx->cIdx, _offset_421, _sigValue_203); - ctx->field->add(_tmp_173,_tmp_172,_sigValue_203); - _sigIdx_236 = ctx->getSignalOffset(ctx->cIdx, 0x818ad3195c4bf09bLL /* s10 */); - ctx->getSignal(ctx->cIdx, _sigIdx_236, _sigValue_204); - ctx->field->mul(_tmp_174,_tmp_173,_sigValue_204); - _sigIdx_237 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_216 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _v_204 = i + 0; - _offset_423 = _sigIdx_237 + ctx->field->toInt(_v_204)*_sigSizes_216[1]; - ctx->setSignal(ctx->cIdx, _offset_423, _tmp_174); - - /* a2[i] <== ( c[i][ 4]-c[i][ 0] ) * s[2] */ - _sigIdx_238 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_217 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_205 = i + 0; - _offset_425 = _sigIdx_238 + ctx->field->toInt(_v_205)*_sigSizes_217[1] + 4*_sigSizes_217[2]; - ctx->getSignal(ctx->cIdx, _offset_425, _sigValue_205); - _sigIdx_239 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_218 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_206 = i + 0; - _offset_427 = _sigIdx_239 + ctx->field->toInt(_v_206)*_sigSizes_218[1] + 0*_sigSizes_218[2]; - ctx->getSignal(ctx->cIdx, _offset_427, _sigValue_206); - ctx->field->sub(_tmp_175,_sigValue_205,_sigValue_206); - _sigIdx_240 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_219 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_428 = _sigIdx_240 + 2*_sigSizes_219[1]; - ctx->getSignal(ctx->cIdx, _offset_428, _sigValue_207); - ctx->field->mul(_tmp_176,_tmp_175,_sigValue_207); - _sigIdx_241 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_220 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _v_207 = i + 0; - _offset_430 = _sigIdx_241 + ctx->field->toInt(_v_207)*_sigSizes_220[1]; - ctx->setSignal(ctx->cIdx, _offset_430, _tmp_176); - - /* a1[i] <== ( c[i][ 2]-c[i][ 0] ) * s[1] */ - _sigIdx_242 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_221 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_208 = i + 0; - _offset_432 = _sigIdx_242 + ctx->field->toInt(_v_208)*_sigSizes_221[1] + 2*_sigSizes_221[2]; - ctx->getSignal(ctx->cIdx, _offset_432, _sigValue_208); - _sigIdx_243 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_222 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_209 = i + 0; - _offset_434 = _sigIdx_243 + ctx->field->toInt(_v_209)*_sigSizes_222[1] + 0*_sigSizes_222[2]; - ctx->getSignal(ctx->cIdx, _offset_434, _sigValue_209); - ctx->field->sub(_tmp_177,_sigValue_208,_sigValue_209); - _sigIdx_244 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_223 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_435 = _sigIdx_244 + 1*_sigSizes_223[1]; - ctx->getSignal(ctx->cIdx, _offset_435, _sigValue_210); - ctx->field->mul(_tmp_178,_tmp_177,_sigValue_210); - _sigIdx_245 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_224 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _v_210 = i + 0; - _offset_437 = _sigIdx_245 + ctx->field->toInt(_v_210)*_sigSizes_224[1]; - ctx->setSignal(ctx->cIdx, _offset_437, _tmp_178); - - /* a0[i] <== ( c[i][ 1]-c[i][ 0] ) * s[0] */ - _sigIdx_246 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_225 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_211 = i + 0; - _offset_439 = _sigIdx_246 + ctx->field->toInt(_v_211)*_sigSizes_225[1] + 1*_sigSizes_225[2]; - ctx->getSignal(ctx->cIdx, _offset_439, _sigValue_211); - _sigIdx_247 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_226 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_212 = i + 0; - _offset_441 = _sigIdx_247 + ctx->field->toInt(_v_212)*_sigSizes_226[1] + 0*_sigSizes_226[2]; - ctx->getSignal(ctx->cIdx, _offset_441, _sigValue_212); - ctx->field->sub(_tmp_179,_sigValue_211,_sigValue_212); - _sigIdx_248 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_227 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_442 = _sigIdx_248 + 0*_sigSizes_227[1]; - ctx->getSignal(ctx->cIdx, _offset_442, _sigValue_213); - ctx->field->mul(_tmp_180,_tmp_179,_sigValue_213); - _sigIdx_249 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_228 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _v_213 = i + 0; - _offset_444 = _sigIdx_249 + ctx->field->toInt(_v_213)*_sigSizes_228[1]; - ctx->setSignal(ctx->cIdx, _offset_444, _tmp_180); - - /* a[i] <== ( c[i][ 0] ) */ - _sigIdx_250 = ctx->getSignalOffset(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_229 = ctx->getSignalSizes(ctx->cIdx, 0xaf63de4c8601eff2LL /* c */); - _v_214 = i + 0; - _offset_446 = _sigIdx_250 + ctx->field->toInt(_v_214)*_sigSizes_229[1] + 0*_sigSizes_229[2]; - ctx->getSignal(ctx->cIdx, _offset_446, _sigValue_214); - _sigIdx_251 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_230 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _v_215 = i + 0; - _offset_448 = _sigIdx_251 + ctx->field->toInt(_v_215)*_sigSizes_230[1]; - ctx->setSignal(ctx->cIdx, _offset_448, _sigValue_214); - - /* out[i] <== ( a3210[i] + a321[i] + a320[i] + a310[i] + a32[i] + a31[i] + a30[i] + a3[i] ) * s[3] + - ( a210[i] + a21[i] + a20[i] + a10[i] + a2[i] + a1[i] + a0[i] + a[i] ) */ - _sigIdx_252 = ctx->getSignalOffset(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _sigSizes_231 = ctx->getSignalSizes(ctx->cIdx, 0xfe93a7a874557c8cLL /* a3210 */); - _v_216 = i + 0; - _offset_450 = _sigIdx_252 + ctx->field->toInt(_v_216)*_sigSizes_231[1]; - ctx->getSignal(ctx->cIdx, _offset_450, _sigValue_215); - _sigIdx_253 = ctx->getSignalOffset(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _sigSizes_232 = ctx->getSignalSizes(ctx->cIdx, 0x66ede78309185374LL /* a321 */); - _v_217 = i + 0; - _offset_452 = _sigIdx_253 + ctx->field->toInt(_v_217)*_sigSizes_232[1]; - ctx->getSignal(ctx->cIdx, _offset_452, _sigValue_216); - ctx->field->add(_tmp_181,_sigValue_215,_sigValue_216); - _sigIdx_254 = ctx->getSignalOffset(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _sigSizes_233 = ctx->getSignalSizes(ctx->cIdx, 0x66ede88309185527LL /* a320 */); - _v_218 = i + 0; - _offset_454 = _sigIdx_254 + ctx->field->toInt(_v_218)*_sigSizes_233[1]; - ctx->getSignal(ctx->cIdx, _offset_454, _sigValue_217); - ctx->field->add(_tmp_182,_tmp_181,_sigValue_217); - _sigIdx_255 = ctx->getSignalOffset(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _sigSizes_234 = ctx->getSignalSizes(ctx->cIdx, 0x66e35683090f088cLL /* a310 */); - _v_219 = i + 0; - _offset_456 = _sigIdx_255 + ctx->field->toInt(_v_219)*_sigSizes_234[1]; - ctx->getSignal(ctx->cIdx, _offset_456, _sigValue_218); - ctx->field->add(_tmp_183,_tmp_182,_sigValue_218); - _sigIdx_256 = ctx->getSignalOffset(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _sigSizes_235 = ctx->getSignalSizes(ctx->cIdx, 0xe6807b1904ba9c8dLL /* a32 */); - _v_220 = i + 0; - _offset_458 = _sigIdx_256 + ctx->field->toInt(_v_220)*_sigSizes_235[1]; - ctx->getSignal(ctx->cIdx, _offset_458, _sigValue_219); - ctx->field->add(_tmp_184,_tmp_183,_sigValue_219); - _sigIdx_257 = ctx->getSignalOffset(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _sigSizes_236 = ctx->getSignalSizes(ctx->cIdx, 0xe680781904ba9774LL /* a31 */); - _v_221 = i + 0; - _offset_460 = _sigIdx_257 + ctx->field->toInt(_v_221)*_sigSizes_236[1]; - ctx->getSignal(ctx->cIdx, _offset_460, _sigValue_220); - ctx->field->add(_tmp_185,_tmp_184,_sigValue_220); - _sigIdx_258 = ctx->getSignalOffset(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _sigSizes_237 = ctx->getSignalSizes(ctx->cIdx, 0xe680791904ba9927LL /* a30 */); - _v_222 = i + 0; - _offset_462 = _sigIdx_258 + ctx->field->toInt(_v_222)*_sigSizes_237[1]; - ctx->getSignal(ctx->cIdx, _offset_462, _sigValue_221); - ctx->field->add(_tmp_186,_tmp_185,_sigValue_221); - _sigIdx_259 = ctx->getSignalOffset(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _sigSizes_238 = ctx->getSignalSizes(ctx->cIdx, 0x089c1507b545488dLL /* a3 */); - _v_223 = i + 0; - _offset_464 = _sigIdx_259 + ctx->field->toInt(_v_223)*_sigSizes_238[1]; - ctx->getSignal(ctx->cIdx, _offset_464, _sigValue_222); - ctx->field->add(_tmp_187,_tmp_186,_sigValue_222); - _sigIdx_260 = ctx->getSignalOffset(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_239 = ctx->getSignalSizes(ctx->cIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_465 = _sigIdx_260 + 3*_sigSizes_239[1]; - ctx->getSignal(ctx->cIdx, _offset_465, _sigValue_223); - ctx->field->mul(_tmp_188,_tmp_187,_sigValue_223); - _sigIdx_261 = ctx->getSignalOffset(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _sigSizes_240 = ctx->getSignalSizes(ctx->cIdx, 0x5dd4278303d0d7d3LL /* a210 */); - _v_224 = i + 0; - _offset_467 = _sigIdx_261 + ctx->field->toInt(_v_224)*_sigSizes_240[1]; - ctx->getSignal(ctx->cIdx, _offset_467, _sigValue_224); - _sigIdx_262 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _sigSizes_241 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf41904b78151LL /* a21 */); - _v_225 = i + 0; - _offset_469 = _sigIdx_262 + ctx->field->toInt(_v_225)*_sigSizes_241[1]; - ctx->getSignal(ctx->cIdx, _offset_469, _sigValue_225); - ctx->field->add(_tmp_189,_sigValue_224,_sigValue_225); - _sigIdx_263 = ctx->getSignalOffset(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _sigSizes_242 = ctx->getSignalSizes(ctx->cIdx, 0xe67cf31904b77f9eLL /* a20 */); - _v_226 = i + 0; - _offset_471 = _sigIdx_263 + ctx->field->toInt(_v_226)*_sigSizes_242[1]; - ctx->getSignal(ctx->cIdx, _offset_471, _sigValue_226); - ctx->field->add(_tmp_190,_tmp_189,_sigValue_226); - _sigIdx_264 = ctx->getSignalOffset(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _sigSizes_243 = ctx->getSignalSizes(ctx->cIdx, 0xe6796d1904b46615LL /* a10 */); - _v_227 = i + 0; - _offset_473 = _sigIdx_264 + ctx->field->toInt(_v_227)*_sigSizes_243[1]; - ctx->getSignal(ctx->cIdx, _offset_473, _sigValue_227); - ctx->field->add(_tmp_191,_tmp_190,_sigValue_227); - _sigIdx_265 = ctx->getSignalOffset(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _sigSizes_244 = ctx->getSignalSizes(ctx->cIdx, 0x089c1407b54546daLL /* a2 */); - _v_228 = i + 0; - _offset_475 = _sigIdx_265 + ctx->field->toInt(_v_228)*_sigSizes_244[1]; - ctx->getSignal(ctx->cIdx, _offset_475, _sigValue_228); - ctx->field->add(_tmp_192,_tmp_191,_sigValue_228); - _sigIdx_266 = ctx->getSignalOffset(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _sigSizes_245 = ctx->getSignalSizes(ctx->cIdx, 0x089c1307b5454527LL /* a1 */); - _v_229 = i + 0; - _offset_477 = _sigIdx_266 + ctx->field->toInt(_v_229)*_sigSizes_245[1]; - ctx->getSignal(ctx->cIdx, _offset_477, _sigValue_229); - ctx->field->add(_tmp_193,_tmp_192,_sigValue_229); - _sigIdx_267 = ctx->getSignalOffset(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _sigSizes_246 = ctx->getSignalSizes(ctx->cIdx, 0x089c1207b5454374LL /* a0 */); - _v_230 = i + 0; - _offset_479 = _sigIdx_267 + ctx->field->toInt(_v_230)*_sigSizes_246[1]; - ctx->getSignal(ctx->cIdx, _offset_479, _sigValue_230); - ctx->field->add(_tmp_194,_tmp_193,_sigValue_230); - _sigIdx_268 = ctx->getSignalOffset(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _sigSizes_247 = ctx->getSignalSizes(ctx->cIdx, 0xaf63dc4c8601ec8cLL /* a */); - _v_231 = i + 0; - _offset_481 = _sigIdx_268 + ctx->field->toInt(_v_231)*_sigSizes_247[1]; - ctx->getSignal(ctx->cIdx, _offset_481, _sigValue_231); - ctx->field->add(_tmp_195,_tmp_194,_sigValue_231); - ctx->field->add(_tmp_196,_tmp_188,_tmp_195); - _sigIdx_269 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_248 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_232 = i + 0; - _offset_483 = _sigIdx_269 + ctx->field->toInt(_v_232)*_sigSizes_248[1]; - ctx->setSignal(ctx->cIdx, _offset_483, _tmp_196); - _v_233 = i + 0; - ctx->field->add(_tmp_197, _v_233, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_197, 1); - _v_234 = i + 0; - ctx->field->lt(_tmp_198,_v_234,_const); - _cond = ctx->field->isTrue(_tmp_198); - } - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_sigValue_24, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_sigValue_25, 1); - ctx->freeBigInts(_sigValue_26, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_27, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_sigValue_28, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_29, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_sigValue_30, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_sigValue_31, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_32, 1); - ctx->freeBigInts(_tmp_27, 1); - ctx->freeBigInts(_sigValue_33, 1); - ctx->freeBigInts(_tmp_28, 1); - ctx->freeBigInts(_sigValue_34, 1); - ctx->freeBigInts(_sigValue_35, 1); - ctx->freeBigInts(_tmp_29, 1); - ctx->freeBigInts(_sigValue_36, 1); - ctx->freeBigInts(_tmp_30, 1); - ctx->freeBigInts(_sigValue_37, 1); - ctx->freeBigInts(_tmp_31, 1); - ctx->freeBigInts(_sigValue_38, 1); - ctx->freeBigInts(_tmp_32, 1); - ctx->freeBigInts(_sigValue_39, 1); - ctx->freeBigInts(_tmp_33, 1); - ctx->freeBigInts(_sigValue_40, 1); - ctx->freeBigInts(_tmp_34, 1); - ctx->freeBigInts(_sigValue_41, 1); - ctx->freeBigInts(_tmp_35, 1); - ctx->freeBigInts(_sigValue_42, 1); - ctx->freeBigInts(_tmp_36, 1); - ctx->freeBigInts(_sigValue_43, 1); - ctx->freeBigInts(_sigValue_44, 1); - ctx->freeBigInts(_tmp_37, 1); - ctx->freeBigInts(_sigValue_45, 1); - ctx->freeBigInts(_tmp_38, 1); - ctx->freeBigInts(_sigValue_46, 1); - ctx->freeBigInts(_tmp_39, 1); - ctx->freeBigInts(_sigValue_47, 1); - ctx->freeBigInts(_tmp_40, 1); - ctx->freeBigInts(_sigValue_48, 1); - ctx->freeBigInts(_tmp_41, 1); - ctx->freeBigInts(_sigValue_49, 1); - ctx->freeBigInts(_tmp_42, 1); - ctx->freeBigInts(_sigValue_50, 1); - ctx->freeBigInts(_tmp_43, 1); - ctx->freeBigInts(_sigValue_51, 1); - ctx->freeBigInts(_tmp_44, 1); - ctx->freeBigInts(_sigValue_52, 1); - ctx->freeBigInts(_sigValue_53, 1); - ctx->freeBigInts(_tmp_45, 1); - ctx->freeBigInts(_sigValue_54, 1); - ctx->freeBigInts(_tmp_46, 1); - ctx->freeBigInts(_sigValue_55, 1); - ctx->freeBigInts(_tmp_47, 1); - ctx->freeBigInts(_sigValue_56, 1); - ctx->freeBigInts(_tmp_48, 1); - ctx->freeBigInts(_sigValue_57, 1); - ctx->freeBigInts(_sigValue_58, 1); - ctx->freeBigInts(_tmp_49, 1); - ctx->freeBigInts(_sigValue_59, 1); - ctx->freeBigInts(_tmp_50, 1); - ctx->freeBigInts(_sigValue_60, 1); - ctx->freeBigInts(_tmp_51, 1); - ctx->freeBigInts(_sigValue_61, 1); - ctx->freeBigInts(_tmp_52, 1); - ctx->freeBigInts(_sigValue_62, 1); - ctx->freeBigInts(_sigValue_63, 1); - ctx->freeBigInts(_tmp_53, 1); - ctx->freeBigInts(_sigValue_64, 1); - ctx->freeBigInts(_tmp_54, 1); - ctx->freeBigInts(_sigValue_65, 1); - ctx->freeBigInts(_tmp_55, 1); - ctx->freeBigInts(_sigValue_66, 1); - ctx->freeBigInts(_tmp_56, 1); - ctx->freeBigInts(_sigValue_67, 1); - ctx->freeBigInts(_sigValue_68, 1); - ctx->freeBigInts(_tmp_57, 1); - ctx->freeBigInts(_sigValue_69, 1); - ctx->freeBigInts(_sigValue_70, 1); - ctx->freeBigInts(_tmp_58, 1); - ctx->freeBigInts(_sigValue_71, 1); - ctx->freeBigInts(_tmp_59, 1); - ctx->freeBigInts(_sigValue_72, 1); - ctx->freeBigInts(_tmp_60, 1); - ctx->freeBigInts(_sigValue_73, 1); - ctx->freeBigInts(_tmp_61, 1); - ctx->freeBigInts(_sigValue_74, 1); - ctx->freeBigInts(_tmp_62, 1); - ctx->freeBigInts(_sigValue_75, 1); - ctx->freeBigInts(_tmp_63, 1); - ctx->freeBigInts(_sigValue_76, 1); - ctx->freeBigInts(_tmp_64, 1); - ctx->freeBigInts(_sigValue_77, 1); - ctx->freeBigInts(_tmp_65, 1); - ctx->freeBigInts(_sigValue_78, 1); - ctx->freeBigInts(_sigValue_79, 1); - ctx->freeBigInts(_tmp_66, 1); - ctx->freeBigInts(_sigValue_80, 1); - ctx->freeBigInts(_tmp_67, 1); - ctx->freeBigInts(_sigValue_81, 1); - ctx->freeBigInts(_tmp_68, 1); - ctx->freeBigInts(_sigValue_82, 1); - ctx->freeBigInts(_tmp_69, 1); - ctx->freeBigInts(_sigValue_83, 1); - ctx->freeBigInts(_sigValue_84, 1); - ctx->freeBigInts(_tmp_70, 1); - ctx->freeBigInts(_sigValue_85, 1); - ctx->freeBigInts(_tmp_71, 1); - ctx->freeBigInts(_sigValue_86, 1); - ctx->freeBigInts(_tmp_72, 1); - ctx->freeBigInts(_sigValue_87, 1); - ctx->freeBigInts(_tmp_73, 1); - ctx->freeBigInts(_sigValue_88, 1); - ctx->freeBigInts(_sigValue_89, 1); - ctx->freeBigInts(_tmp_74, 1); - ctx->freeBigInts(_sigValue_90, 1); - ctx->freeBigInts(_tmp_75, 1); - ctx->freeBigInts(_sigValue_91, 1); - ctx->freeBigInts(_tmp_76, 1); - ctx->freeBigInts(_sigValue_92, 1); - ctx->freeBigInts(_tmp_77, 1); - ctx->freeBigInts(_sigValue_93, 1); - ctx->freeBigInts(_sigValue_94, 1); - ctx->freeBigInts(_tmp_78, 1); - ctx->freeBigInts(_sigValue_95, 1); - ctx->freeBigInts(_tmp_79, 1); - ctx->freeBigInts(_sigValue_96, 1); - ctx->freeBigInts(_sigValue_97, 1); - ctx->freeBigInts(_tmp_80, 1); - ctx->freeBigInts(_sigValue_98, 1); - ctx->freeBigInts(_tmp_81, 1); - ctx->freeBigInts(_sigValue_99, 1); - ctx->freeBigInts(_sigValue_100, 1); - ctx->freeBigInts(_tmp_82, 1); - ctx->freeBigInts(_sigValue_101, 1); - ctx->freeBigInts(_tmp_83, 1); - ctx->freeBigInts(_sigValue_102, 1); - ctx->freeBigInts(_sigValue_103, 1); - ctx->freeBigInts(_sigValue_104, 1); - ctx->freeBigInts(_tmp_84, 1); - ctx->freeBigInts(_sigValue_105, 1); - ctx->freeBigInts(_tmp_85, 1); - ctx->freeBigInts(_sigValue_106, 1); - ctx->freeBigInts(_tmp_86, 1); - ctx->freeBigInts(_sigValue_107, 1); - ctx->freeBigInts(_tmp_87, 1); - ctx->freeBigInts(_sigValue_108, 1); - ctx->freeBigInts(_tmp_88, 1); - ctx->freeBigInts(_sigValue_109, 1); - ctx->freeBigInts(_tmp_89, 1); - ctx->freeBigInts(_sigValue_110, 1); - ctx->freeBigInts(_tmp_90, 1); - ctx->freeBigInts(_sigValue_111, 1); - ctx->freeBigInts(_tmp_91, 1); - ctx->freeBigInts(_sigValue_112, 1); - ctx->freeBigInts(_sigValue_113, 1); - ctx->freeBigInts(_tmp_92, 1); - ctx->freeBigInts(_sigValue_114, 1); - ctx->freeBigInts(_tmp_93, 1); - ctx->freeBigInts(_sigValue_115, 1); - ctx->freeBigInts(_tmp_94, 1); - ctx->freeBigInts(_sigValue_116, 1); - ctx->freeBigInts(_tmp_95, 1); - ctx->freeBigInts(_sigValue_117, 1); - ctx->freeBigInts(_tmp_96, 1); - ctx->freeBigInts(_sigValue_118, 1); - ctx->freeBigInts(_tmp_97, 1); - ctx->freeBigInts(_sigValue_119, 1); - ctx->freeBigInts(_tmp_98, 1); - ctx->freeBigInts(_tmp_99, 1); - ctx->freeBigInts(_tmp_101, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_120, 1); - ctx->freeBigInts(_sigValue_121, 1); - ctx->freeBigInts(_tmp_102, 1); - ctx->freeBigInts(_sigValue_122, 1); - ctx->freeBigInts(_tmp_103, 1); - ctx->freeBigInts(_sigValue_123, 1); - ctx->freeBigInts(_tmp_104, 1); - ctx->freeBigInts(_sigValue_124, 1); - ctx->freeBigInts(_tmp_105, 1); - ctx->freeBigInts(_sigValue_125, 1); - ctx->freeBigInts(_tmp_106, 1); - ctx->freeBigInts(_sigValue_126, 1); - ctx->freeBigInts(_tmp_107, 1); - ctx->freeBigInts(_sigValue_127, 1); - ctx->freeBigInts(_tmp_108, 1); - ctx->freeBigInts(_sigValue_128, 1); - ctx->freeBigInts(_tmp_109, 1); - ctx->freeBigInts(_sigValue_129, 1); - ctx->freeBigInts(_tmp_110, 1); - ctx->freeBigInts(_sigValue_130, 1); - ctx->freeBigInts(_tmp_111, 1); - ctx->freeBigInts(_sigValue_131, 1); - ctx->freeBigInts(_tmp_112, 1); - ctx->freeBigInts(_sigValue_132, 1); - ctx->freeBigInts(_tmp_113, 1); - ctx->freeBigInts(_sigValue_133, 1); - ctx->freeBigInts(_tmp_114, 1); - ctx->freeBigInts(_sigValue_134, 1); - ctx->freeBigInts(_tmp_115, 1); - ctx->freeBigInts(_sigValue_135, 1); - ctx->freeBigInts(_tmp_116, 1); - ctx->freeBigInts(_sigValue_136, 1); - ctx->freeBigInts(_tmp_117, 1); - ctx->freeBigInts(_sigValue_137, 1); - ctx->freeBigInts(_sigValue_138, 1); - ctx->freeBigInts(_tmp_118, 1); - ctx->freeBigInts(_sigValue_139, 1); - ctx->freeBigInts(_tmp_119, 1); - ctx->freeBigInts(_sigValue_140, 1); - ctx->freeBigInts(_tmp_120, 1); - ctx->freeBigInts(_sigValue_141, 1); - ctx->freeBigInts(_tmp_121, 1); - ctx->freeBigInts(_sigValue_142, 1); - ctx->freeBigInts(_tmp_122, 1); - ctx->freeBigInts(_sigValue_143, 1); - ctx->freeBigInts(_tmp_123, 1); - ctx->freeBigInts(_sigValue_144, 1); - ctx->freeBigInts(_tmp_124, 1); - ctx->freeBigInts(_sigValue_145, 1); - ctx->freeBigInts(_tmp_125, 1); - ctx->freeBigInts(_sigValue_146, 1); - ctx->freeBigInts(_sigValue_147, 1); - ctx->freeBigInts(_tmp_126, 1); - ctx->freeBigInts(_sigValue_148, 1); - ctx->freeBigInts(_tmp_127, 1); - ctx->freeBigInts(_sigValue_149, 1); - ctx->freeBigInts(_tmp_128, 1); - ctx->freeBigInts(_sigValue_150, 1); - ctx->freeBigInts(_tmp_129, 1); - ctx->freeBigInts(_sigValue_151, 1); - ctx->freeBigInts(_tmp_130, 1); - ctx->freeBigInts(_sigValue_152, 1); - ctx->freeBigInts(_tmp_131, 1); - ctx->freeBigInts(_sigValue_153, 1); - ctx->freeBigInts(_tmp_132, 1); - ctx->freeBigInts(_sigValue_154, 1); - ctx->freeBigInts(_tmp_133, 1); - ctx->freeBigInts(_sigValue_155, 1); - ctx->freeBigInts(_sigValue_156, 1); - ctx->freeBigInts(_tmp_134, 1); - ctx->freeBigInts(_sigValue_157, 1); - ctx->freeBigInts(_tmp_135, 1); - ctx->freeBigInts(_sigValue_158, 1); - ctx->freeBigInts(_tmp_136, 1); - ctx->freeBigInts(_sigValue_159, 1); - ctx->freeBigInts(_tmp_137, 1); - ctx->freeBigInts(_sigValue_160, 1); - ctx->freeBigInts(_tmp_138, 1); - ctx->freeBigInts(_sigValue_161, 1); - ctx->freeBigInts(_tmp_139, 1); - ctx->freeBigInts(_sigValue_162, 1); - ctx->freeBigInts(_tmp_140, 1); - ctx->freeBigInts(_sigValue_163, 1); - ctx->freeBigInts(_tmp_141, 1); - ctx->freeBigInts(_sigValue_164, 1); - ctx->freeBigInts(_sigValue_165, 1); - ctx->freeBigInts(_tmp_142, 1); - ctx->freeBigInts(_sigValue_166, 1); - ctx->freeBigInts(_tmp_143, 1); - ctx->freeBigInts(_sigValue_167, 1); - ctx->freeBigInts(_tmp_144, 1); - ctx->freeBigInts(_sigValue_168, 1); - ctx->freeBigInts(_tmp_145, 1); - ctx->freeBigInts(_sigValue_169, 1); - ctx->freeBigInts(_sigValue_170, 1); - ctx->freeBigInts(_tmp_146, 1); - ctx->freeBigInts(_sigValue_171, 1); - ctx->freeBigInts(_tmp_147, 1); - ctx->freeBigInts(_sigValue_172, 1); - ctx->freeBigInts(_tmp_148, 1); - ctx->freeBigInts(_sigValue_173, 1); - ctx->freeBigInts(_tmp_149, 1); - ctx->freeBigInts(_sigValue_174, 1); - ctx->freeBigInts(_sigValue_175, 1); - ctx->freeBigInts(_tmp_150, 1); - ctx->freeBigInts(_sigValue_176, 1); - ctx->freeBigInts(_tmp_151, 1); - ctx->freeBigInts(_sigValue_177, 1); - ctx->freeBigInts(_tmp_152, 1); - ctx->freeBigInts(_sigValue_178, 1); - ctx->freeBigInts(_tmp_153, 1); - ctx->freeBigInts(_sigValue_179, 1); - ctx->freeBigInts(_sigValue_180, 1); - ctx->freeBigInts(_tmp_154, 1); - ctx->freeBigInts(_sigValue_181, 1); - ctx->freeBigInts(_sigValue_182, 1); - ctx->freeBigInts(_tmp_155, 1); - ctx->freeBigInts(_sigValue_183, 1); - ctx->freeBigInts(_tmp_156, 1); - ctx->freeBigInts(_sigValue_184, 1); - ctx->freeBigInts(_tmp_157, 1); - ctx->freeBigInts(_sigValue_185, 1); - ctx->freeBigInts(_tmp_158, 1); - ctx->freeBigInts(_sigValue_186, 1); - ctx->freeBigInts(_tmp_159, 1); - ctx->freeBigInts(_sigValue_187, 1); - ctx->freeBigInts(_tmp_160, 1); - ctx->freeBigInts(_sigValue_188, 1); - ctx->freeBigInts(_tmp_161, 1); - ctx->freeBigInts(_sigValue_189, 1); - ctx->freeBigInts(_tmp_162, 1); - ctx->freeBigInts(_sigValue_190, 1); - ctx->freeBigInts(_sigValue_191, 1); - ctx->freeBigInts(_tmp_163, 1); - ctx->freeBigInts(_sigValue_192, 1); - ctx->freeBigInts(_tmp_164, 1); - ctx->freeBigInts(_sigValue_193, 1); - ctx->freeBigInts(_tmp_165, 1); - ctx->freeBigInts(_sigValue_194, 1); - ctx->freeBigInts(_tmp_166, 1); - ctx->freeBigInts(_sigValue_195, 1); - ctx->freeBigInts(_sigValue_196, 1); - ctx->freeBigInts(_tmp_167, 1); - ctx->freeBigInts(_sigValue_197, 1); - ctx->freeBigInts(_tmp_168, 1); - ctx->freeBigInts(_sigValue_198, 1); - ctx->freeBigInts(_tmp_169, 1); - ctx->freeBigInts(_sigValue_199, 1); - ctx->freeBigInts(_tmp_170, 1); - ctx->freeBigInts(_sigValue_200, 1); - ctx->freeBigInts(_sigValue_201, 1); - ctx->freeBigInts(_tmp_171, 1); - ctx->freeBigInts(_sigValue_202, 1); - ctx->freeBigInts(_tmp_172, 1); - ctx->freeBigInts(_sigValue_203, 1); - ctx->freeBigInts(_tmp_173, 1); - ctx->freeBigInts(_sigValue_204, 1); - ctx->freeBigInts(_tmp_174, 1); - ctx->freeBigInts(_sigValue_205, 1); - ctx->freeBigInts(_sigValue_206, 1); - ctx->freeBigInts(_tmp_175, 1); - ctx->freeBigInts(_sigValue_207, 1); - ctx->freeBigInts(_tmp_176, 1); - ctx->freeBigInts(_sigValue_208, 1); - ctx->freeBigInts(_sigValue_209, 1); - ctx->freeBigInts(_tmp_177, 1); - ctx->freeBigInts(_sigValue_210, 1); - ctx->freeBigInts(_tmp_178, 1); - ctx->freeBigInts(_sigValue_211, 1); - ctx->freeBigInts(_sigValue_212, 1); - ctx->freeBigInts(_tmp_179, 1); - ctx->freeBigInts(_sigValue_213, 1); - ctx->freeBigInts(_tmp_180, 1); - ctx->freeBigInts(_sigValue_214, 1); - ctx->freeBigInts(_sigValue_215, 1); - ctx->freeBigInts(_sigValue_216, 1); - ctx->freeBigInts(_tmp_181, 1); - ctx->freeBigInts(_sigValue_217, 1); - ctx->freeBigInts(_tmp_182, 1); - ctx->freeBigInts(_sigValue_218, 1); - ctx->freeBigInts(_tmp_183, 1); - ctx->freeBigInts(_sigValue_219, 1); - ctx->freeBigInts(_tmp_184, 1); - ctx->freeBigInts(_sigValue_220, 1); - ctx->freeBigInts(_tmp_185, 1); - ctx->freeBigInts(_sigValue_221, 1); - ctx->freeBigInts(_tmp_186, 1); - ctx->freeBigInts(_sigValue_222, 1); - ctx->freeBigInts(_tmp_187, 1); - ctx->freeBigInts(_sigValue_223, 1); - ctx->freeBigInts(_tmp_188, 1); - ctx->freeBigInts(_sigValue_224, 1); - ctx->freeBigInts(_sigValue_225, 1); - ctx->freeBigInts(_tmp_189, 1); - ctx->freeBigInts(_sigValue_226, 1); - ctx->freeBigInts(_tmp_190, 1); - ctx->freeBigInts(_sigValue_227, 1); - ctx->freeBigInts(_tmp_191, 1); - ctx->freeBigInts(_sigValue_228, 1); - ctx->freeBigInts(_tmp_192, 1); - ctx->freeBigInts(_sigValue_229, 1); - ctx->freeBigInts(_tmp_193, 1); - ctx->freeBigInts(_sigValue_230, 1); - ctx->freeBigInts(_tmp_194, 1); - ctx->freeBigInts(_sigValue_231, 1); - ctx->freeBigInts(_tmp_195, 1); - ctx->freeBigInts(_tmp_196, 1); - ctx->freeBigInts(_tmp_197, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_198, 1); -} - -/* -BabyAdd -*/ -void BabyAdd_4d10bd4b8f5eb590(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - PBigInt _sigValue = ctx->allocBigInts(1); - int _sigIdx_1; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _tmp = ctx->allocBigInts(1); - int _sigIdx_2; - int _sigIdx_3; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _sigIdx_4; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _tmp_1 = ctx->allocBigInts(1); - int _sigIdx_5; - int _sigIdx_6; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "21888242871839275222246405745257275088548364400416034343698204186575808326917", 10); - PBigInt _tmp_3 = ctx->allocBigInts(1); - int _sigIdx_7; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - int _sigIdx_8; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_9; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _tmp_5 = ctx->allocBigInts(1); - PBigInt _tmp_6 = ctx->allocBigInts(1); - int _sigIdx_10; - int _sigIdx_11; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - int _sigIdx_12; - PBigInt _sigValue_9 = ctx->allocBigInts(1); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _sigIdx_13; - int _sigIdx_14; - PBigInt _sigValue_10 = ctx->allocBigInts(1); - int _sigIdx_15; - PBigInt _sigValue_11 = ctx->allocBigInts(1); - PBigInt _tmp_8 = ctx->allocBigInts(1); - int _sigIdx_16; - PBigInt _sigValue_12 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "168696", 10); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_17; - int _sigIdx_18; - PBigInt _sigValue_13 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "168696", 10); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "1", 10); - PBigInt _tmp_13 = ctx->allocBigInts(1); - int _sigIdx_19; - PBigInt _sigValue_14 = ctx->allocBigInts(1); - PBigInt _tmp_14 = ctx->allocBigInts(1); - int _sigIdx_20; - PBigInt _sigValue_15 = ctx->allocBigInts(1); - int _sigIdx_21; - PBigInt _sigValue_16 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - int _sigIdx_22; - PBigInt _sigValue_17 = ctx->allocBigInts(1); - int _sigIdx_23; - PBigInt _sigValue_18 = ctx->allocBigInts(1); - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "168700", 10); - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _tmp_17 = ctx->allocBigInts(1); - int _sigIdx_24; - PBigInt _sigValue_19 = ctx->allocBigInts(1); - PBigInt _tmp_18 = ctx->allocBigInts(1); - int _sigIdx_25; - PBigInt _sigValue_20 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "168696", 10); - PBigInt _tmp_19 = ctx->allocBigInts(1); - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "1", 10); - PBigInt _tmp_20 = ctx->allocBigInts(1); - PBigInt _tmp_21 = ctx->allocBigInts(1); - int _sigIdx_26; - int _sigIdx_27; - PBigInt _sigValue_21 = ctx->allocBigInts(1); - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "168696", 10); - PBigInt _tmp_22 = ctx->allocBigInts(1); - PBigInt _const_9; - _const_9 = ctx->allocBigInts(1); - mpz_set_str(_const_9[0], "1", 10); - PBigInt _tmp_23 = ctx->allocBigInts(1); - int _sigIdx_28; - PBigInt _sigValue_22 = ctx->allocBigInts(1); - PBigInt _tmp_24 = ctx->allocBigInts(1); - int _sigIdx_29; - PBigInt _sigValue_23 = ctx->allocBigInts(1); - int _sigIdx_30; - PBigInt _sigValue_24 = ctx->allocBigInts(1); - PBigInt _const_10; - _const_10 = ctx->allocBigInts(1); - mpz_set_str(_const_10[0], "168700", 10); - PBigInt _tmp_25 = ctx->allocBigInts(1); - PBigInt _tmp_26 = ctx->allocBigInts(1); - int _sigIdx_31; - PBigInt _sigValue_25 = ctx->allocBigInts(1); - PBigInt _tmp_27 = ctx->allocBigInts(1); - - - /* signal input x1 */ - - /* signal input y1 */ - - /* signal input x2 */ - - /* signal input y2 */ - - /* signal output xout */ - - /* signal output yout */ - - /* signal beta */ - - /* signal gamma */ - - /* signal delta */ - - /* signal tau */ - - /* var a = 168700 */ - - /* var d = 168696 */ - - /* beta <== x1*y2 */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); - ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_1, _sigValue_1); - ctx->field->mul(_tmp,_sigValue,_sigValue_1); - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->setSignal(ctx->cIdx, _sigIdx_2, _tmp); - - /* gamma <== y1*x2 */ - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_3, _sigValue_2); - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_4, _sigValue_3); - ctx->field->mul(_tmp_1,_sigValue_2,_sigValue_3); - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->setSignal(ctx->cIdx, _sigIdx_5, _tmp_1); - - /* delta <== (-a*x1+y1)*(x2 + y2) */ - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x08f10707b58d70c2LL /* x1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_6, _sigValue_4); - ctx->field->mul(_tmp_3,_const,_sigValue_4); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8307b58a5a9fLL /* y1 */); - ctx->getSignal(ctx->cIdx, _sigIdx_7, _sigValue_5); - ctx->field->add(_tmp_4,_tmp_3,_sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x08f10607b58d6f0fLL /* x2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_8, _sigValue_6); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08ed8407b58a5c52LL /* y2 */); - ctx->getSignal(ctx->cIdx, _sigIdx_9, _sigValue_7); - ctx->field->add(_tmp_5,_sigValue_6,_sigValue_7); - ctx->field->mul(_tmp_6,_tmp_4,_tmp_5); - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->setSignal(ctx->cIdx, _sigIdx_10, _tmp_6); - - /* tau <== beta * gamma */ - _sigIdx_11 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_11, _sigValue_8); - _sigIdx_12 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_12, _sigValue_9); - ctx->field->mul(_tmp_7,_sigValue_8,_sigValue_9); - _sigIdx_13 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->setSignal(ctx->cIdx, _sigIdx_13, _tmp_7); - - /* xout <-- (beta + gamma) / (1+ d*tau) */ - _sigIdx_14 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_14, _sigValue_10); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_15, _sigValue_11); - ctx->field->add(_tmp_8,_sigValue_10,_sigValue_11); - _sigIdx_16 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_16, _sigValue_12); - ctx->field->mul(_tmp_9,_const_1,_sigValue_12); - ctx->field->add(_tmp_10,_const_2,_tmp_9); - ctx->field->div(_tmp_11,_tmp_8,_tmp_10); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); - ctx->setSignal(ctx->cIdx, _sigIdx_17, _tmp_11); - - /* (1+ d*tau) * xout === (beta + gamma) */ - _sigIdx_18 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_18, _sigValue_13); - ctx->field->mul(_tmp_12,_const_3,_sigValue_13); - ctx->field->add(_tmp_13,_const_4,_tmp_12); - _sigIdx_19 = ctx->getSignalOffset(ctx->cIdx, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(ctx->cIdx, _sigIdx_19, _sigValue_14); - ctx->field->mul(_tmp_14,_tmp_13,_sigValue_14); - _sigIdx_20 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_20, _sigValue_15); - _sigIdx_21 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_21, _sigValue_16); - ctx->field->add(_tmp_15,_sigValue_15,_sigValue_16); - ctx->checkConstraint(_tmp_14, _tmp_15, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:45:4"); - /* yout <-- (delta + a*beta - gamma) / (1-d*tau) */ - _sigIdx_22 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->getSignal(ctx->cIdx, _sigIdx_22, _sigValue_17); - _sigIdx_23 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_23, _sigValue_18); - ctx->field->mul(_tmp_16,_const_5,_sigValue_18); - ctx->field->add(_tmp_17,_sigValue_17,_tmp_16); - _sigIdx_24 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_24, _sigValue_19); - ctx->field->sub(_tmp_18,_tmp_17,_sigValue_19); - _sigIdx_25 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_25, _sigValue_20); - ctx->field->mul(_tmp_19,_const_6,_sigValue_20); - ctx->field->sub(_tmp_20,_const_7,_tmp_19); - ctx->field->div(_tmp_21,_tmp_18,_tmp_20); - _sigIdx_26 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); - ctx->setSignal(ctx->cIdx, _sigIdx_26, _tmp_21); - - /* (1-d*tau)*yout === (delta + a*beta - gamma) */ - _sigIdx_27 = ctx->getSignalOffset(ctx->cIdx, 0x56d7bd194448c389LL /* tau */); - ctx->getSignal(ctx->cIdx, _sigIdx_27, _sigValue_21); - ctx->field->mul(_tmp_22,_const_8,_sigValue_21); - ctx->field->sub(_tmp_23,_const_9,_tmp_22); - _sigIdx_28 = ctx->getSignalOffset(ctx->cIdx, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(ctx->cIdx, _sigIdx_28, _sigValue_22); - ctx->field->mul(_tmp_24,_tmp_23,_sigValue_22); - _sigIdx_29 = ctx->getSignalOffset(ctx->cIdx, 0x52076675ec13a0c1LL /* delta */); - ctx->getSignal(ctx->cIdx, _sigIdx_29, _sigValue_23); - _sigIdx_30 = ctx->getSignalOffset(ctx->cIdx, 0x7627619b954620a7LL /* beta */); - ctx->getSignal(ctx->cIdx, _sigIdx_30, _sigValue_24); - ctx->field->mul(_tmp_25,_const_10,_sigValue_24); - ctx->field->add(_tmp_26,_sigValue_23,_tmp_25); - _sigIdx_31 = ctx->getSignalOffset(ctx->cIdx, 0x229176bd1f6ba96aLL /* gamma */); - ctx->getSignal(ctx->cIdx, _sigIdx_31, _sigValue_25); - ctx->field->sub(_tmp_27,_tmp_26,_sigValue_25); - ctx->checkConstraint(_tmp_24, _tmp_27, "/Users/jbaylina/git/iden3/circomlib/circuits/babyjub.circom:48:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_sigValue_8, 1); - ctx->freeBigInts(_sigValue_9, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_10, 1); - ctx->freeBigInts(_sigValue_11, 1); - ctx->freeBigInts(_tmp_8, 1); - ctx->freeBigInts(_sigValue_12, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_13, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_sigValue_14, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_sigValue_15, 1); - ctx->freeBigInts(_sigValue_16, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_sigValue_17, 1); - ctx->freeBigInts(_sigValue_18, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_sigValue_19, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_20, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_19, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_20, 1); - ctx->freeBigInts(_tmp_21, 1); - ctx->freeBigInts(_sigValue_21, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_22, 1); - ctx->freeBigInts(_const_9, 1); - ctx->freeBigInts(_tmp_23, 1); - ctx->freeBigInts(_sigValue_22, 1); - ctx->freeBigInts(_tmp_24, 1); - ctx->freeBigInts(_sigValue_23, 1); - ctx->freeBigInts(_sigValue_24, 1); - ctx->freeBigInts(_const_10, 1); - ctx->freeBigInts(_tmp_25, 1); - ctx->freeBigInts(_tmp_26, 1); - ctx->freeBigInts(_sigValue_25, 1); - ctx->freeBigInts(_tmp_27, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=0 -*/ -void EscalarMulWindow_c58c15588b83ea88(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "2671756056509184035029146175565761955751135805354291559563293617232983272177", 10); - mpz_set_str(table[3], "2663205510731142763556352975002641716101654201788071096152948830924149045094", 10); - mpz_set_str(table[4], "21061849532035604199835446647463213287644222029065034749734651703816665561936", 10); - mpz_set_str(table[5], "10590233619556693821464000850700822860334161666884611627447818867434809995703", 10); - mpz_set_str(table[6], "20317648563765902174667075232032560370309215640559693287156736658161704424594", 10); - mpz_set_str(table[7], "21013647718336911519764140024913157479577493715202328677986614600884911794491", 10); - mpz_set_str(table[8], "14478206612680015666001373583501139293983486047137949145191530060944286683521", 10); - mpz_set_str(table[9], "10123863954505892803935721758442873472294119246957893940443040317515579486726", 10); - mpz_set_str(table[10], "17533772573527889246527547392489694739099032758079124639632822701511575877562", 10); - mpz_set_str(table[11], "10485946492182283858299804441446054924473212259565210991291733992330817035622", 10); - mpz_set_str(table[12], "10691945132484551239590811899222374800071270413484981694447010851744275692492", 10); - mpz_set_str(table[13], "17017220761087367377437872599437857226988338675941324372991530149189226041639", 10); - mpz_set_str(table[14], "11512305266119483002967267541281378583475563590412603361589692706428762942919", 10); - mpz_set_str(table[15], "17701998960898923168769796194904256588134759210821296842657572359646247369904", 10); - mpz_set_str(table[16], "14748579267318245095313355470697847753165312291616751728218498300852858576240", 10); - mpz_set_str(table[17], "12348105919434692489761959759489837184429607773008554537644575195064773395599", 10); - mpz_set_str(table[18], "20627209280839605123458262072710281132770262871506070816948130741226736752378", 10); - mpz_set_str(table[19], "19774165882217531119739800793352824781327668198019718066011577860282902125243", 10); - mpz_set_str(table[20], "13138473324145907025806656975321736895998099375896328736232314856705580868417", 10); - mpz_set_str(table[21], "11161378845903559652998558387712808648701614065229446679904118706678977704673", 10); - mpz_set_str(table[22], "4783703548184459946824339914087560705114529464571510440857756065249448387111", 10); - mpz_set_str(table[23], "17372228386106645746052050627097719626888756085069034782717276260887316255101", 10); - mpz_set_str(table[24], "14047413995832988517702590877959433912209562292767914010963039996558229040933", 10); - mpz_set_str(table[25], "15371248093363251128008345015380390264962889173415460722202760022337670229170", 10); - mpz_set_str(table[26], "14909468781625592758256535742632378596186891695566342467657803191467264544669", 10); - mpz_set_str(table[27], "3548853310819272883077126647158239434842415848621355976908519691315221761647", 10); - mpz_set_str(table[28], "4549037862652931337968683807757208928887981760400435154359412727518098339337", 10); - mpz_set_str(table[29], "9570397906664064215145622756617417040436100343051281135720852571956974557834", 10); - mpz_set_str(table[30], "15639545649252730533429378371400422015088795179548877158373407950802419394172", 10); - mpz_set_str(table[31], "10862252642237447003556041796754771236159124858390445391230106925080927464385", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=1 -*/ -void EscalarMulWindow_c58c16588b83ec3b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "19455639892203982161904065887827858143789210199458192045947095791879563002868", 10); - mpz_set_str(table[3], "5728209579115735160253096048399417829610899048655747609318106071850801912321", 10); - mpz_set_str(table[4], "18686111957603690142897163935624451798199750214413650410111676285463855030329", 10); - mpz_set_str(table[5], "19323810151487654006030918772798553609636456219633670253832750591762532092432", 10); - mpz_set_str(table[6], "706228624705042566868137974354817500023047387261009322012026511666994805696", 10); - mpz_set_str(table[7], "12718753489108893940617839864580563828565238915991990901201774215604335348934", 10); - mpz_set_str(table[8], "219027113030251483556148462862945817714391143716517443418769250867495969997", 10); - mpz_set_str(table[9], "16962394730098992742840890875321417988868456101920458125612662972429881454408", 10); - mpz_set_str(table[10], "13016826415290691919553731757976770379671939718956443199809356095112004579699", 10); - mpz_set_str(table[11], "1359466613565304654749319254848103402738704679493312522734974950562290665325", 10); - mpz_set_str(table[12], "5140095991777712156655118225691596094097957392214510343203353723912782997132", 10); - mpz_set_str(table[13], "3987059370913932243425052982430684796273382748549604198559328872438757141590", 10); - mpz_set_str(table[14], "2283566044616545281776255683217251843611107557577469795054423579012635869675", 10); - mpz_set_str(table[15], "70264709290222483776098951810282562276044890574113774620457455075794591312", 10); - mpz_set_str(table[16], "16555314855491486874438631352543335040340030241816507059736477310745154472640", 10); - mpz_set_str(table[17], "19382928900222393377473659441126625670945163376073678194142983735634141916263", 10); - mpz_set_str(table[18], "8086092990754260566701029612135162344420167517529259360723765668718606900034", 10); - mpz_set_str(table[19], "16111606256110216805458928120918958525326838805009433283434999243360680375910", 10); - mpz_set_str(table[20], "18248481455996927337609181666090322265796817336713969037740875253880857812596", 10); - mpz_set_str(table[21], "3081229463882440249188163677994210271499208795907811910647944775042100707985", 10); - mpz_set_str(table[22], "5640279503961230459401276264741775148836142745649387394373819934366888926345", 10); - mpz_set_str(table[23], "15396724379836625238543402477270760289309088934474925981791699207401537515620", 10); - mpz_set_str(table[24], "8607722889528498400823478295882721091737905572460707006751171159342906843742", 10); - mpz_set_str(table[25], "21466865367587905325003930902912047106650665927536036768946340342192655382096", 10); - mpz_set_str(table[26], "4854500387999538816548985530147382852450171939158774084937784863757011025279", 10); - mpz_set_str(table[27], "10310501313371743938750396948922110166818977458931556811646942602928314527040", 10); - mpz_set_str(table[28], "14604549082165157031789965675930596799936491131656743459412745484005719211110", 10); - mpz_set_str(table[29], "1339979265112341323491906777046183714637158038283904900091428409914103298899", 10); - mpz_set_str(table[30], "4792538761263689650036234468785937904696616586598070710846239025949758471218", 10); - mpz_set_str(table[31], "12711691658268437920239413698528095261450592977303563540981382180495087939658", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=2 -*/ -void EscalarMulWindow_c58c17588b83edee(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9446005552421437632171670368411141852950491030316681294022758941762353691302", 10); - mpz_set_str(table[3], "2659082391675250564706486650259869870961386176207643658467710396489318334239", 10); - mpz_set_str(table[4], "3567776678731498205360741700177218786645604816296171311351827198380504470091", 10); - mpz_set_str(table[5], "8566560682186698983919280572805734023394051348324032030872146310266738697218", 10); - mpz_set_str(table[6], "258911588087935750556942942400031114216937370209695211046780804829949135511", 10); - mpz_set_str(table[7], "14300986411385662963053584650495461488028522919951330498240837785458712915934", 10); - mpz_set_str(table[8], "15564738851955513773493711440024193357909300986464999380286348490264230670386", 10); - mpz_set_str(table[9], "5965579401397693974925033270864680183364822636666363235432562636579089978930", 10); - mpz_set_str(table[10], "7657407311087419164589122153471097548039283075908805789298656400236333314321", 10); - mpz_set_str(table[11], "9545803729989116516909189980406185940534435535160487234366655346494995944031", 10); - mpz_set_str(table[12], "8904879112878954266045205312892118060926220046935092572749733631753765966133", 10); - mpz_set_str(table[13], "5397942272759262673541954303471790981432054904879506655872748899940928743848", 10); - mpz_set_str(table[14], "16005405010959983253060935791915368839392689218364939430089223865098988491261", 10); - mpz_set_str(table[15], "12780906601762734568154860729143030086742693287996922377232618204399174262389", 10); - mpz_set_str(table[16], "6355113513875581014627558583581851782513034723503575831227260581989021260986", 10); - mpz_set_str(table[17], "19228898953773995361652944393706800625574665856608795952703625316607893036471", 10); - mpz_set_str(table[18], "13341589571471376591988824520667845474859907413843030067082319287114707148997", 10); - mpz_set_str(table[19], "11939769823730562198751801938985875475927535850886049883104757466206396080091", 10); - mpz_set_str(table[20], "16490585193629424755585755820029525210801181920131533025324423002003774108689", 10); - mpz_set_str(table[21], "13764187366310991388903774097630124543619255258828595613110964142183378786976", 10); - mpz_set_str(table[22], "8006315467798305079984157816179731973218311346019365349814756162269404722839", 10); - mpz_set_str(table[23], "1605023994361242947668016322130262544864224794817220524339289545125698624339", 10); - mpz_set_str(table[24], "9530959617474658142363905231723417839467126504682984204053041372375877710848", 10); - mpz_set_str(table[25], "16118223422123893792488680167063782747373990466155676430595485511134433349476", 10); - mpz_set_str(table[26], "2865399069098153375767726449428261452275209590690129835321747816113392404504", 10); - mpz_set_str(table[27], "8928564173378216588030433107324122575827378299963147498101157041063618300439", 10); - mpz_set_str(table[28], "10339017142837648466886820897040099586220256711351150134165915735328557576324", 10); - mpz_set_str(table[29], "6596585013208715469387108496234424289676462443093059959055359882641385749585", 10); - mpz_set_str(table[30], "14825605545088609252050521210594268465512765862272571308204873997578798474325", 10); - mpz_set_str(table[31], "12187805937843977377971909266679659960602587881013889583696693031688772786111", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=3 -*/ -void EscalarMulWindow_c58c18588b83efa1(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8150092786527816117187776982124415533909397268460948027014784329744581130055", 10); - mpz_set_str(table[3], "9518404959558566461656628035698053553320470917559935829024277026442632056374", 10); - mpz_set_str(table[4], "19557512886391178973040556919290088965905391130848997966415180460989529314240", 10); - mpz_set_str(table[5], "13180631977306207642756209240118576579994394123759676161103836152880322549063", 10); - mpz_set_str(table[6], "19477474816043793545117155715097546600589596961654549537557057126397214129618", 10); - mpz_set_str(table[7], "8777943635232350965989221427258224047780458468881792910136531538587040893617", 10); - mpz_set_str(table[8], "12030196390222755730200134355747729718237637263992972457879893194696449174278", 10); - mpz_set_str(table[9], "17846471008363408645850734457538034601310377961363285443030130502052793125919", 10); - mpz_set_str(table[10], "4549527814713249266071034960306756526094528593868529547706421904603490190414", 10); - mpz_set_str(table[11], "3378272617647076909564417794520077205413646921985457795877389705928708328881", 10); - mpz_set_str(table[12], "5996432105003214217061307570202564768225021824385263349334268127523564597056", 10); - mpz_set_str(table[13], "7770619726190874830265312966887584714987914307242217484543218976822310113700", 10); - mpz_set_str(table[14], "1483679205901265195758427835974928922190981298819003793956998332436015765360", 10); - mpz_set_str(table[15], "3073341262968435807189266353884391706594011592475698977361871901736181092796", 10); - mpz_set_str(table[16], "10985704671102161346854146792047362123740315488132666227309860492960747383468", 10); - mpz_set_str(table[17], "5011814540563716381283896406542887602569134987549250765805611764631975504631", 10); - mpz_set_str(table[18], "9796417847389666106133741044999871704158698170778634927072967498096563971465", 10); - mpz_set_str(table[19], "7139881315939230237213038310613971673498303203772940185084463029730438207111", 10); - mpz_set_str(table[20], "3858790035360253599992673710272605999900361113229111656484083455737561764266", 10); - mpz_set_str(table[21], "18193594779659082118327670475682455165691956974006422261251303354759573985179", 10); - mpz_set_str(table[22], "15913395802415558156450090448958994836876094485178169297011671361802250846294", 10); - mpz_set_str(table[23], "6290954700813415583702420446892893724592386469368652831713294424023921328391", 10); - mpz_set_str(table[24], "12234154988449955295007801346911730456263810093685589990745736296694691331689", 10); - mpz_set_str(table[25], "4071619348865044242854337481102671518468245316509398317323413829676831184140", 10); - mpz_set_str(table[26], "18296970670987470541928352293945651926143113385337809319372379472353243645271", 10); - mpz_set_str(table[27], "4335070521515665236648391284184099626198223819230647317471408272758195314225", 10); - mpz_set_str(table[28], "7371225017789541274935253781835429956558085106989173971539756734534037636223", 10); - mpz_set_str(table[29], "16010871926200898046323835838781774961955270791100780009807204854105126992789", 10); - mpz_set_str(table[30], "16441281352077729865298617620287397671304532588403423939109136321565674518251", 10); - mpz_set_str(table[31], "3943334682388292137963538837370597916654690547563398341672467979005282708582", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=4 -*/ -void EscalarMulWindow_c58c19588b83f154(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3417806579160556134333813259460474815981119464296707667859014889696018752668", 10); - mpz_set_str(table[3], "18303530119038872491958068153679093932762993086624566840246755837399985722074", 10); - mpz_set_str(table[4], "1278722777077380932846071312495674428829103826635244088139534656779247221080", 10); - mpz_set_str(table[5], "4766813576924613894849782381099443235425062896697198995309921179968121988382", 10); - mpz_set_str(table[6], "21706560547471963408928734542577270786058777664821805388285584236309745036595", 10); - mpz_set_str(table[7], "19474420358542337323166829084757866210622349125481878856679236914789204554456", 10); - mpz_set_str(table[8], "16148777962245742753344807259751415019316024545781160256739350564573105618519", 10); - mpz_set_str(table[9], "13136915380084811164829570762824983872909448080088933584491857527036149129016", 10); - mpz_set_str(table[10], "13523320605698245999658794856573576592560865356495661132295347461850750329252", 10); - mpz_set_str(table[11], "16945934443961665381663271958175209640958642333272209699999019699882600368277", 10); - mpz_set_str(table[12], "20076159369861017393528816561212830413329240268304655238542677851614925369880", 10); - mpz_set_str(table[13], "19712144684855766330661628479389116499212293472268323254960610438656057236756", 10); - mpz_set_str(table[14], "17016301484294934920930205076531639302999426390692086365871738070055504226095", 10); - mpz_set_str(table[15], "13398371924924462007415512847441324485047078419293140459621970026684818296882", 10); - mpz_set_str(table[16], "19217525217547781067659519568214099648797785214583347559328549941353656852574", 10); - mpz_set_str(table[17], "2178082404318103957879941978677884675189740693774631385842865689786090982265", 10); - mpz_set_str(table[18], "15658612728463314899530508864952139121459571024126136259396145002568899460974", 10); - mpz_set_str(table[19], "18440614053011977886564579546481983730765315209862726547260461172138295387769", 10); - mpz_set_str(table[20], "18839244752907500590526601192991753266046853314501406690535890618462054339560", 10); - mpz_set_str(table[21], "10841318968708963276604972380526125897904867627368853645446154325238682572695", 10); - mpz_set_str(table[22], "20660736421097303468403672441762447742351266035660081190461881367659810884140", 10); - mpz_set_str(table[23], "9050275196723472554785339332181686124757733268343017160454836316985136474861", 10); - mpz_set_str(table[24], "20640074942511254836094073673277550508496065345652377346684872774744705553194", 10); - mpz_set_str(table[25], "8167234296839537558032690969949000222860801978663856658019195761607674902086", 10); - mpz_set_str(table[26], "1394942689707751005522748817749065157094525057684238600474139408310067123334", 10); - mpz_set_str(table[27], "10441944898740297097292400320919437470446758344635169492916298862720353642446", 10); - mpz_set_str(table[28], "15744618198993550727048455997859510978234635572593326504554282177598131883106", 10); - mpz_set_str(table[29], "10859554966742577506446219189812047764206433665977759405737438783611339614897", 10); - mpz_set_str(table[30], "14993305322415576880408281122582894662874043134537330316523606697439674338905", 10); - mpz_set_str(table[31], "1201099550761690530930370254368883330229857131132952162294279509850888593432", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=5 -*/ -void EscalarMulWindow_c58c1a588b83f307(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "13574041550626754575366066602333672761973100503047465467497309037302178242397", 10); - mpz_set_str(table[3], "19992524180043582397908710904281864534803688779981125908797255813631674839085", 10); - mpz_set_str(table[4], "4233278821061390511829933889266566610972903117154372446017957348055990808177", 10); - mpz_set_str(table[5], "5045259922158927676824318395562168462542291641505375801985274351573893106551", 10); - mpz_set_str(table[6], "16514342103887099746634946485715139122889733891075255727183720476971477249965", 10); - mpz_set_str(table[7], "8941892154166956580644653623322591610335064214261856454536520725502245404896", 10); - mpz_set_str(table[8], "187640030886842074568868794411316543881262478898014282086332526801593304561", 10); - mpz_set_str(table[9], "7353300810991449244645247513757041449213870871611661875317196811133530771377", 10); - mpz_set_str(table[10], "9035012071275405030113227508261398328675897139033940681663695733954625302633", 10); - mpz_set_str(table[11], "13994146853448139651844184964877279457606458646044220254646840214379104181616", 10); - mpz_set_str(table[12], "10056493999583946229755037153761492391057729831323133475063291955099443866427", 10); - mpz_set_str(table[13], "17665730161408451108051039115010176092290627929105985845561186395902567388712", 10); - mpz_set_str(table[14], "4984009842947563263845614070467543138668350217322828972470105767837626797905", 10); - mpz_set_str(table[15], "6666279057534804934632346478442039345840959420838158257904518468325188099048", 10); - mpz_set_str(table[16], "16667717833601441596497020218451346232900287361473307554125507497294302221125", 10); - mpz_set_str(table[17], "4299190798223000045100922324845313965612727298585835155326418127263167430446", 10); - mpz_set_str(table[18], "8963999402585305736134178842989471983204848885881140435965840852298428910979", 10); - mpz_set_str(table[19], "15195888441457465364169687194530930837418845100802253190463719389850135837997", 10); - mpz_set_str(table[20], "21019300571349511718902277781053887653229961974932304986282542770263430207678", 10); - mpz_set_str(table[21], "15913614265219129518097086214455721058544292837089029054840324473554057262891", 10); - mpz_set_str(table[22], "2457286044316427442609379624657309589484096804612134196540071711219220641249", 10); - mpz_set_str(table[23], "13952791732012830625717758607733331162866966608885517470676907036767142639134", 10); - mpz_set_str(table[24], "14169902924456573990005873884160956219559738432450143453558722645043316468575", 10); - mpz_set_str(table[25], "16516874647228823808201476919779146507700305046953995102714068022782496874651", 10); - mpz_set_str(table[26], "10179980925318753964222549921492314309924887331948014358420810323581002555886", 10); - mpz_set_str(table[27], "18619066094028827185374111955005952707817917611725674290260026457865932605501", 10); - mpz_set_str(table[28], "7517604717861108228073885641035471467823508010054167193261226877877706805997", 10); - mpz_set_str(table[29], "15746667833056847894521939085540098519545058475593094497857665247104406848304", 10); - mpz_set_str(table[30], "7743850684229402724789741766630601562127324427592054959511324901026542794431", 10); - mpz_set_str(table[31], "21555586625526756660000084359038381415932637176256224834915467932769687133109", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=6 -*/ -void EscalarMulWindow_c58c1b588b83f4ba(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1367171927688033792937127342794885269658852023132799321225490157407070058762", 10); - mpz_set_str(table[3], "797200664327279789045585739586663179139763885691838560812393575802708162210", 10); - mpz_set_str(table[4], "2478479560900352699371773841963371661968085221354896581327612976097409624779", 10); - mpz_set_str(table[5], "19405286850126667179254174032091736212470292728059670084127403462846282788337", 10); - mpz_set_str(table[6], "5101779653541371224858788909925955904602739867751223498034053147664336395754", 10); - mpz_set_str(table[7], "10700110326771927853267714729731410941323958176927369499403923181315197852793", 10); - mpz_set_str(table[8], "6275321396272730090068884048459793259314026105989234293426165306003526311238", 10); - mpz_set_str(table[9], "10104549563133875423098894908570292894031875862857669179469491475855970626947", 10); - mpz_set_str(table[10], "18404244673240535460123268667169151035025048307794045575775213931077195145927", 10); - mpz_set_str(table[11], "8942784120151170167258939582572713521929039913753173983443996335737334980793", 10); - mpz_set_str(table[12], "4633483970547986365421327573054512933974141132760370864999650733086727768046", 10); - mpz_set_str(table[13], "9009730381790998742974182210001757950733454364587917243775636889747248972669", 10); - mpz_set_str(table[14], "7427360474163682348250173216816459370976459844143942567461741671948983362324", 10); - mpz_set_str(table[15], "18292799227385845925065461501189831239438442153343390063672864695602681736061", 10); - mpz_set_str(table[16], "14735664295925425221836761558674417704288144909360086121117360031860648586455", 10); - mpz_set_str(table[17], "18583606781988182037907490788308543648320079488581187869129307115022237334457", 10); - mpz_set_str(table[18], "12777678658925273973088387672940003952177723245694982962883356178316669212477", 10); - mpz_set_str(table[19], "5637312524523844945891969570765162593622794984416453233025931986985055827403", 10); - mpz_set_str(table[20], "9909486993958827185874771452543608292613144284873568526308659168095275673839", 10); - mpz_set_str(table[21], "9146983406389853436947576030254304482941905831952725248818877535684037646252", 10); - mpz_set_str(table[22], "19518092185752236311600027606949648172471133805621571199346732302580806609743", 10); - mpz_set_str(table[23], "9957876950026238308820319993187500420108611978781999596543765876983596907717", 10); - mpz_set_str(table[24], "1219286442043354058918010512542170951521811645460214828620748367885333639674", 10); - mpz_set_str(table[25], "19010914730213639558002623321779179581169503231078267225511409880999166854901", 10); - mpz_set_str(table[26], "513617967041559823154990639715417273537517756000051673345628667515198596466", 10); - mpz_set_str(table[27], "14627318016218467117296969564922426676122099051204886899742020066199527336638", 10); - mpz_set_str(table[28], "11403478616988372783401449997899314606994937244150566743376931324910640767209", 10); - mpz_set_str(table[29], "18993527257154634672661225032978403670982575920564062169783950865712754487884", 10); - mpz_set_str(table[30], "3577787637458093032841629227658969520749575787783500762540350520200389396561", 10); - mpz_set_str(table[31], "12026429520295952764028678521473341883884595153451914417062786396630616624903", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=7 -*/ -void EscalarMulWindow_c58c1c588b83f66d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3891238125689641083272054181451614235275442105730548223613703336053411960865", 10); - mpz_set_str(table[3], "1125798325584321554932117473264029905222269191303956186177915922848902449348", 10); - mpz_set_str(table[4], "18811314629583795450754550686819618506290688999032429460272886547355937594481", 10); - mpz_set_str(table[5], "743641611598619956892447583450279820853245112907864405949546266867991326681", 10); - mpz_set_str(table[6], "12674152987647317357436660497983601407934717000635208894246881682115059668783", 10); - mpz_set_str(table[7], "2731948519743128208962958548689526928107880809867169522069976629557266668316", 10); - mpz_set_str(table[8], "16482585878862398274255960964747228154725962554340646286442608159132111601461", 10); - mpz_set_str(table[9], "10772569820317817912940492332785796901432704643787646542813732044816613647988", 10); - mpz_set_str(table[10], "19213557489668634334139961814145734637881760588652395528769218657969561599430", 10); - mpz_set_str(table[11], "881665067430045320157242108536278827467731062742216537739787616061088604889", 10); - mpz_set_str(table[12], "8022420069346311072459275620939960934916745476310726896902030927312544370881", 10); - mpz_set_str(table[13], "1992221994912378784099877897662499880225735965017625625596438124785556522682", 10); - mpz_set_str(table[14], "9579197648093147990435619190051486232957889723473619421160487253349907681737", 10); - mpz_set_str(table[15], "17433951758159373070687378937146442646797615686152061312185795302324714837213", 10); - mpz_set_str(table[16], "7553501597476906893943769622683919576692323300102412267724272556166167390078", 10); - mpz_set_str(table[17], "14213085830959259156631217046380055056105366441190083587202646276745163396882", 10); - mpz_set_str(table[18], "6979529573172107993295430043924649442626597164366924448699038753432119095939", 10); - mpz_set_str(table[19], "19365865479772050250197257972579267029089957043096488813131500904045878621210", 10); - mpz_set_str(table[20], "20925131749182228854581359557993279979655416083047024798331982593689456949197", 10); - mpz_set_str(table[21], "628995645007569592184402778913304900211149232540769166783874341020026208953", 10); - mpz_set_str(table[22], "17604242730180055507332535312674958511227580885260714928678244677719349589005", 10); - mpz_set_str(table[23], "2574984066471136101998448855653371872700738183778305596173970377799619795701", 10); - mpz_set_str(table[24], "20831534721817566186990444281074518162298405326364930135929253022007977768980", 10); - mpz_set_str(table[25], "7689350931531565801873219872319436570642719761656167748947907769850519053938", 10); - mpz_set_str(table[26], "18613508951623748297992761400272086480834541050963364751960748269136052300213", 10); - mpz_set_str(table[27], "8254170720289236606417785739253419008714856210428738112401503829897048265561", 10); - mpz_set_str(table[28], "517738969825127850907339493958915189443963544613620013410488427321685508446", 10); - mpz_set_str(table[29], "10370448260708554237391268061399697566385114319122080384420492198387291165447", 10); - mpz_set_str(table[30], "2076232869116281317249840903513496619429855165491949853324719270169302893646", 10); - mpz_set_str(table[31], "14472244621101046483773531028403346444711843306763568805526784629539214435895", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=8 -*/ -void EscalarMulWindow_c58c0d588b83dcf0(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8231156569464835406105509955023398166583563145140077214061588271089883186724", 10); - mpz_set_str(table[3], "4131559530122773333148950856493472988410947362284455542714720636875440611709", 10); - mpz_set_str(table[4], "4222320340710021220635087605434545057931931608869700256351360614476775187130", 10); - mpz_set_str(table[5], "14891625252913543700728395232972502335864501199802412742215658789488258063649", 10); - mpz_set_str(table[6], "1646455484262666516106813873103835882048340923205939732254987444947610808767", 10); - mpz_set_str(table[7], "9286252187272588230151612370954491032363682998240982552859376165533701208989", 10); - mpz_set_str(table[8], "7557814199980749065003261053473663978667771976955446302398943322123332421978", 10); - mpz_set_str(table[9], "16648723380483431056833262106171882793443194716361935878476180011966676846493", 10); - mpz_set_str(table[10], "16078747115019990102299206526736463185663781880481057561894251210897974738019", 10); - mpz_set_str(table[11], "17134923776801537028531921398273215271831000960700761228465194550135991063443", 10); - mpz_set_str(table[12], "15905365286702861801361159667210946044588171652081130043945932140372389814791", 10); - mpz_set_str(table[13], "19964296123418756982702962637911322624425532309870269116767261118099207919566", 10); - mpz_set_str(table[14], "6915366607654543142221457161670542993108683652514645755759560456632586150493", 10); - mpz_set_str(table[15], "2087846465560868958703916325478946971263933285651790233772293039497495902936", 10); - mpz_set_str(table[16], "6309377082500543956327385030496077809477197422635109868300311692183321725738", 10); - mpz_set_str(table[17], "5052698669200407156616317933289761324507423553046478403149081185734480934122", 10); - mpz_set_str(table[18], "6456122751549808126695922793720951492345761686251563930706806741318056833979", 10); - mpz_set_str(table[19], "6878739043111876705182750491460844497947386020177656507038316770255001250637", 10); - mpz_set_str(table[20], "7917307151338755976207128351426187088443406922987157133711392099880198657856", 10); - mpz_set_str(table[21], "18211873978366518156707561062393288287663250919693117404231604485688475921886", 10); - mpz_set_str(table[22], "1437402662452623373177033207654924876763958897638262849381063725387025038843", 10); - mpz_set_str(table[23], "13407872492018827434872326149982037883391571435859313293715271856141638795735", 10); - mpz_set_str(table[24], "9133674188366622502516686841396573731703876205389833786088490310840680578430", 10); - mpz_set_str(table[25], "10981702961553361033825179020366876816731745122481552196385533205621301133135", 10); - mpz_set_str(table[26], "20532474418676117775130188133095832624629144992872350926421446666621295945680", 10); - mpz_set_str(table[27], "15736874318734568974434385373061997380725219963467856048535897629617875058108", 10); - mpz_set_str(table[28], "15208431825461040341250408448403292980816360063058809663637843517769211407177", 10); - mpz_set_str(table[29], "50119157137458024594283940301095474534515525283008096722355131965567175660", 10); - mpz_set_str(table[30], "17785744879219433292693984240496519711163127823897332842028710747473969558571", 10); - mpz_set_str(table[31], "3057853011904607944579126163912257194811180316351743314958470454159142095921", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=9 -*/ -void EscalarMulWindow_c58c0e588b83dea3(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18617832170581036663417610659828058003481609984032545510203670434577085669785", 10); - mpz_set_str(table[3], "20412179687374163530786375779400207318219951740876146791634938465624957055314", 10); - mpz_set_str(table[4], "12457183533565642941886418128340642104667337040823610826843739438122849506047", 10); - mpz_set_str(table[5], "14850708549463353135142738287059857119694474270768096104468781998162967836263", 10); - mpz_set_str(table[6], "5758258007888214430724448822096874285894421081593125767887837305340558823825", 10); - mpz_set_str(table[7], "12908247414706452795675786267497089124657703798322216672101648812327464029693", 10); - mpz_set_str(table[8], "12628856576746666315953079387391323090098384251046226236462275503116598986451", 10); - mpz_set_str(table[9], "12436666347724549495679084191202020944109875496797887286001099997629377639308", 10); - mpz_set_str(table[10], "13330703629071735966906823755876917026077523563661193538535592320086189247375", 10); - mpz_set_str(table[11], "10055883878689392527641259079743647076204784376930036192101152887126596371664", 10); - mpz_set_str(table[12], "21164901024292654384455784364953343170171781144357866479228083243091567786986", 10); - mpz_set_str(table[13], "15390527040081147513512905468158231588131396033599486976144901799096996111254", 10); - mpz_set_str(table[14], "21016138860700529805263900864154479632703600969377068409301301813357046324250", 10); - mpz_set_str(table[15], "10435576735924395051973219477709356250113178418716359347303295486272229950478", 10); - mpz_set_str(table[16], "18462785813886428819263566993530862099109115137010424306990953442545591636078", 10); - mpz_set_str(table[17], "13288894132151667245986605906028822212827467714603251483730908037245184306685", 10); - mpz_set_str(table[18], "7570200057881871540479013925807761268012361481749735662055975628124204770367", 10); - mpz_set_str(table[19], "3268478569496605830559256289069469748930923010063009787217999466880442437844", 10); - mpz_set_str(table[20], "15280529358426874360284774896617245007977077787991294150845573308326676905676", 10); - mpz_set_str(table[21], "12054492305035346286835680080423869393656706210538153075463784179908512055594", 10); - mpz_set_str(table[22], "5681160944000792954586470007809034909456732483527540608380398161693837695779", 10); - mpz_set_str(table[23], "9135504547777922242451249559369889563405952621865490209792286266789592880104", 10); - mpz_set_str(table[24], "18519121082866482879961846300133818362939830820686482425546076262186819717393", 10); - mpz_set_str(table[25], "2354548588196348528742155546955212874093891220853928746813848261284580574574", 10); - mpz_set_str(table[26], "8678247297418326754073776545803169263543225312571792778715319400119072196922", 10); - mpz_set_str(table[27], "4441680220072976954875335846537049450334223858875460093405814007357649312568", 10); - mpz_set_str(table[28], "912266678453399837056794519055563566831096961430259403483239037834335836676", 10); - mpz_set_str(table[29], "3397107365521793004590603449858579536151451686084973041055963447874748614384", 10); - mpz_set_str(table[30], "5046975788673094176954511868550759539640818278140040944232465268523113411229", 10); - mpz_set_str(table[31], "19615064900452383446866677839538530779671164591433827586846654479882935673365", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=10 -*/ -void EscalarMulWindow_30f60375112a16b1(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "7218657565857634059283342360952742183382712091400426268573442944107381443388", 10); - mpz_set_str(table[3], "17160582899498480071455831631422020028835133084533852397761379917276527593721", 10); - mpz_set_str(table[4], "10186244570061438572032553670437086437287778685519652947122178551823437117713", 10); - mpz_set_str(table[5], "13991166554227572878486140294474365469273307215968693498614051452443763358554", 10); - mpz_set_str(table[6], "5350247150685119384570754450340813183671336820647779863234393494486933893881", 10); - mpz_set_str(table[7], "15733596748455350315107945099742433290371037950694973328748835067823199767898", 10); - mpz_set_str(table[8], "8337043997288171710709237803954782951159399083385000361227705717164964485925", 10); - mpz_set_str(table[9], "16870774346853266168261613283603693357394011048308000490047350805761637643282", 10); - mpz_set_str(table[10], "7137567347873534899811081492389018173636809450246781575378682264607113176297", 10); - mpz_set_str(table[11], "2371417936628767926281866765754871389531406874608119179754496783903212169987", 10); - mpz_set_str(table[12], "15197773318265769940848787973289322540341609537038752342985384412674513817720", 10); - mpz_set_str(table[13], "17340538157558214432914624695631354955915974528460536507133956969002887728959", 10); - mpz_set_str(table[14], "10723613986484070217901591619417121152424090255436979566500942845532315427797", 10); - mpz_set_str(table[15], "3531934693678906083709954988801146753352878910237452898557849940021116433787", 10); - mpz_set_str(table[16], "1058387089158874495748679519782568945307296763857205104356187848251661479935", 10); - mpz_set_str(table[17], "10014229397537760594589890198451174632935240683470271014910895676463819881873", 10); - mpz_set_str(table[18], "7459717927874853609354812503791662414188719623157168180739348789619385438524", 10); - mpz_set_str(table[19], "21683041979439224411228989551115702832981449905206766043676732484497316157439", 10); - mpz_set_str(table[20], "14655609360270071012253902556539172560649588753054340131544939519506919896565", 10); - mpz_set_str(table[21], "17222448550262656329122931157454530350492495528298467166646184661229938452904", 10); - mpz_set_str(table[22], "5041330788509026145429442923080624984391916874029792901702390131473787867001", 10); - mpz_set_str(table[23], "2955018266698320912011470339888350168396459178178175328048428666813785486685", 10); - mpz_set_str(table[24], "19799683165647698954513082267828924865825875119027741571265592171834187183676", 10); - mpz_set_str(table[25], "21023373768363267061196142565244260500502466179273367870776987753388628420870", 10); - mpz_set_str(table[26], "8350728456894184592598529379116822425073724484756766289354946413301154463450", 10); - mpz_set_str(table[27], "20578523138976807775606576448739232605435191461454224553948643677354723328515", 10); - mpz_set_str(table[28], "3151098990900512741475971703578308604851523455076559790455859913596103381918", 10); - mpz_set_str(table[29], "11761276687160601334447629972918073325865398406897957184139044559005155413579", 10); - mpz_set_str(table[30], "18489117266543323541481847481109893515465557367865781971836580256104281213574", 10); - mpz_set_str(table[31], "19510496718399056064005926379365170446484654649297094653473858176478266416059", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=11 -*/ -void EscalarMulWindow_30f60275112a14fe(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "17627115594938429195179382336613067065701186383491157399068114303409652515793", 10); - mpz_set_str(table[3], "14847389619923894435264147753205007668091445330954217588844172431898288723621", 10); - mpz_set_str(table[4], "18357105556253046877119581308403465507755840292169012626540369212280146629667", 10); - mpz_set_str(table[5], "12873298841381326213408571031124043715255674465445800848009931156463734079321", 10); - mpz_set_str(table[6], "14786732146438618816915732831605352525406029376399822999821152429016038065677", 10); - mpz_set_str(table[7], "7079773868070731212606415423727377091003554975557211601330302646724734132376", 10); - mpz_set_str(table[8], "4888886172637015967702976141658643106565919889532813513702009241903659965207", 10); - mpz_set_str(table[9], "17378967528347060604558090883474747331154858402758301159996537758994815086458", 10); - mpz_set_str(table[10], "20380928417561340002494774785395409598013624894673626753616368263830338062811", 10); - mpz_set_str(table[11], "4736868222180854093784865266863657062019824867839134189830422539807722765945", 10); - mpz_set_str(table[12], "6580820316209959065322387305670736372550792870362511042627223737961611968914", 10); - mpz_set_str(table[13], "8257261394353062674744288141060131687298029842108282740770401366912586735943", 10); - mpz_set_str(table[14], "6900561257461657255157040380038967998478934897578378238634071444046012712054", 10); - mpz_set_str(table[15], "3680555849087316553388283566926794773690203220547228818016414082246349408632", 10); - mpz_set_str(table[16], "6416908667669098636758352477123500927705738914217575432735408147513377293392", 10); - mpz_set_str(table[17], "9416392961232970856511939022395117518514111997439749748360281904639088738986", 10); - mpz_set_str(table[18], "5410434850201564027053068952850382811960933426726367582054893626504615034377", 10); - mpz_set_str(table[19], "4161427134091166782127696715129650185185107565289262295394043751697945235880", 10); - mpz_set_str(table[20], "2334308851862124677679577811630033742864849289715909635581625548350969912802", 10); - mpz_set_str(table[21], "6746428787808162792042636218548957144920280607863310324940920677685166022224", 10); - mpz_set_str(table[22], "16260569633406738612759941010437852679549772937941191704089709198039998163438", 10); - mpz_set_str(table[23], "13354874821080404846358196384661515222642992404944068630010192146656138224873", 10); - mpz_set_str(table[24], "14462206154914760578439664376446416846437489597337142196010413746845742204026", 10); - mpz_set_str(table[25], "13954242650774425005389608614406636092810995935497563618610153627975097445182", 10); - mpz_set_str(table[26], "5550442138284530622830485810514012547942937088899737084528778977051454139340", 10); - mpz_set_str(table[27], "6145077197463223854394312952539513415328344246339224476191868207360214610551", 10); - mpz_set_str(table[28], "10389020547018608604495055393317288848540588962096958890414507604514920078931", 10); - mpz_set_str(table[29], "8694427405080668255454008609135263541121080294559982646928745463043868784680", 10); - mpz_set_str(table[30], "12985306307378847369862306598067349386942485263673681772149760278233795329419", 10); - mpz_set_str(table[31], "21073403027239980286155808830364120419256144147695551924288187918777638098919", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=12 -*/ -void EscalarMulWindow_30f60175112a134b(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "21406266100294308258976730729951177599093980942246378650460791540693708941131", 10); - mpz_set_str(table[3], "7877274652800816269238646347263909567184367388655766436924422252980333045618", 10); - mpz_set_str(table[4], "11615481393401268470059864848005403970571694721225362784042488749778235712658", 10); - mpz_set_str(table[5], "3892451240021972787440780523987872955074895528179412683730651568924376590154", 10); - mpz_set_str(table[6], "10670351770367089799432708606981514933281302266275209146614306323542227951265", 10); - mpz_set_str(table[7], "16151361929274094631406321569309492990971995061452371432314318111466035411800", 10); - mpz_set_str(table[8], "971553312833100069635523245967082040139883981750223719728956974999153461750", 10); - mpz_set_str(table[9], "17819503667076337826313198244543173919898460743554060676860603589596833585071", 10); - mpz_set_str(table[10], "3334076365622847096896176766506555070707332964911270163700099536790480657002", 10); - mpz_set_str(table[11], "10240153919253132783611893884618698140634837377586426667059076299895274629275", 10); - mpz_set_str(table[12], "1874472046851062748441454248258480987888540756207448372392045595157997967031", 10); - mpz_set_str(table[13], "12623749250356633203162621704515318615499408888863033335863097393105309137346", 10); - mpz_set_str(table[14], "10923369031485894103387217225764276776041423771149617779018011964861807963257", 10); - mpz_set_str(table[15], "12989286730506679179058591222023867789871912881295524380082720429125121399001", 10); - mpz_set_str(table[16], "2259701475232619764070487764536238278026656442243942280453580615306096626784", 10); - mpz_set_str(table[17], "2270915073297799730877739409596975617019163395632138360587195406154729757720", 10); - mpz_set_str(table[18], "5931246686568067150598203862728949815841762350754619266156445272731820862049", 10); - mpz_set_str(table[19], "2584372454573711174225430711030577055896155427813538907344123903582401754710", 10); - mpz_set_str(table[20], "4706443765820575463919610467491484671708524019950265427147260059392528056060", 10); - mpz_set_str(table[21], "8105804904073869871246605349098539176728707679515780264710351822101291262612", 10); - mpz_set_str(table[22], "9504988942174531577732768380019369316966401556152246131994053294359357481258", 10); - mpz_set_str(table[23], "13741856178344801669926506029421641367756342207162345308522239421227959751975", 10); - mpz_set_str(table[24], "15635909652286798856608138413605658644601947115158405338797816160329726917767", 10); - mpz_set_str(table[25], "20565994843560377977021026588522712492302491769380753714341670858782271055601", 10); - mpz_set_str(table[26], "2485555744302745559984328787511065995152022696883174359853534198235130815728", 10); - mpz_set_str(table[27], "3547559827994774535883841123214577229601100974473972921419815981202047984913", 10); - mpz_set_str(table[28], "4336572663118905220511580556495629072580506400568335964359662194164978127635", 10); - mpz_set_str(table[29], "16850767654677508795765516474407725763573565445621584343776097018936049322937", 10); - mpz_set_str(table[30], "8391364532029527605494647034197041450757968270724395432463754556682038202387", 10); - mpz_set_str(table[31], "7602849530096454185676463820713744197395764762299481069276207743451846048145", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=13 -*/ -void EscalarMulWindow_30f60075112a1198(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "20368805382066390855370580938434491491074918181697176632894338461928121607214", 10); - mpz_set_str(table[3], "9305888420984109922714456122057872910251963998922280053693043329647838846628", 10); - mpz_set_str(table[4], "7404068292968618157198434582880753580140834990198991497279561603115321336230", 10); - mpz_set_str(table[5], "21179286622896829509065809684414123082342211115457330515118811077049806883317", 10); - mpz_set_str(table[6], "19998861929298978474819935817716142979949932118713295084224126562309488883020", 10); - mpz_set_str(table[7], "20145584544074078088243347893318728157525463604023122548603248999320476268242", 10); - mpz_set_str(table[8], "3484951936290974462427616792127881882565194255692129296077913077178924835179", 10); - mpz_set_str(table[9], "14653140588116458668599038411359480802821205162175182644547718897819293440567", 10); - mpz_set_str(table[10], "14063943860937746762482104267737218507421082985551240607087617177679617985028", 10); - mpz_set_str(table[11], "21205834481354540639253189314895513963900378283101937204274408112637386069830", 10); - mpz_set_str(table[12], "16376992682315569000437675111256109668877953418381536318545295567221909896846", 10); - mpz_set_str(table[13], "14408122676965443606983288518886959565359086997763539679737749711161703488746", 10); - mpz_set_str(table[14], "19943868845064746733859408068232514306868058771733451929229707867179710797664", 10); - mpz_set_str(table[15], "12352991272806402882113573479537861355899211615650436180038269954862484913117", 10); - mpz_set_str(table[16], "20768002234062516847624694033022815281279994036654504568904215919314125574550", 10); - mpz_set_str(table[17], "17870950160708140918218774096995236584396435709771766987254491539350572805405", 10); - mpz_set_str(table[18], "8809551753159688303358363925218577307429466842675987235222674188593606950133", 10); - mpz_set_str(table[19], "6829367519942241425630805330052799262918261256661070566333445186056095977652", 10); - mpz_set_str(table[20], "9711463575682660875962645157117221168561645375886979821279087890806918052546", 10); - mpz_set_str(table[21], "18935589070402758666848018125933182586601618722901853454083159202877487595528", 10); - mpz_set_str(table[22], "19106240018819167718911888000695134543953338349481683123854636160617692327447", 10); - mpz_set_str(table[23], "14899351520537753896868593114387969511034853308773378152551069228289673108694", 10); - mpz_set_str(table[24], "11379141446085287948551218273681361041890654902705670686517028094240464246736", 10); - mpz_set_str(table[25], "14406337613731341296101221325959392808029227427183610855249750727190627484966", 10); - mpz_set_str(table[26], "13423153512467907698522962681039651632973672835328890143462878470709259059336", 10); - mpz_set_str(table[27], "10019210713131860674029272254365440275349869413646602119861610356584814746485", 10); - mpz_set_str(table[28], "3639244108897444530904619911086283136142931235495285385925604153819779390376", 10); - mpz_set_str(table[29], "14989113416303752241113782414779192489405183329363232144870350846648115482798", 10); - mpz_set_str(table[30], "20881089298624368198833493837440958436619903492184821767522174497167899692619", 10); - mpz_set_str(table[31], "10034734467523739817809464883158758984329476630676417052223762129741901073475", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=14 -*/ -void EscalarMulWindow_30f60775112a1d7d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3844056532212427920703046301582562022630032175143128283603650807154122941613", 10); - mpz_set_str(table[3], "21877205794289052566482628161337444889236310919796139915119554980819389260782", 10); - mpz_set_str(table[4], "17893688271546016078170348994605987377180325229622395472134708071837598302714", 10); - mpz_set_str(table[5], "14904098382911509714605365071605702342786377579792397559134806416858986406785", 10); - mpz_set_str(table[6], "16177490040435399189021404736139388811986219849619929764534466945275821341071", 10); - mpz_set_str(table[7], "4333394866391900781060183319088326500257993299285421761813104597681192754163", 10); - mpz_set_str(table[8], "14657578415571762332382143101312246002767066748229371278719024779186823916520", 10); - mpz_set_str(table[9], "15171875479173719553269418569221875941918818898442123661820384547581727016825", 10); - mpz_set_str(table[10], "19647950007479939863866131939346679992421562775966555217065984179171693890563", 10); - mpz_set_str(table[11], "11782878127232311537752731760261245852279923583794929813087382878149963513014", 10); - mpz_set_str(table[12], "3441033532790589018678662363403135472007949677932474904070531683544627419070", 10); - mpz_set_str(table[13], "13469846744068669554861108717348350395503330478650499144759927007805647748184", 10); - mpz_set_str(table[14], "14626715081540434895546518067319699285670464030490817857044720485732014422920", 10); - mpz_set_str(table[15], "1950666084301315711267821800770230166853323409578564806140780099592266993494", 10); - mpz_set_str(table[16], "11427928641312783957877600621745010825794692249627772592556251426183012414426", 10); - mpz_set_str(table[17], "8356936709467574659019980828919956191045781930222977341869835551813429418243", 10); - mpz_set_str(table[18], "19158337466133685220613707888126478971655900890055588811830854024712172055121", 10); - mpz_set_str(table[19], "5221487166936011794520960314357185967707976634514069063130380892439798575065", 10); - mpz_set_str(table[20], "10457592673590857705289217067399913757235283918017664883176127251246569904774", 10); - mpz_set_str(table[21], "5791410595677392396055922683867905703270175166847811885101398598970173353869", 10); - mpz_set_str(table[22], "16073856972154322218280302345189787414665737456509863650436918481213265854959", 10); - mpz_set_str(table[23], "18314598050973076820060219907610831433069435613362200662126390095926463026235", 10); - mpz_set_str(table[24], "4470672832764532978350328117979898319815131152684006440041545087442103961247", 10); - mpz_set_str(table[25], "146731309361288239543551730428739503162440684257180669767354567768748979090", 10); - mpz_set_str(table[26], "7388823483393338577320754770026785193707290770263907326950021345378471344397", 10); - mpz_set_str(table[27], "18131047975849523420475380521570938050675698736543451318092285583484853073390", 10); - mpz_set_str(table[28], "11193720551724742993487749101268440215654074888739962103006194853354385469098", 10); - mpz_set_str(table[29], "9921307855924728259771710233607299467453926223251637399791119676810341252498", 10); - mpz_set_str(table[30], "14295056121400511697943925860176045689609413144551107265274420628019781029830", 10); - mpz_set_str(table[31], "8304185134807940706187025335577576801973178728643958047877619958886386470686", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=15 -*/ -void EscalarMulWindow_30f60675112a1bca(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "721217074257914107100140684807639099957016760525471162101340773561442251383", 10); - mpz_set_str(table[3], "17242782517449232116567743999802492458301077407392882218473522380645787536271", 10); - mpz_set_str(table[4], "15981258764604595761596000879259240994818506247912237843793448628957842854447", 10); - mpz_set_str(table[5], "18976270096277130835496670882673776922828731305183099774884630211068536294410", 10); - mpz_set_str(table[6], "18376098225559052748920029923891788577590450011386508252238843197622173604178", 10); - mpz_set_str(table[7], "10389285600602703837735373865938509418604546320488006778467587544917522061880", 10); - mpz_set_str(table[8], "20711689519707141129278513110758203179758074069359284578563938472702760357298", 10); - mpz_set_str(table[9], "12197992835568918700329203999156441993065165086377884619886464175032345919228", 10); - mpz_set_str(table[10], "8942864681739369251054493430530570068103067906113373925393672127102143437166", 10); - mpz_set_str(table[11], "10760382932682789106949844893884354776151044858789957326996053386843172000987", 10); - mpz_set_str(table[12], "17995564523066155932217124407782091034505450637692854008036354454394438356249", 10); - mpz_set_str(table[13], "5988184361705254525688027451401460549881776305948368789621019110486915897697", 10); - mpz_set_str(table[14], "19735987513674328628990316582881650010457376110592964132312775640093239593447", 10); - mpz_set_str(table[15], "9629057368942843598698613890045021799675111127101280258524618062557771318167", 10); - mpz_set_str(table[16], "2774967275349449434215202696256804898438555873172884079621359337704721792645", 10); - mpz_set_str(table[17], "9420349657879853095560705082415018643155237910865586486333956937331044558034", 10); - mpz_set_str(table[18], "11999814134263113577061687098855734984543928505436857750509731769547692774730", 10); - mpz_set_str(table[19], "6326851556673180570166466998187161967127115145770552096862788821295236837767", 10); - mpz_set_str(table[20], "39866131788188652661102470510668177320069615445777173435858777329018560298", 10); - mpz_set_str(table[21], "21490271566532096033053529001883327318132907284194270822104550699223148621794", 10); - mpz_set_str(table[22], "7110158795069510612383263547968474377235061769261595253395098187497270670397", 10); - mpz_set_str(table[23], "10358987578026446120623949612328406804253508031482211904406032140382338222927", 10); - mpz_set_str(table[24], "13402471941016528566984852588356140243433801611592215491912023310499638611953", 10); - mpz_set_str(table[25], "18038619467197834557979985155714398191169295737498844489561545563029654754975", 10); - mpz_set_str(table[26], "20927151617394892731664400354901477632314504270018287459747822152297589887801", 10); - mpz_set_str(table[27], "14711458301261027803832796771086150571290410267865524824308423725949065157332", 10); - mpz_set_str(table[28], "5463401788209126425441887183250029747920862060359394502340856758732695552418", 10); - mpz_set_str(table[29], "20871681674724634625298886559017929548969169897579492199281754086681815302782", 10); - mpz_set_str(table[30], "9912205445382706322440231932430192319167874859669573980219539898038983479082", 10); - mpz_set_str(table[31], "17259553928274030489221840568057979270119422844979191173714242336761560841022", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=16 -*/ -void EscalarMulWindow_30f60575112a1a17(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1913500900861768332911157239087603286952255744021671889642956877083114069429", 10); - mpz_set_str(table[3], "19876401017254350503232281977742874562023796967708073124837443712547963772704", 10); - mpz_set_str(table[4], "5851717731928341482912868654142766273028000649203394589049020149573247531152", 10); - mpz_set_str(table[5], "5978322172286146410538060043645839288151380987212527862456647251057896397799", 10); - mpz_set_str(table[6], "20535221395659425720049437624088696986770582561042719099389922087438972381963", 10); - mpz_set_str(table[7], "7077928786465763349233954007627389823549476481845762441056620526561105021571", 10); - mpz_set_str(table[8], "7082785819823920956213867288288784148406676445208335197543237580869900491506", 10); - mpz_set_str(table[9], "13676032632628666471935786134843198563034854324932704593028514517413934832148", 10); - mpz_set_str(table[10], "12786874211172034458850213584578049682232430195839381689748947106663657168986", 10); - mpz_set_str(table[11], "14797410417392742804482079712959254103798439060679634056181197954370609303650", 10); - mpz_set_str(table[12], "15516745738683223230047559437236533911290995348403619716825645261823423690001", 10); - mpz_set_str(table[13], "12189570494815440545175679059338810048960492098209481509602997925669455116177", 10); - mpz_set_str(table[14], "18977401993857562695027053365183794981652229620847991298442203175482901511502", 10); - mpz_set_str(table[15], "12192628695990270720213406216558068662505175586909744583648261436794304030205", 10); - mpz_set_str(table[16], "7491211328817416747712040341211639259996058777757758486768214250111399044214", 10); - mpz_set_str(table[17], "6963264230852014268124266154612502611678628837660436814455072442131615286328", 10); - mpz_set_str(table[18], "12047429844855490666711542141778383755479823080321447926187200749142240778270", 10); - mpz_set_str(table[19], "11001550880238862591536564057480606890913372500934662224671246461292490691820", 10); - mpz_set_str(table[20], "10440269225071198138073625010154713507154569658310609152289577170365368076669", 10); - mpz_set_str(table[21], "12979052836610137269461072854168552717849346983293170636833939820258639253952", 10); - mpz_set_str(table[22], "19239890654112947929800208266453640067356255922371040055070602653444191423951", 10); - mpz_set_str(table[23], "16393054080870528663340858502712547117926214660769236540923857669702028478616", 10); - mpz_set_str(table[24], "21811132758228890861192371115055157235917947229466338080954660235397090047491", 10); - mpz_set_str(table[25], "13168651022883789247160925844463134539203175909511193248668918559400245790820", 10); - mpz_set_str(table[26], "4954571621472247840577376397897892986113493849731017493062980573779240196394", 10); - mpz_set_str(table[27], "1749798675761303006561955754799611115840323550955411937892373131234990455821", 10); - mpz_set_str(table[28], "15194236512196257325247662406152009303089835917586414870437908927614371570221", 10); - mpz_set_str(table[29], "13948949229108262726032415281910066413131216429234419552300756889262069975530", 10); - mpz_set_str(table[30], "17275051633009111686202497394646445602286460612817779437672408933675758336822", 10); - mpz_set_str(table[31], "12858670515109185390260362944194507980012697126666264977080463649072859717350", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=17 -*/ -void EscalarMulWindow_30f60475112a1864(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "19594995906983301063748985241725369583450956835895004338914052583638635627164", 10); - mpz_set_str(table[3], "1215926295609961973178802978113691920943873917262364276571043975844415457430", 10); - mpz_set_str(table[4], "13680120615873646905650649888531871229798680314077975001067764279138301255170", 10); - mpz_set_str(table[5], "11679802772801722271436715434001794526376017110703065066984418622148645644956", 10); - mpz_set_str(table[6], "10979341915399951902015740939032822672146819278824531018643131652140288301014", 10); - mpz_set_str(table[7], "1128938794460156739510087831546869613949458523857798147843037676969390757351", 10); - mpz_set_str(table[8], "11417207654213566428955165125420223686697634423476353113856821345932148839235", 10); - mpz_set_str(table[9], "16278369531341485179310531056709836675509247861314440168008253344879884622292", 10); - mpz_set_str(table[10], "3842058238648774272238521575505241866464319169346817482244543193037967028760", 10); - mpz_set_str(table[11], "3297152180148393601281244619939566700761905977752254247032865834216164249633", 10); - mpz_set_str(table[12], "6622319412290027253342527106910935087791237950656104822721750678439517675406", 10); - mpz_set_str(table[13], "15563695601006071611759800106851924305036436829892750897739422951169473619064", 10); - mpz_set_str(table[14], "13181292919259972556639906356936058589088713465328052485058387976053610631205", 10); - mpz_set_str(table[15], "14174612766848311804555439182245136066229960363804901703871692885589716060136", 10); - mpz_set_str(table[16], "4645281581656015420496872130733244385398168466053036517895585842477585275046", 10); - mpz_set_str(table[17], "13388788866872323911338081882407812293216974521297840117861305370240861450202", 10); - mpz_set_str(table[18], "14470418013964966588478796047499059679730950423852084824042591416726242049103", 10); - mpz_set_str(table[19], "8938922412156439011269335829350772999604734675059561786733499345430884870141", 10); - mpz_set_str(table[20], "16583034467503919351009794659923551003482985068407670237504367831689061026399", 10); - mpz_set_str(table[21], "17934564505102549601406759185519121191350998174279713908964549014457346634418", 10); - mpz_set_str(table[22], "9757564301640443893855110905957625113894277082326684304241516512016467769317", 10); - mpz_set_str(table[23], "1093003292740088586535614873398893844131165201691264454713623619356501401576", 10); - mpz_set_str(table[24], "8930760743322516729352183604104888944268770368876484262273427713783535096417", 10); - mpz_set_str(table[25], "20500788111863716898655373359941603247264827808933928063053854053889433887379", 10); - mpz_set_str(table[26], "10325948559242230564505513451041474024150507149775113688462798028112759671639", 10); - mpz_set_str(table[27], "9949134148849891248980728887476154503418473274459477620459454445566430549900", 10); - mpz_set_str(table[28], "20850470589696115423944426649995762350480503676215236066076175833293126852226", 10); - mpz_set_str(table[29], "9293707378443556729889633647170741445487948735283158363104714873453960261067", 10); - mpz_set_str(table[30], "11506234994915917043079338431936472606095366999874655172862180702208431556136", 10); - mpz_set_str(table[31], "14452161014730982463939118536942796797787085687047964584245086072370846008969", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=18 -*/ -void EscalarMulWindow_30f5fb75112a0919(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6312691792654410014356584427505264977044214785648879812260067443628814317724", 10); - mpz_set_str(table[3], "14257925555696485109423282223628644381907477878338453236945302381542539693152", 10); - mpz_set_str(table[4], "9079855899544673861069508683438599865287170526888623417575853179100155587421", 10); - mpz_set_str(table[5], "11747099952471887487349670583465838854694154132732966946339929820424060581377", 10); - mpz_set_str(table[6], "9926724767750502267020902031535358250941316922597501328671254928568059868630", 10); - mpz_set_str(table[7], "16821600372089473903171410123072432537192155752776540175307336066638097521527", 10); - mpz_set_str(table[8], "20635293817545174956276452235916453375967085766837594079701573806032274758259", 10); - mpz_set_str(table[9], "4912512049743211176965763421180046617710732578108083267821221661055177237077", 10); - mpz_set_str(table[10], "411881382991356540105861938156871419405153744365905334631688028442348430985", 10); - mpz_set_str(table[11], "16685015024012304642411668463502135734825976961116232386538435049054789575302", 10); - mpz_set_str(table[12], "1951368980472136932441687347664445891023675565835050146789421909805631371664", 10); - mpz_set_str(table[13], "11287114984404015098124177901222091172812420835823247131199502060618186952166", 10); - mpz_set_str(table[14], "7379533608810983364793672738582799910029031891543571041761107517310222208247", 10); - mpz_set_str(table[15], "13399612413165157758299296827409143706312891775899559638036270942734074449125", 10); - mpz_set_str(table[16], "18097381858740678293457614181919174232176469414874575520697469909514241939024", 10); - mpz_set_str(table[17], "4107614292008565637389179637150907090647271061483538027207486281498506071181", 10); - mpz_set_str(table[18], "4221029787515199874482585115454809564764913719164280506998326392946531091406", 10); - mpz_set_str(table[19], "14511565058221721785867308497857644761994783433805802129049163115945538912592", 10); - mpz_set_str(table[20], "19064616081847131050486902726890211463823604737876917751141851582206688823476", 10); - mpz_set_str(table[21], "19305785521020881025809325975238987523250715355720440618753131635790623862637", 10); - mpz_set_str(table[22], "376690769678970312884173363533987470085698535644652464378932502831219098675", 10); - mpz_set_str(table[23], "16151158210729365941379101185138578882120207316093416865384627786060577519384", 10); - mpz_set_str(table[24], "9655130494952168107489622636324264807869329354706619831758200785766793900079", 10); - mpz_set_str(table[25], "7370791930939716916060570360405414357961437265044872294872661183828871809853", 10); - mpz_set_str(table[26], "3016083093942985489664330590280047850941630624344213776449594114695748088177", 10); - mpz_set_str(table[27], "7765665938575600052803917765104035735372754858663990184054196680089365942590", 10); - mpz_set_str(table[28], "15470796451743826076048680783482800062356759951872837242126968785576660484350", 10); - mpz_set_str(table[29], "19958584304795888531136879277811447884659833674189844715246657205418972745951", 10); - mpz_set_str(table[30], "16847736027160059327449442740261749558110983384879238269268369148426541523474", 10); - mpz_set_str(table[31], "1251494417790554898599828925225568659390027683346363434077305463639243757815", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=19 -*/ -void EscalarMulWindow_30f5fa75112a0766(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16024328474586947999611988875348946173769472036103591071171010693036953749882", 10); - mpz_set_str(table[3], "14804393272372404339223772478958155444344906573584470867273131626842614791709", 10); - mpz_set_str(table[4], "12857876610230464978090922315137262766681813308210186686850822801120713042222", 10); - mpz_set_str(table[5], "3247332889965250299312120890147769864465763934114581644953310832723221077803", 10); - mpz_set_str(table[6], "16898705825298281918704104770508760031527789951463785171503746175337535048133", 10); - mpz_set_str(table[7], "21815927779766092718524650336576226579386983974765968777957031184689301958562", 10); - mpz_set_str(table[8], "10701407951495212600430556383163409810000064362417862698723957609796722336721", 10); - mpz_set_str(table[9], "7176521326774182157375178200505594559054306816407906142496519114416733417342", 10); - mpz_set_str(table[10], "333269565591390435197441758316480870496579282972568545691789378188159824667", 10); - mpz_set_str(table[11], "5199589019041858328871803300018773262561078507262706594207140034975230303145", 10); - mpz_set_str(table[12], "10516815997468347512537054395380614545597570585858291154960022194234124710351", 10); - mpz_set_str(table[13], "2048124309430691116008666427834801945157825307803403795457429483351015155636", 10); - mpz_set_str(table[14], "18690417672678854397740824950928189266055128193633461621611287620583691760321", 10); - mpz_set_str(table[15], "2446811724965007992072151991861273401256883982688281531647525698649870761078", 10); - mpz_set_str(table[16], "14821863823323946577374892806028294227521384354570837403340745793076906345558", 10); - mpz_set_str(table[17], "619240785714923214300645397387303846390803870555274780165010159255081256316", 10); - mpz_set_str(table[18], "11485729906478279574997551638314736978988040244366203958886090316590751316382", 10); - mpz_set_str(table[19], "16600379123070912488186112703435760500453896619638580888431101168947106705492", 10); - mpz_set_str(table[20], "18248163225478284815146399711977062170631805024513029272097954384197990820575", 10); - mpz_set_str(table[21], "10659581067441546915398469751082277830577415802047918311604800899713014482734", 10); - mpz_set_str(table[22], "14315930221655012114211898105875258610186864391549293271105393462053664769062", 10); - mpz_set_str(table[23], "5679132383932568258755662162149376656569182143003535773492313140031994313805", 10); - mpz_set_str(table[24], "11543502507334990425086613340677553055976693329024911597346637517571390158486", 10); - mpz_set_str(table[25], "14798308302648391302770513124948365007394138440918360659792027734739574565869", 10); - mpz_set_str(table[26], "1487766650306908933818473941850707071632336735476231622012126976637739047447", 10); - mpz_set_str(table[27], "11298947007704343658754760564239480618021487917411498140725111966031220893952", 10); - mpz_set_str(table[28], "9164260540245701665838272155536219856760847523580314432921627904333083890874", 10); - mpz_set_str(table[29], "9092714875731577526320815891085122357436278777755936510851467613253498176317", 10); - mpz_set_str(table[30], "8273543818606827310097635470019493027806998802204368651946249099141570851357", 10); - mpz_set_str(table[31], "2163918904986580293654793921161885771685405590890203258794630196802340879703", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=20 -*/ -void EscalarMulWindow_30f98975112d303a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11871910977766011920816446486193798660236707342995853240375904231743537384545", 10); - mpz_set_str(table[3], "20610729299430050079792204347236370479584886256516728887654325759969428749992", 10); - mpz_set_str(table[4], "12743408662495222566043613262112858144256560935017760327010736246602467483150", 10); - mpz_set_str(table[5], "15109594273298918588496489411453054924243392341715251778972968998817996670976", 10); - mpz_set_str(table[6], "8364253619238265287093721128966366839136151230988171559073649474924325892283", 10); - mpz_set_str(table[7], "20482254094781082458674634090947182311369429166318189152327777124129197709799", 10); - mpz_set_str(table[8], "10426449090815715511224288225972409509029474523185138171661344283795593528493", 10); - mpz_set_str(table[9], "7688172378779668062431456499435160122201857961488517507867699727181649285542", 10); - mpz_set_str(table[10], "3535022249268712716533933991521277190534770993956537738111480727521692421369", 10); - mpz_set_str(table[11], "1387504752830526797534019238803226253679518461854437882827172927398412402241", 10); - mpz_set_str(table[12], "1770886290973271430448702507085389379708580440175685725865682000286144054921", 10); - mpz_set_str(table[13], "13938484618349633976307001401715686809066297255822233088273265831677670592590", 10); - mpz_set_str(table[14], "21568045811883255107493207009765098238025569043887973536517665254603242410463", 10); - mpz_set_str(table[15], "12592503904667875325696849610942428306884878626915198015291521427077539935050", 10); - mpz_set_str(table[16], "20085879247533524852915230842067917206291281085409167265008801473472623288259", 10); - mpz_set_str(table[17], "17082834473878800143327371165752294000524688389488657738457095895646273532410", 10); - mpz_set_str(table[18], "162805608641097611943173908492645526726393233820160727579296793201335141443", 10); - mpz_set_str(table[19], "17930557892852251117344484797102053647425658327367869735802499830644751386948", 10); - mpz_set_str(table[20], "8895040019136530246546768084556005378225652704224561726912998112993001940621", 10); - mpz_set_str(table[21], "304810220126773818358033943987674731074621073326382052314251057666437827534", 10); - mpz_set_str(table[22], "13881362926924868911557664853185935136616926367643420556905353290969974903261", 10); - mpz_set_str(table[23], "5844943467023006897102673813891533696702422550619010185061788845546876544157", 10); - mpz_set_str(table[24], "7284848380542271764984948800937414715881481529004299411394698828286305780999", 10); - mpz_set_str(table[25], "14171211339959572027783817872063839937865396706527929051135006988414673198455", 10); - mpz_set_str(table[26], "14624103983407750565393878866397037565434063047288702251393226821417460421138", 10); - mpz_set_str(table[27], "12612129695092601447110574817896214165270559690588762966998288185584433697549", 10); - mpz_set_str(table[28], "15678697525169812515100103406782477338793583121700799975646759374433614726590", 10); - mpz_set_str(table[29], "7137975458748802650528734903352815685012077027463958390027464999721739251010", 10); - mpz_set_str(table[30], "9510266114532705029865351760321295213764735907899118936713480742401105769355", 10); - mpz_set_str(table[31], "20978530220498792094619180962465611954416505118239102547242363138293931909862", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=21 -*/ -void EscalarMulWindow_30f98a75112d31ed(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1657406379595848394476612640280471112641524820143272573499212019562410269228", 10); - mpz_set_str(table[3], "7269701504674841275797546967798812590777834664593211185470037358128039066150", 10); - mpz_set_str(table[4], "2522095723368487799543210821017645805640839982823331467357211528983126163635", 10); - mpz_set_str(table[5], "283540280262695966072349740890322027947881039799814425276881426986608381276", 10); - mpz_set_str(table[6], "2206314138608150882414675237398151544938853291550184067655468168974724266837", 10); - mpz_set_str(table[7], "20984927715688518935268761282802045165863979162597459301076271411420234828448", 10); - mpz_set_str(table[8], "19343098100954012908816225672139684513498357300288819758321925224043062620888", 10); - mpz_set_str(table[9], "5575925556738783202828978240293092221632041119313664173212505953117674853298", 10); - mpz_set_str(table[10], "17858528780853536480056389171368321208808476539575439869382653842929896909290", 10); - mpz_set_str(table[11], "21661360577003584128057528691802403264462234581125644757957689351632092412741", 10); - mpz_set_str(table[12], "16320678953064781254200232266144625188049051402359399385707486576820311075894", 10); - mpz_set_str(table[13], "19324301573467876621692346465139232045375933590077918835384591065976014653506", 10); - mpz_set_str(table[14], "5987610433294785509028905998282110917708617640779221522032358626774257498886", 10); - mpz_set_str(table[15], "13399879126657318041120438257417680411882232100717116037434801386481407400300", 10); - mpz_set_str(table[16], "12369477960734113722864525078582608852370018094061204027942627890135194989507", 10); - mpz_set_str(table[17], "16163964964586340502481422808875676121087522897744995566259880919753966403255", 10); - mpz_set_str(table[18], "7702736120303126921093930726352040212433766821508419429985047441722093406459", 10); - mpz_set_str(table[19], "7246729385887108740283006671788539249190688392859887641307405934690350862577", 10); - mpz_set_str(table[20], "9997451569095438210177601601525789878145195348412680318050593528279544009529", 10); - mpz_set_str(table[21], "13351799380672813272888481361747277406291715908203649317072459470209053368711", 10); - mpz_set_str(table[22], "1773897381344651665913655357422475866587266783466742549897693688802771343421", 10); - mpz_set_str(table[23], "16651208206485722403868841705688598251975239805372694434227088716692944444481", 10); - mpz_set_str(table[24], "18591812731898475944754561232540921618539098719009219952834750606364012015190", 10); - mpz_set_str(table[25], "10306739583439085894427119905905060738766163649788668995725228423619188185612", 10); - mpz_set_str(table[26], "66865139241574800688241507800546546981627984204164258513766123417387927304", 10); - mpz_set_str(table[27], "3117005704251728314121265949438172590029403373829696135299072995521493558348", 10); - mpz_set_str(table[28], "10903684612539203130543164951218570964354821403206799855909881481322430524323", 10); - mpz_set_str(table[29], "11250101561961297773106005143622245961912412345371816081877043479955953346628", 10); - mpz_set_str(table[30], "3017567837262857273430893285918339032720677356685745383331534986484636098824", 10); - mpz_set_str(table[31], "13931080935868505516190704666941022660207581072746676055655987494700835702500", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=22 -*/ -void EscalarMulWindow_30f98775112d2cd4(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8938286554228544146174935118066197962621531067129841012707772022867703925656", 10); - mpz_set_str(table[3], "16233020724865011658897065342314816850087702885764903183418504396595757282796", 10); - mpz_set_str(table[4], "17788068487178949472006556212688526701488695761204073382019553632867906404471", 10); - mpz_set_str(table[5], "16127823313341081822494850404375536033371699056428971183012507006102307142724", 10); - mpz_set_str(table[6], "7948203346355397426642285862907539603341349107055405573959944605644158516483", 10); - mpz_set_str(table[7], "8080213050870144724053705109131048654207107135303024810751701147314122163095", 10); - mpz_set_str(table[8], "18836461869410204095776934792761344149932025549217744071005539527374774323825", 10); - mpz_set_str(table[9], "12315930453124844529601426229511916040567059674397790856441547364639703358972", 10); - mpz_set_str(table[10], "3029948802756980831465293146155474995008293938711435950379966727706069635762", 10); - mpz_set_str(table[11], "2944047328882151696646146625857522138088586878532553112277573706430775555923", 10); - mpz_set_str(table[12], "7815175266657454899435707666016439832467810014589047829774355489631055479999", 10); - mpz_set_str(table[13], "11629199560086524860014784100414914941795896042889055009567211943676511945534", 10); - mpz_set_str(table[14], "10519107830389173260209669111202520869112033340766308966162199232932204008760", 10); - mpz_set_str(table[15], "3349072061895510743669030860598071540301046000284489791093666441232995490719", 10); - mpz_set_str(table[16], "948647253672758531039400549045346962380493520135840196438186054536313762207", 10); - mpz_set_str(table[17], "5908157674977132846928879199200097245110988008169599585576289810904461575283", 10); - mpz_set_str(table[18], "6132113203588582802605376911284386888805675076281066403330188057478812664670", 10); - mpz_set_str(table[19], "5791746634565285768667366278586496582595773914053660965247267572566412696438", 10); - mpz_set_str(table[20], "3948773953617608699058534644888624079818068151195158354586293074525410857468", 10); - mpz_set_str(table[21], "19223719972167441778565866926185469055297450189080365071437879239145618219437", 10); - mpz_set_str(table[22], "12132707777982746548697633357326379720282056794417855398812617690240981551293", 10); - mpz_set_str(table[23], "19465949072370867974351436131596063077818116674756009467101720357829304842337", 10); - mpz_set_str(table[24], "5298087154254600484339094370964794453930884675470785449137720155759701701915", 10); - mpz_set_str(table[25], "19600464238075802945841709619847491003915314667447648486383883532650301385905", 10); - mpz_set_str(table[26], "14526748173817800035403447828412143706207316815744540568528424322830936932156", 10); - mpz_set_str(table[27], "16857568697177571714302557842839799449943735879679994945877666330612655709946", 10); - mpz_set_str(table[28], "21734912970121745461521746184343777601371401538618983309688539060671085007786", 10); - mpz_set_str(table[29], "15742219086869357379751660262698195198917852623576290180440862264694005230805", 10); - mpz_set_str(table[30], "16610229120622117630467987686045935340065838046536073783473224818312109568048", 10); - mpz_set_str(table[31], "21535954724639585890498135657808861681506922170820158374602576078046700022327", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=23 -*/ -void EscalarMulWindow_30f98875112d2e87(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16886994305634169491329382843745060260876647438360602332861303996590301095317", 10); - mpz_set_str(table[3], "19250152014385373544010314183948997304888234702318488490522676401039395968569", 10); - mpz_set_str(table[4], "17348733161769620800993755373018881827359741360278490192493625108023310313005", 10); - mpz_set_str(table[5], "566695140367669402799518632199180306904869215200693423271786676840857351418", 10); - mpz_set_str(table[6], "10011121525544874366823344442710893674598724456123612639127203752984561101245", 10); - mpz_set_str(table[7], "12822585595886475793229925464144800427103669072661114110462131694510350506756", 10); - mpz_set_str(table[8], "4810116193624143216372416270879924446821266077828181869947761973544863556447", 10); - mpz_set_str(table[9], "8901164482855600833225393252685999670084599049275103956788506461858717745436", 10); - mpz_set_str(table[10], "17738210631035045198519955933959421153574146216760401345098167567456148219983", 10); - mpz_set_str(table[11], "6355934390837858571738191002333087271151726768713129603750052662255719616301", 10); - mpz_set_str(table[12], "12327093588058526023186553363417411525848176175949896342833033556038504600108", 10); - mpz_set_str(table[13], "10387209597466117079658421782540272896953611723709561546014772942788616514493", 10); - mpz_set_str(table[14], "681189354661002842486325655070556888949946844914894710558126018544873804495", 10); - mpz_set_str(table[15], "3292729181740647935866069504140338838656413434052167584402974052265364076067", 10); - mpz_set_str(table[16], "884407658173462867707739747812316370597774974095310269108423966433523338214", 10); - mpz_set_str(table[17], "6631500605196071713360916843241530345980308116925055602412667675904333328047", 10); - mpz_set_str(table[18], "12895559277116358670393871006584256920318562245049632307173471875036554324380", 10); - mpz_set_str(table[19], "5266555174963538377088254254983126561217442326737171095750495435048658572008", 10); - mpz_set_str(table[20], "16453452136317035072976017859508381181391210628785959531993473624257016920655", 10); - mpz_set_str(table[21], "16233020881582916387489818050708881660773449794558891116253150211883171512627", 10); - mpz_set_str(table[22], "2214298418432911450877366160053598422776005617941477197409719429895490749313", 10); - mpz_set_str(table[23], "10619594699481593658385194554202011558252256471897737016523149811293375017143", 10); - mpz_set_str(table[24], "17111311272140931254336753418244566427726060210805880894176936586680034335847", 10); - mpz_set_str(table[25], "10832490761061448355368226289461614460683336133692788303269139762891913675338", 10); - mpz_set_str(table[26], "14928129153639517483007862678341151531398692576966576849558881263843602003142", 10); - mpz_set_str(table[27], "20804857761515056467665872261996549551629057953876899865669315504410310020540", 10); - mpz_set_str(table[28], "7620128762372510243048687904753925795503011437667518065325007685839124990696", 10); - mpz_set_str(table[29], "3144480052518069195168964581895685908673227030208117340578509893804277989058", 10); - mpz_set_str(table[30], "7153364527791398877534600405380198967008476027992188794322651254312458064820", 10); - mpz_set_str(table[31], "5126598118313026584086237094809207967961753105693665923628898103484617383485", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=24 -*/ -void EscalarMulWindow_30f98575112d296e(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "16694195795086647676823073440701246940590151342078097593569860395387801713056", 10); - mpz_set_str(table[3], "21042732401434488602885524826509480564908913891394226911717810672499997691958", 10); - mpz_set_str(table[4], "19745794372137894058717114809420748629022981940443635955473162754169833423176", 10); - mpz_set_str(table[5], "14338710793499834162343259671863053663870643524143306094522211743283709136960", 10); - mpz_set_str(table[6], "339984129173005990960719816761321689854778678424875871156559477809462465312", 10); - mpz_set_str(table[7], "9124928033278255101446464040294186305463859914450541160651606007781619940387", 10); - mpz_set_str(table[8], "2168266796245250286159186074165543421467500777809443939109000224182889430893", 10); - mpz_set_str(table[9], "3441078344864070848632550732770580026115294752485213716512724906069694488486", 10); - mpz_set_str(table[10], "1493260518513853893229779119542136985955042766621854665561168308934004658851", 10); - mpz_set_str(table[11], "4400345835784246869449841131885449175502280644324923727128668852065671273712", 10); - mpz_set_str(table[12], "15886539512018213846379225042539892406579078803170759416753209026065188419846", 10); - mpz_set_str(table[13], "2685522315309179508150991601560665057484052528357986614755363211324866652473", 10); - mpz_set_str(table[14], "6779363514708510951323630552381214572184033336794324206850950609719007741831", 10); - mpz_set_str(table[15], "3476582231055339891079923575515358265505372330803145828382028844066335144378", 10); - mpz_set_str(table[16], "10656096844085735648374301047353248034850599163371495258913334220183478166651", 10); - mpz_set_str(table[17], "14106589807801597672428866674639821483580192658118511653401933109252642581523", 10); - mpz_set_str(table[18], "5004475779566685906785640118550002890090717216385240183795874024788870946311", 10); - mpz_set_str(table[19], "10419370529046765623365738215440453217584429464100071338939925019678842078822", 10); - mpz_set_str(table[20], "10336501697695314588196663003291160100745276268174331804207284273201428394814", 10); - mpz_set_str(table[21], "5785121510067001864477010442645844382309677096275390507341329000934758573714", 10); - mpz_set_str(table[22], "15053468887365182256447919890301502365510975286187232746304324776846541239645", 10); - mpz_set_str(table[23], "8732911777561606780736610118910609024225648561175056887433316116595810867762", 10); - mpz_set_str(table[24], "465346489098734692854243749707678817146467084966205136195449859225552315630", 10); - mpz_set_str(table[25], "7632494447498524328529815941609473690869659423775247896505032181856203182747", 10); - mpz_set_str(table[26], "7530090173441699779360140039443597652430714325702091148902767068479566086867", 10); - mpz_set_str(table[27], "1295443075220899591122459835116278754819540595920213653782903313209194134801", 10); - mpz_set_str(table[28], "12296846927293714987730519199541309508371464058256920091278949142746723077868", 10); - mpz_set_str(table[29], "9280868073148734438653663128808684732571066657428860076459323623560138390373", 10); - mpz_set_str(table[30], "20936814290823712726931303619416653496113136456166980896723016053455263449841", 10); - mpz_set_str(table[31], "7687573233093777724968213349093466368789568595880736939375028446624143877585", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=25 -*/ -void EscalarMulWindow_30f98675112d2b21(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "20638489285721343548835406715942596990186717728852189596544615969306326199053", 10); - mpz_set_str(table[3], "11980292799209025585575100148014064392077760232810301570603613473161508752625", 10); - mpz_set_str(table[4], "15204524559937459669833130174147881699779560143735896339343742777273008882845", 10); - mpz_set_str(table[5], "6347972627628880648457437280880718837105068783834368659339960556659959037238", 10); - mpz_set_str(table[6], "9454910167271163466457863082739106591593364752835931575465360136478676303109", 10); - mpz_set_str(table[7], "8284070525768906887649040215529116045650091430710060580172323139823433102105", 10); - mpz_set_str(table[8], "21257880961348486870031614468363075992624238095842490153257760752156215146870", 10); - mpz_set_str(table[9], "19081752576048636033140717176630459150723955930477244767892967769990202777209", 10); - mpz_set_str(table[10], "19799882984479127618851957820474864597614017929106633491303381346509094749217", 10); - mpz_set_str(table[11], "18295534979203170290529170909512306929796477401339054788027762611251318828778", 10); - mpz_set_str(table[12], "8489094773386028708188117663829022174118289111227349887308356430178601722256", 10); - mpz_set_str(table[13], "13521649091624792019529980310831332673924030620201197023886404052013769337654", 10); - mpz_set_str(table[14], "19010516319176201473351370765147767482645406385283197234739994237419779438382", 10); - mpz_set_str(table[15], "10681444071729457066598032919326028826229204961551437861644323516076601123286", 10); - mpz_set_str(table[16], "2466896380362479074903392071423591601055117479050723379361102734305113922610", 10); - mpz_set_str(table[17], "17942903488791174525324015393812730961936787908237354767773785327672375573711", 10); - mpz_set_str(table[18], "8313783718047170482383627445554249897053219230092946550865762751302761288359", 10); - mpz_set_str(table[19], "7250418774092933181048334601143091068669292067709306070023667173282232403808", 10); - mpz_set_str(table[20], "11615604215872648010815918033282678390952292003382158719975297945858900155959", 10); - mpz_set_str(table[21], "14108403057609050183154012551849013256246047626755611930392079859169634912188", 10); - mpz_set_str(table[22], "1578836860460898409060182496957239769363827918125416661411143888666243025337", 10); - mpz_set_str(table[23], "15000167670829301804763981714875065187060031143442756922383316390873526860394", 10); - mpz_set_str(table[24], "11482503422833907981771550037048833385907788997983304192490373426062119963256", 10); - mpz_set_str(table[25], "6501562379367658717658491112300898739651450911953892433603844825954683620474", 10); - mpz_set_str(table[26], "261929079713361218410337489092528801259709142980821954721181922016467164680", 10); - mpz_set_str(table[27], "21002021782216039507687100651552341588383791163695173808500741490726033204575", 10); - mpz_set_str(table[28], "15120425408795136073283404278319627873859948943823120385369903930352912567116", 10); - mpz_set_str(table[29], "21480238371424269393281398068940579951009033537187968076488593944760889080945", 10); - mpz_set_str(table[30], "1040436079148496124865240568265769920647967515136801643515213190597054722054", 10); - mpz_set_str(table[31], "18963160064156271117139977258761659314946244364217817561984816810650200872938", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=26 -*/ -void EscalarMulWindow_30f98375112d2608(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1777014253974620429558459032714355400263370941019998279285407112515496689235", 10); - mpz_set_str(table[3], "15644522334423526434436134660844621025694146030175232929604459886769792353379", 10); - mpz_set_str(table[4], "3886331634315699257224697786768363604071022420289603105610543476653443372141", 10); - mpz_set_str(table[5], "11314623594716146207579423020470708648388230389361362735126578715063111390278", 10); - mpz_set_str(table[6], "18335295164107120900298251905170480911224919782217038131574152108306060857690", 10); - mpz_set_str(table[7], "13870107112372425460914690729063408413728273922057831466505049807973228266329", 10); - mpz_set_str(table[8], "609961927036422336466232414334651368961526925588196470605572440362401903104", 10); - mpz_set_str(table[9], "18978562237785208487472664105738761110727184080820755471844339969870706932382", 10); - mpz_set_str(table[10], "8817581160502090343281687771602370729661202819998983990797384764392972772261", 10); - mpz_set_str(table[11], "8681768054391330955879937183317596621669141757043363580614074800765220922638", 10); - mpz_set_str(table[12], "19532832519073722277306963027485426797414278966746032274116708652891247479183", 10); - mpz_set_str(table[13], "20673359596006100817996841961385435641277265900496452772769751875783581455940", 10); - mpz_set_str(table[14], "12215284774589410915026224396508337539765754376113139999543228590868166981551", 10); - mpz_set_str(table[15], "5349672598740934656252787190781796199266073013719486237893890048942308590593", 10); - mpz_set_str(table[16], "3222661655264230573451160235037631538563129448264614884211686648251604339218", 10); - mpz_set_str(table[17], "6644122830260404798475405906907894849596449599442847076109290430261580402804", 10); - mpz_set_str(table[18], "20674670242625891598644463998190733382166022642039066566767672350533210200181", 10); - mpz_set_str(table[19], "17547352803267197949188417346341441959599227579681607949038141791287711630089", 10); - mpz_set_str(table[20], "8501992178040297311784650719781596406145220750586901978520061537215748155846", 10); - mpz_set_str(table[21], "1033934366236880584021829977720882839344175611598951718377606827450418761074", 10); - mpz_set_str(table[22], "6629891778698738554366860564373469150768326636854977945327031020432536027351", 10); - mpz_set_str(table[23], "15991818398563302422071450355550838972682659241520123643935879409630034616684", 10); - mpz_set_str(table[24], "11520058998982033597283580076322921220778977767224586070757457038709854923045", 10); - mpz_set_str(table[25], "21787323966328349873072190136337768755380454447882078877586516663340458345296", 10); - mpz_set_str(table[26], "9218379069503935490797126970013730953602439164801672418344584790476649859707", 10); - mpz_set_str(table[27], "14860625766189910741376616275620794379181669078375321593192439912242667323144", 10); - mpz_set_str(table[28], "5429219372767594600695373756014663252902611042107910196534062669589834547398", 10); - mpz_set_str(table[29], "11388805626760710383589685776945849075154050041321557687035260662259978688506", 10); - mpz_set_str(table[30], "13657023395190403407491147603141806909952435861945773206868053993743013765937", 10); - mpz_set_str(table[31], "17420185578628934498201206341811283612571453380544875542335760816138673576209", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=27 -*/ -void EscalarMulWindow_30f98475112d27bb(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18064680232343661410084520978918241848925411622320795244845148572863303526672", 10); - mpz_set_str(table[3], "3129477399317235225089050822276657733172458813838499693454702048664329637872", 10); - mpz_set_str(table[4], "1915873910603542325344037869436587379196657968439769650876805482903947726062", 10); - mpz_set_str(table[5], "1710089766210076649934415138488175432756239287286100986488334712165077966260", 10); - mpz_set_str(table[6], "11419588095705940172793401648405121838217909031807728022871176470684341944853", 10); - mpz_set_str(table[7], "19772220035770123897190852625954845688624431847731967062053851190052170998927", 10); - mpz_set_str(table[8], "12734818558013668561780768522805283155882116093826225873128522245041721171789", 10); - mpz_set_str(table[9], "1710340367577224186069277555219791941680656114773959974999082059756200926587", 10); - mpz_set_str(table[10], "19014114461447694975008934073621144481369527806987337136388671720496665518991", 10); - mpz_set_str(table[11], "12229458491563389647571272019395654127077520925033144650364877699841042845307", 10); - mpz_set_str(table[12], "7466662369786045837069705032767588282318351353857802530388462887764349615715", 10); - mpz_set_str(table[13], "11492793391701044579497562966917572884883058770494470661332046656891126972569", 10); - mpz_set_str(table[14], "20791164040771894102731291226901830105499772911835736318506038457125027880572", 10); - mpz_set_str(table[15], "6971133768281348446537241889728164688130773753897758867942572023258664100171", 10); - mpz_set_str(table[16], "7459496263286980566528366127976868255821604117050061961735223728840039489556", 10); - mpz_set_str(table[17], "17806588649177458693229845080877081795064171369683173826688595311959567985897", 10); - mpz_set_str(table[18], "11585532545705536953877249594093137001050343946717448352961430190264483925402", 10); - mpz_set_str(table[19], "19982512193652683607242346956334217196827775074613261510923071976996191269762", 10); - mpz_set_str(table[20], "15579702851812127894189575215319081322826804705013506301123970210537584850302", 10); - mpz_set_str(table[21], "3418188991987560811919718785447846911810548711238688481876114269665391980769", 10); - mpz_set_str(table[22], "5703794193468948792031359712163085063600850733809748935932617792165374857903", 10); - mpz_set_str(table[23], "5195030959126764288167771101245597533500758291334991781545411006759702015266", 10); - mpz_set_str(table[24], "16277058597385314227987788233527851157223433550564325183661488644276368816347", 10); - mpz_set_str(table[25], "12543117151526615133293331613640311066954196812050214272232133573347836644662", 10); - mpz_set_str(table[26], "12861690469934293198572395506156222103882364040500023882764787334693068247564", 10); - mpz_set_str(table[27], "9969342024557129536312218347164119919502699260068320956280512845254898172853", 10); - mpz_set_str(table[28], "2596007813520927095981603378539633083423201517237110566575854218755675137335", 10); - mpz_set_str(table[29], "21283498480219426476354808250748679019692674473173909804203735085500521712714", 10); - mpz_set_str(table[30], "15916327454541284794004152263717048144542509881241878926988699269425338262520", 10); - mpz_set_str(table[31], "2925233824526413092913617765675468817898009901490945263220160556285670744600", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=28 -*/ -void EscalarMulWindow_30f98175112d22a2(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15187837374949511937701099621526261653017815610530781612551683012480593026060", 10); - mpz_set_str(table[3], "2145304950527938858075313596992545420094986199499298487018798696755786101860", 10); - mpz_set_str(table[4], "14516041837947643228505370886377097735288217805106565411522074117910854668605", 10); - mpz_set_str(table[5], "18801756891511955972633459737831576667521120192567956257176754597389680269893", 10); - mpz_set_str(table[6], "8619864389822707243827106338304479608555074884689635535180138599565637039146", 10); - mpz_set_str(table[7], "4254878146021253820483247745753798490236286129771746676467235363946168465424", 10); - mpz_set_str(table[8], "19687149588354229712126853048017720022532871397224450431538859357788219120045", 10); - mpz_set_str(table[9], "13364286509683319141069645804954844108686545511143825733680465933752466735833", 10); - mpz_set_str(table[10], "10186461717504246046230268440918821035876440895494266557127416606329083191287", 10); - mpz_set_str(table[11], "18297926602340021478575261446428210531132532051235949738981896308382482354761", 10); - mpz_set_str(table[12], "9662018506088598988541013808430313815739391873838391456964385042078776489955", 10); - mpz_set_str(table[13], "9612634823479186815849213576402334527393278121749786594652461488830006809363", 10); - mpz_set_str(table[14], "2137704031889285044468792179116749138832579303450232811659896613520782167639", 10); - mpz_set_str(table[15], "6749784557917554872006248055872747554534389320001758319101013030696936272628", 10); - mpz_set_str(table[16], "625850685425088233584927386815010073538229935767335330487848474433738918010", 10); - mpz_set_str(table[17], "6995589058260837178074203227798361798565888189644556589736593990439092388492", 10); - mpz_set_str(table[18], "9409159498243173193976978933968355588871599969716311700577155528351183018675", 10); - mpz_set_str(table[19], "9104170183894207978302719302073040066957290086548111568450399757272258078358", 10); - mpz_set_str(table[20], "172137246540613195507454067378303432481243939754662726908383061986079873929", 10); - mpz_set_str(table[21], "15156508289826552331459340900493745787045167225977526564817131051834994840762", 10); - mpz_set_str(table[22], "3866100369793028316149456519221636065086391047338182901297729000837007449069", 10); - mpz_set_str(table[23], "14449915354670721904199065940909559846733006632484706727650720068733055778595", 10); - mpz_set_str(table[24], "21047210568331534632839865098320372283417502512195493040500119038992713574260", 10); - mpz_set_str(table[25], "8908385197981213495509437145553944057864145388036148265876356525650583964504", 10); - mpz_set_str(table[26], "5156429062451548848250052993680497566063269712525114483317807292940922066978", 10); - mpz_set_str(table[27], "7953110297861995272265856227435274549094654925357643018879178379457332790396", 10); - mpz_set_str(table[28], "20237163278369283917100424296717777322056107717562199737610003631756613116098", 10); - mpz_set_str(table[29], "21844186763900341665690480709552325814119192346937469754793446106515094484517", 10); - mpz_set_str(table[30], "1682802359745804099169273003669171107459792021961893987239622400107547501320", 10); - mpz_set_str(table[31], "4077138749124832881195516357880862205186145392494220998949617863381768882938", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=29 -*/ -void EscalarMulWindow_30f98275112d2455(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "8430120875982733852309880311017060881275873150019222186218810957880200495354", 10); - mpz_set_str(table[3], "16989048378233858794788958978146014195305377375456310408467635854297286523644", 10); - mpz_set_str(table[4], "11860819094638342129205093270485645885615224185534099582623386180671893464610", 10); - mpz_set_str(table[5], "5347412438294657846433921264856011658228569726843345585243244038664219922810", 10); - mpz_set_str(table[6], "1131515993461675542524770075003115292938846156878400185919596937689352478900", 10); - mpz_set_str(table[7], "12958861123925681990457733035240880740911469560279212974551687919749970821952", 10); - mpz_set_str(table[8], "16946382245182653723986215424712248308680070566989980508990318627491651639222", 10); - mpz_set_str(table[9], "9684719733028580507529590768659268232327801582933846772922989034860249837758", 10); - mpz_set_str(table[10], "5999679216481167092351894424740052362270910587107818913157978272975329969180", 10); - mpz_set_str(table[11], "15283242363240494263092569207305021472683635734133252738487821244946929305830", 10); - mpz_set_str(table[12], "2390481826645659845462694915335620709401918992651565167621434341041515485426", 10); - mpz_set_str(table[13], "11234903469741399379378467473414477277447866625760458871228875001965786066142", 10); - mpz_set_str(table[14], "2854663530603746825997771192777239949370009008942184991623923936027166701241", 10); - mpz_set_str(table[15], "1716474310485208988848504994688510642262853564024074464797332607903568267762", 10); - mpz_set_str(table[16], "574261315695697187999090960533511996543112623807808585487437694816007242375", 10); - mpz_set_str(table[17], "9488037863754916252285084849697668592037845778602067342312244550925811511773", 10); - mpz_set_str(table[18], "6937751462243507416714652878500637777783427212384019031420511879376004465456", 10); - mpz_set_str(table[19], "19740423948414089679408486526132883520644311662846415828027265309442158866057", 10); - mpz_set_str(table[20], "16588359622627534498549559416903320243908569987541240336832789867333731937345", 10); - mpz_set_str(table[21], "16193264327344065104508058208393259449814798660533346905997978994248078433249", 10); - mpz_set_str(table[22], "10539088761282419816274044126996361653677221705820616724100561671785803212782", 10); - mpz_set_str(table[23], "17460185379704072230905236545870362909423057500606358331847775894270128309405", 10); - mpz_set_str(table[24], "20283302434798174744292886687305053200397791259996769945915067516245713041655", 10); - mpz_set_str(table[25], "11174752591702511626072990941590251321110127731096751339644196981352004005453", 10); - mpz_set_str(table[26], "1486150988509639688554157444015542156414168602625589860304688017818290636244", 10); - mpz_set_str(table[27], "9150671293725493183754477160965749940881636325359911520052587069881210743789", 10); - mpz_set_str(table[28], "19343927285873184674634659792139676180815279040052274972542293363067198799162", 10); - mpz_set_str(table[29], "4627431036776791029192848496923858627831703348348368475756503170707381476969", 10); - mpz_set_str(table[30], "3535219293199686539282520101216213498200046685961782400799847048192421427244", 10); - mpz_set_str(table[31], "376255090104282189240330705495600755561026362666658230687640913451416561867", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=30 -*/ -void EscalarMulWindow_30fcef7511301363(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "14238193718703509061393179391871597776636648384268561716878359134447010275729", 10); - mpz_set_str(table[3], "11128686287190319115796975372771719760247611758490380538178484745830360450517", 10); - mpz_set_str(table[4], "10055072091130411372046195709246821590910406117794812296658347233960874089278", 10); - mpz_set_str(table[5], "20782948663131209756509722449085047044854070281061698220284675443000040047339", 10); - mpz_set_str(table[6], "9730003847744981396118646118393559547263025457734388634241732641755012829392", 10); - mpz_set_str(table[7], "402725134261562981867362187300726075217986407860519909390643272858285544688", 10); - mpz_set_str(table[8], "10405506820603162024685846827563501275545987181778547975771411509743184412454", 10); - mpz_set_str(table[9], "19316554963171785123118679601840384463718803188955967577042706405302281719253", 10); - mpz_set_str(table[10], "7013379614279565755050835765204418127664364205389258515285963366882228010297", 10); - mpz_set_str(table[11], "1160310105440567642234802077667644074776831915565486115840708226970130738026", 10); - mpz_set_str(table[12], "7761956594103836782808025810774239092173311520212252887192766584414952011015", 10); - mpz_set_str(table[13], "16467230324214276607433637193834817187352326754396740602215579254574733894727", 10); - mpz_set_str(table[14], "16044986700084398421397021648426986299236970218740795760037436672615587496338", 10); - mpz_set_str(table[15], "11453370323257816680886225219100250253924918078810835306107633769366314580013", 10); - mpz_set_str(table[16], "11196790363890411219721246187048666205705470699868057156619839765236235201482", 10); - mpz_set_str(table[17], "17913348103306068374810648105142305506226430386925547964019291739390270606444", 10); - mpz_set_str(table[18], "2968466585322596449237619022827719449587880163652097027626817718467322855243", 10); - mpz_set_str(table[19], "16095804063813988453967911872447239838295530386604499438408868735049273550964", 10); - mpz_set_str(table[20], "574153869797392469626420512342892981518387968872853023272811826397331946711", 10); - mpz_set_str(table[21], "13197832228561702847936875508764659326248624314945180356504360288540219974546", 10); - mpz_set_str(table[22], "10019060834683864503797290365830420533439086531546305091131646916696591456830", 10); - mpz_set_str(table[23], "14146032170258045335058907961471533060542204662800165620458815973333538817876", 10); - mpz_set_str(table[24], "18486262348994599926858913122559118183502197130806434028413537510222673555549", 10); - mpz_set_str(table[25], "1028522096216424760459874596015490366781655258798730511901839006815288226832", 10); - mpz_set_str(table[26], "11252122701355701933193375826691419110786070188200202793945282765125646519498", 10); - mpz_set_str(table[27], "9659134540210915291452189962493460650012698122159422507471459638724127172920", 10); - mpz_set_str(table[28], "4237740433982830275324466894716337961581773197376214300393154355826797778626", 10); - mpz_set_str(table[29], "3087522940165379740888719303031664198786744684809877590767094217982380142255", 10); - mpz_set_str(table[30], "11716397164728437678213417729731587985927531163030640256120763340853819008937", 10); - mpz_set_str(table[31], "8467585026010438916429833569621610998220417444161460762175756019525605725701", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=31 -*/ -void EscalarMulWindow_30fcee75113011b0(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12301124670003480104629696209955193240288495529942186880979835361141701252356", 10); - mpz_set_str(table[3], "9307408019588658357187250344796855263122925817326642854835543188718545588235", 10); - mpz_set_str(table[4], "12889310269837866650766227631178608737732446818042182494770160487739767279933", 10); - mpz_set_str(table[5], "14305043734279423947220285740725380475183130745768863219550754411584785876637", 10); - mpz_set_str(table[6], "2391506923719369375409285779558753053068939727022649476425709892272625307893", 10); - mpz_set_str(table[7], "20864182813068571493291027606141058053296680359427218913210461783887562952698", 10); - mpz_set_str(table[8], "13717112134968028062861345603251284378766588993818047018357278346982666267616", 10); - mpz_set_str(table[9], "18515498743044454086246214151041857907262552385439225148419555542085380189044", 10); - mpz_set_str(table[10], "19786335348976756304092292889433409910460897566007278500882917882621771002663", 10); - mpz_set_str(table[11], "3074827769809993989484080415178258371624563037744089528303415196948826583970", 10); - mpz_set_str(table[12], "18162151180829928372755578060911956001928586230958178587289038713471477198352", 10); - mpz_set_str(table[13], "17776431759694085218624709393499209473805046869022372079320360000482906338993", 10); - mpz_set_str(table[14], "80121474887161448502875808121828257891050691690308063907366279897332426674", 10); - mpz_set_str(table[15], "4843419163790123104825922364623794542824882520052906884382919792140459556953", 10); - mpz_set_str(table[16], "16666071898737680227499350945199392444326864033722414091273367827539524589546", 10); - mpz_set_str(table[17], "15790618304108173362977004189329282439810998759305703492319635725453030891276", 10); - mpz_set_str(table[18], "21298786101648253356231140242322524750415990857635583683193964724572782162439", 10); - mpz_set_str(table[19], "9469077346250800622094746156565577116214942734750529481971940153852106023493", 10); - mpz_set_str(table[20], "21456850850249274154135171415820595010046206965735417729217811813688616616077", 10); - mpz_set_str(table[21], "11049201884907448465961123562730151208688552421172331584308926191495283017552", 10); - mpz_set_str(table[22], "17680109269125318633918330735425014560787165382534729605778313493894562814033", 10); - mpz_set_str(table[23], "12105940730388865636910070010326092011431801565406868479968794675414735004435", 10); - mpz_set_str(table[24], "15998448577204780769640959835597175674847056349302254252924910141975750546702", 10); - mpz_set_str(table[25], "20383034396621046865153230386678691904148615554734273752771483670161237587656", 10); - mpz_set_str(table[26], "17632055737278619134935551593899813532116959098796308479843929174416170691352", 10); - mpz_set_str(table[27], "4252024702058108422349273682367261490797904543143377995662728796152704556511", 10); - mpz_set_str(table[28], "15921903558693736739894607602659797433345301139773501452306612307519804566547", 10); - mpz_set_str(table[29], "3186928242653482242058545037677412687364250196599079917827732761333308912407", 10); - mpz_set_str(table[30], "1618212084063181650772275232670476780382766932888791386539214173270639457771", 10); - mpz_set_str(table[31], "14243156709104866279163372078788621001789581177741277344609392836151217049649", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=32 -*/ -void EscalarMulWindow_30fcf175113016c9(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "1987562385945662646693910367847343092839775049384089716572463157188308075703", 10); - mpz_set_str(table[3], "8757891452444022272769074848185376031107493735804983258559692651450471449467", 10); - mpz_set_str(table[4], "19340980305207309851017585089745997262181529251660847136498034370423172358790", 10); - mpz_set_str(table[5], "3171954919321285041707836853210020107918354488495904996405397026691685387275", 10); - mpz_set_str(table[6], "7456782377446086729279024612560429250976274769697246081157467558013495490886", 10); - mpz_set_str(table[7], "19234445645972711561269394192820536484718909007253179676571933319495226994795", 10); - mpz_set_str(table[8], "16929682317265470407359039690863194931815816975546547931080374367647064256560", 10); - mpz_set_str(table[9], "19002666235123629016806051012708674139843451827352100176996919302145892305807", 10); - mpz_set_str(table[10], "6126348015647450097257405657436342275063995153655708457720498813798135765008", 10); - mpz_set_str(table[11], "9019398810484927442106820791015376990909497561299157866082257712844949896674", 10); - mpz_set_str(table[12], "17863415953714175483513279587917319087576563891891572205528055824063187960352", 10); - mpz_set_str(table[13], "8433302553989787214424744341013687704848801106557403477261381733289709586454", 10); - mpz_set_str(table[14], "14623063230015607306024098706334470924537437193017407652107176588600953567592", 10); - mpz_set_str(table[15], "6790366987651073710778512031322468814673592792102234818936982148022075670382", 10); - mpz_set_str(table[16], "20064500133499405898892785154968628645182542935850348227069103134829392852046", 10); - mpz_set_str(table[17], "20334991608678685360887445103532106510564315674897518419719358060729882943577", 10); - mpz_set_str(table[18], "19233849075555813355095538246937058457522062542751213260352576832992794583635", 10); - mpz_set_str(table[19], "11937931511526999239383964164191440616023116878865434135897668172373653937001", 10); - mpz_set_str(table[20], "3731568093789624066895780755446160672883019265449156552179215766149886507985", 10); - mpz_set_str(table[21], "15905538405255467591537960138855533827262481827486454938952689576394962017597", 10); - mpz_set_str(table[22], "2972643783787395632847083734065232167867024701532612424780013471894868770333", 10); - mpz_set_str(table[23], "20316740349131428410943126107596835884295112832905312743893243359220133727084", 10); - mpz_set_str(table[24], "1960178824787487349647288822651699000969888333819782445927381191796723810131", 10); - mpz_set_str(table[25], "12036356908573792537467559899293737511912789293829616811448276054062929883982", 10); - mpz_set_str(table[26], "9115608859141528355028388236342491327552919424434987456051647357715965409255", 10); - mpz_set_str(table[27], "8551717131727089574523063290840548020336854090491082956430810385876964221685", 10); - mpz_set_str(table[28], "21222352143328980324755794773369156504454642044174057872189384824224669257352", 10); - mpz_set_str(table[29], "19343194935775817015099439816586333125932842648021710724281827521375707848849", 10); - mpz_set_str(table[30], "11663391309937873736825812371477290450289652024371047570699375639101355311953", 10); - mpz_set_str(table[31], "2515730073902656808459386919133675526962721062613890750954892324223322974096", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=33 -*/ -void EscalarMulWindow_30fcf07511301516(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "21756303931496901479512413651365731199202229621077509772849222281044626245113", 10); - mpz_set_str(table[3], "8725750782645177585080332051375050645623740711653508634989973817337008664220", 10); - mpz_set_str(table[4], "20634629382518387554674166128653694481727447372522727654033011816022092201626", 10); - mpz_set_str(table[5], "21039321163642083842809215867461484613860959195907164380413721780084042870711", 10); - mpz_set_str(table[6], "225606947902114440810583888145686785809923984244160520131996957352454984482", 10); - mpz_set_str(table[7], "3064605424312709391908104292550310731254091300296409862723660210147559805289", 10); - mpz_set_str(table[8], "7190706601647508333078532495568146288215874434500743046425625070403115923655", 10); - mpz_set_str(table[9], "12430673783156026320130445364595492282638745868546980155799381906377088256004", 10); - mpz_set_str(table[10], "4559640081943605705720084643420503840504693575886754910308365642877297098554", 10); - mpz_set_str(table[11], "2898684694364630498707286048903815763033802006459876164161498942054395505522", 10); - mpz_set_str(table[12], "11389247371329831831884637607778951318378921139390851830184799576855232696501", 10); - mpz_set_str(table[13], "3785893182928926260340675059968265462347408831875971557698622701254747198238", 10); - mpz_set_str(table[14], "2497619489319855994858479753102789311872840425023916344226023465467964699089", 10); - mpz_set_str(table[15], "13043314535128655789781062111777793546048506553985651239534755825610261090906", 10); - mpz_set_str(table[16], "7171760700816251997911831726399649106826637842548063915366276296206458718630", 10); - mpz_set_str(table[17], "18215045618028261624107985681381272839696967888716014580889635383365024149513", 10); - mpz_set_str(table[18], "9621276160928162422393959764258033063795244588767703387186261740413228942973", 10); - mpz_set_str(table[19], "13238365674687039574916488599843525471014018476269771360356170970334927678488", 10); - mpz_set_str(table[20], "19724803198901561035147579900177938153203768755423051188063703168446022875208", 10); - mpz_set_str(table[21], "1924221348606428584577290726141773680109852466353247005405512283961520064076", 10); - mpz_set_str(table[22], "8730989010234778691328223601892526701866121630305702086280895586474481648130", 10); - mpz_set_str(table[23], "13883942699346609000449295248715540261867655631317836922274460204316697781414", 10); - mpz_set_str(table[24], "13973005826216764508350304280317977585567663414266317211391732001362385060951", 10); - mpz_set_str(table[25], "13815279797041280552720186314568403966545737871369705064766559811494734188027", 10); - mpz_set_str(table[26], "19561393465932093077685648643225631952888007098429905631747001246679379637440", 10); - mpz_set_str(table[27], "3495615599624531613075333101682602558027669176102938068556954036832042715415", 10); - mpz_set_str(table[28], "8334162264125275770604558435386557310529163222656981435373456701717868960645", 10); - mpz_set_str(table[29], "20841669381750057885887054103322811187310039039842891654876784667551679820042", 10); - mpz_set_str(table[30], "17667977812730381972837363042084318847453324729342983682484079872345697290859", 10); - mpz_set_str(table[31], "19339149357153080772366193183260489633836757821720736037459126656069926758607", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=34 -*/ -void EscalarMulWindow_30fcf37511301a2f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15875911062199926371498095980511757719974356118017025207452191285271959626514", 10); - mpz_set_str(table[3], "178747139732714499671082378739093809492327996372156726066416590617898897792", 10); - mpz_set_str(table[4], "7826654783429491017258147921041846249791161901149002238150638794321830395466", 10); - mpz_set_str(table[5], "13589397323854251814694731690768876400203004058286434214394593469708911021909", 10); - mpz_set_str(table[6], "20474756699133628477155925021937931128901864955506400481942743049903057470497", 10); - mpz_set_str(table[7], "5070941903020989692858102574665936456775364670539480939096160579330819773136", 10); - mpz_set_str(table[8], "4851169054918724584797688887483268238090417195533115328593173416927962457465", 10); - mpz_set_str(table[9], "10926179252005275564312492417636938548954690361385735439014396653931617545567", 10); - mpz_set_str(table[10], "50870938189711798761339858280641577937686355457268642871182135126856323535", 10); - mpz_set_str(table[11], "7323360937512738591748213083864018559576674213848580955293886926283432709627", 10); - mpz_set_str(table[12], "3361147809642974171867791053917470988562002274484111012130760663512585125061", 10); - mpz_set_str(table[13], "21122287488565582870435892222316447186168098593188725095516933011060293572376", 10); - mpz_set_str(table[14], "6957080009403386084693930686666920767604636483237773825378016660670217450999", 10); - mpz_set_str(table[15], "18933299108429235814487234324948510770039854597122547655549148751156789810097", 10); - mpz_set_str(table[16], "12193850678285567692848004866162198150237347520568427590247067967887960986075", 10); - mpz_set_str(table[17], "14650061018470073268723111844708350180773118348766533830577515284703355500339", 10); - mpz_set_str(table[18], "13474642233583180862540646115339515160589137028802007375276756730675411981509", 10); - mpz_set_str(table[19], "3232529435799214083021210427621210461704243940371525991379809573537419651715", 10); - mpz_set_str(table[20], "7928426861722110822278295237794149074980335794858757948340645606362065105478", 10); - mpz_set_str(table[21], "18482992353328856173249912164808336068691077969903999000703028830266638403092", 10); - mpz_set_str(table[22], "7885410042741481856095142430405412246616464845970522866351417874443041943470", 10); - mpz_set_str(table[23], "13816036465793603113901125066934917631143544428639505419021638855621178558448", 10); - mpz_set_str(table[24], "7907006722882189272851830618277571950124782196948954178758656984060426365930", 10); - mpz_set_str(table[25], "14036232750243678850242371102012650857610918619078088892968157641464511852612", 10); - mpz_set_str(table[26], "548910524703631901211481525286650441451464591735674477188236238312250964107", 10); - mpz_set_str(table[27], "14595793516380258731812663858971909237728845486560758279415060491055277721031", 10); - mpz_set_str(table[28], "18247996309089901700294917733879214735670249909299393623729083621866226148130", 10); - mpz_set_str(table[29], "8561227795221367187366439945366474615644110956125128709866671383597389957859", 10); - mpz_set_str(table[30], "7635325038301394085706955518139576271494920766053291956119121728555795660341", 10); - mpz_set_str(table[31], "3216431125838619160627662521470266821095667137979717515383198656492642642987", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=35 -*/ -void EscalarMulWindow_30fcf2751130187c(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "19105972882465355968133968061599637386179323537954194804073526782715611172996", 10); - mpz_set_str(table[3], "7764177565781562658969507170513918415400512021803616479767672855162379694117", 10); - mpz_set_str(table[4], "1646624596747509919420189126098586291442688782962040881882614036477851707528", 10); - mpz_set_str(table[5], "15082838508095945226762954581603391465662539925585231711520752514774904361605", 10); - mpz_set_str(table[6], "3382267008855000041616537578603950401596264548552538079496800417543291685078", 10); - mpz_set_str(table[7], "32870561403517543384374536882134534212017552792479474943765903319547414975", 10); - mpz_set_str(table[8], "476291833740146946129003667189933144953335610885887740174317848317130452767", 10); - mpz_set_str(table[9], "20484817482473367824156335970221123194761585452808851484408185961973461776087", 10); - mpz_set_str(table[10], "16564192402167974022139753888776796245007144426677586725580707576766649879505", 10); - mpz_set_str(table[11], "8386225926174280867762789968367434548789461340186490095158218478357499017719", 10); - mpz_set_str(table[12], "10073059428280416425828586204716528007198542840481172840670934563779162970926", 10); - mpz_set_str(table[13], "2798224432626616596039794854931760136250426588006449740194523811874646454736", 10); - mpz_set_str(table[14], "18053108463271355983079034628588459779758647994763557450012049690319368905228", 10); - mpz_set_str(table[15], "20993193069144636687107623928234535950528660052627837752874632244972554387297", 10); - mpz_set_str(table[16], "11655462847984269628391286719092071922510652621089935459903649151442391942076", 10); - mpz_set_str(table[17], "4189777862540452062035297177578940825117316771214598390681468741235237790670", 10); - mpz_set_str(table[18], "5543622901036320653695486873095241852154061430518364721226978243718863278928", 10); - mpz_set_str(table[19], "15549895581449726301857615376506567780637387081865274544358777437902226399776", 10); - mpz_set_str(table[20], "17931687619868426608254670027365897440067715468934535360302046861036691577569", 10); - mpz_set_str(table[21], "17482475084894962593835908572222795445468070938818092545357704781484709545223", 10); - mpz_set_str(table[22], "3538625899272821360338129339049061851825270824215536174082543028052243231308", 10); - mpz_set_str(table[23], "12227906941688482886243954521400791627617312020648935335114958440526736553724", 10); - mpz_set_str(table[24], "6635257779031831721200069664183269715686395165729111986270810641356554167099", 10); - mpz_set_str(table[25], "7462699467288352369914718340460407745225128237440659610297282066152490210719", 10); - mpz_set_str(table[26], "10612002187669735643090131466001153037401627348192663306317880994496511260439", 10); - mpz_set_str(table[27], "9575732335316919849712785071501363014533628017161728697144064693135872116928", 10); - mpz_set_str(table[28], "9240053069034767684895599163947942758818855492800226017425147997071268628233", 10); - mpz_set_str(table[29], "9432209020651518224438803512820455661009460501216687835750400777016900928319", 10); - mpz_set_str(table[30], "887344954239839119673219826104134921418825251582873014423002723166210705679", 10); - mpz_set_str(table[31], "17370129818504646684422337943316948923256683377145864511684064533421084098090", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=36 -*/ -void EscalarMulWindow_30fcf57511301d95(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "3134277644149395589798238525001585145804726105235070344560312350098318553102", 10); - mpz_set_str(table[3], "492137894928921384404811315076636299462987253351879552905638427803058414676", 10); - mpz_set_str(table[4], "18618091472863605759355021526677878877211451741600617028363561905200756085911", 10); - mpz_set_str(table[5], "10606051341588708591856167721668627982640129705172986724126605967758014101227", 10); - mpz_set_str(table[6], "9962252130421610724008493273955786344316016161501222291182529879262943795871", 10); - mpz_set_str(table[7], "16331662811616843423781934137472249327900397053960179436801541650865030516908", 10); - mpz_set_str(table[8], "20988771140156397715109240902745734263316566201217551914011102762866999662666", 10); - mpz_set_str(table[9], "8382959281540762215998129653686486986643532432404074449845553310962903384545", 10); - mpz_set_str(table[10], "14230799587544104542954334031284990296839610623088696741986319791720539256983", 10); - mpz_set_str(table[11], "7024963209352607931361358967036486610223827885106218059800428689281300178282", 10); - mpz_set_str(table[12], "143332440284833347173135475791749100543122344865203025317947054996701120256", 10); - mpz_set_str(table[13], "2042590466849023084234319860523612374101893006449921466561156857750142003767", 10); - mpz_set_str(table[14], "21473088632158949864466003722741178667555564739692599687334725690447722476702", 10); - mpz_set_str(table[15], "16650122474727879712307502780978082165058922591199066524102706084342864443823", 10); - mpz_set_str(table[16], "4990310450798232340598523273823745347423381097438895702622441590224125599082", 10); - mpz_set_str(table[17], "18664071485285166972514972705309562799116532010832161194738232757934584835181", 10); - mpz_set_str(table[18], "16820010279164699934670644778900757227383978000107596487283398723986831521561", 10); - mpz_set_str(table[19], "13835982601213904303487259327966023981733156506775649823853120583095076798968", 10); - mpz_set_str(table[20], "15389864463529977131259669654319107748561320836585944018779149041793082845213", 10); - mpz_set_str(table[21], "4811473078694343992282194499937363963492432559104467724916741342570078214451", 10); - mpz_set_str(table[22], "18990364719958310625290086296555771631732599381935412730967361413617098590151", 10); - mpz_set_str(table[23], "2795560767435199033978857207073607926950726617722149039943714185150684856475", 10); - mpz_set_str(table[24], "5372467964500217032851945452364399931206831760982400813920536889636758526890", 10); - mpz_set_str(table[25], "11291553082756704031480826205080301885301783043410656942539002186145275372779", 10); - mpz_set_str(table[26], "21792462695743873130178967900171157227868844462523713519883406160506641807270", 10); - mpz_set_str(table[27], "1110502247519702978707690098064843437978028686586712085416783072543930293413", 10); - mpz_set_str(table[28], "13002723368040994700073555297594529558543232181362521412469563541536486258562", 10); - mpz_set_str(table[29], "13749292037176590362234769166004419323606491235037343710701109765540275127757", 10); - mpz_set_str(table[30], "17971171973018167548753280244521054107922732029025548064108840466202712007191", 10); - mpz_set_str(table[31], "19630976315194062829888798934464004981499784836820504114915256012498295750915", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=37 -*/ -void EscalarMulWindow_30fcf47511301be2(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15033084295415377899075672151067308172745577382932608490904255938034580017189", 10); - mpz_set_str(table[3], "18216429734524717572824506734310306558154695810389547189875150902391959814808", 10); - mpz_set_str(table[4], "19006769156414964283197192658234148565197794094657317924619012676836860745309", 10); - mpz_set_str(table[5], "10140898452815482026842874984926258810031513573833549856364943398111389797107", 10); - mpz_set_str(table[6], "14031685555824062851073204665630622819718062184406549090904664320798076246235", 10); - mpz_set_str(table[7], "16443842820060580616590128410805970736451736956448643517593264245113182685029", 10); - mpz_set_str(table[8], "6431068573893536681227243771736905387656641815816688461535514493399056573125", 10); - mpz_set_str(table[9], "10873982177484819097996972273718769451814707052359429578637864974710726515973", 10); - mpz_set_str(table[10], "13136972641315045313883116158727523534674471574172120293593555162059935597588", 10); - mpz_set_str(table[11], "6528993031293690663390442599632660899449176481350346721205087030291261764711", 10); - mpz_set_str(table[12], "6874575649615588047260515227448774342689963112989853566355996850018547554417", 10); - mpz_set_str(table[13], "10072048383934424725303195345505299070672768280359087159240917808448672076599", 10); - mpz_set_str(table[14], "10006731266850431279012029989413252980507835344030681669302967255466466028191", 10); - mpz_set_str(table[15], "6725934438062502768377133448637447707769992358994904391716968897398254776481", 10); - mpz_set_str(table[16], "5665086430375521811021079668340685674067765252832818380242061759332107516355", 10); - mpz_set_str(table[17], "13079593700406862756309942094128818177154132310127710766400054203190204553223", 10); - mpz_set_str(table[18], "18371471894633819019596390270741904487270133604315411219207029529355473605867", 10); - mpz_set_str(table[19], "970279623878251530170601697875085394591542870416750273540480900892501517239", 10); - mpz_set_str(table[20], "13100939035978337400631123515652328406642787572990259147859441137296651813651", 10); - mpz_set_str(table[21], "13492211672685736030356122135551815466231691938892805298235372694065605825621", 10); - mpz_set_str(table[22], "10122849326492874551111116990054338322366818097827111821588092026888668533463", 10); - mpz_set_str(table[23], "3956914408265548727661516564055951244821552912170745144335485985302543031018", 10); - mpz_set_str(table[24], "12356430445803491164753468866721143365076177499438595124922984167209124264899", 10); - mpz_set_str(table[25], "6135195517452507756027915425053985250963029629802258712315758045928998558601", 10); - mpz_set_str(table[26], "20527980582038388419881158914832304222194911009063924317098044017085773171619", 10); - mpz_set_str(table[27], "11780932279096137561868909609212337619381412261079856215316476699575347566409", 10); - mpz_set_str(table[28], "1453548475925512572534863462892594024098066032582628181531404557186203050203", 10); - mpz_set_str(table[29], "10158581436776447839842057121724993240189958866018234013424995131171362364965", 10); - mpz_set_str(table[30], "16414541315470314627103213743353857715817684493883256629996232386138013667740", 10); - mpz_set_str(table[31], "5223509892848849453996301604693671081120141288501189854323407016278864411204", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=38 -*/ -void EscalarMulWindow_30fcf775113020fb(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11874327887513741187258035887212681462779759981094241684182313669225630438983", 10); - mpz_set_str(table[3], "4970235062395747284407832248453332835009484963076188523341014818372997303205", 10); - mpz_set_str(table[4], "17494953592715517721984200996388779526673020827341434155185482004105163437849", 10); - mpz_set_str(table[5], "16547765288481988729542455365289917021218131320286791852003095330268996692876", 10); - mpz_set_str(table[6], "5899833364008475094579927540530164666673640203356174188766808099140803256427", 10); - mpz_set_str(table[7], "8494650827031776378865624807029340967103184613850792104438643971944997523032", 10); - mpz_set_str(table[8], "16841443408975559401328562449699456210617910172550802774602676509306544483827", 10); - mpz_set_str(table[9], "17032386670898917105796563566491368189432531873173626948415576725093932509784", 10); - mpz_set_str(table[10], "4648108508063740788377643068156844411882865146061374771558465152281754629481", 10); - mpz_set_str(table[11], "2839148012480814949170466377095476137667835432277338954622504273217155080339", 10); - mpz_set_str(table[12], "4256551328942262172848066726195492939194222999818547185158522026036892114684", 10); - mpz_set_str(table[13], "17198288963549854730286824086231132877746107386581720065370179913908975094386", 10); - mpz_set_str(table[14], "21865735427984562307991529474671226931608710073734225296360345046602706633968", 10); - mpz_set_str(table[15], "14916476243974180114595077124226650061075948639814563322019481754135738076333", 10); - mpz_set_str(table[16], "5879939089268925421921681046756130811259733477702135897439505323928364710970", 10); - mpz_set_str(table[17], "20347262593842271671229320419836552109247710173879611698547632471527726494909", 10); - mpz_set_str(table[18], "2640441625161927823792890035470599675151234935487321583454236484659932057069", 10); - mpz_set_str(table[19], "13963169307457239860607226415944051870718399972152987616955557119213414013108", 10); - mpz_set_str(table[20], "20380181724127989271008942748060678368139061741838900631588531050383412286352", 10); - mpz_set_str(table[21], "8342484236577122462720299190847945387862385488327061913375291201980424469065", 10); - mpz_set_str(table[22], "5483041388647837327969193730715072222586519722134732524532808895297572886588", 10); - mpz_set_str(table[23], "20436016770728851564566865060939551896079816738215114482752203196367388889141", 10); - mpz_set_str(table[24], "1019493181818227232907888408216461176176468210350250647565448907483898972254", 10); - mpz_set_str(table[25], "6364560952232383929430683276761542287874119419461320463353756476512657907944", 10); - mpz_set_str(table[26], "4812206481530139718553394040674444505340783035685138858504040063931499404813", 10); - mpz_set_str(table[27], "204452113743561666620364375314510740201117562475070886347238746011154918182", 10); - mpz_set_str(table[28], "18476533153808399685798386939061271260417747857929122416289595284488122477727", 10); - mpz_set_str(table[29], "6711373593388755772156975629686862214280855835326244709606501035446117780391", 10); - mpz_set_str(table[30], "21216491588992448172266750355589972929276308392321473037834130236777788984394", 10); - mpz_set_str(table[31], "8489813618916172043542594776958371857465600082040389986658003865115640193026", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=39 -*/ -void EscalarMulWindow_30fcf67511301f48(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12758000968802636125517404458920772151792919082944194798001426726847425858117", 10); - mpz_set_str(table[3], "11594801851424409558024957917202192337988106426213427874499939959553823821732", 10); - mpz_set_str(table[4], "12035560600731380039763373639833995299793000379132989733130584239231044477693", 10); - mpz_set_str(table[5], "12946420964799654584575455997250813830517562317038225662965198193809456390432", 10); - mpz_set_str(table[6], "3138586264871376800262214484142803825304275303095300155503606735980839786503", 10); - mpz_set_str(table[7], "19430479698416667468741339402187216221020517340798712072888080109400820649858", 10); - mpz_set_str(table[8], "13195428079589703946578289363366533057406713176052423601806370321468805305700", 10); - mpz_set_str(table[9], "20808624548825445938495064916983231218414937777498166314196718589444207682122", 10); - mpz_set_str(table[10], "18589396410849897308831931728632723483846217038649676908746987325778293857028", 10); - mpz_set_str(table[11], "17173242863084370640380968588523839402675365466547040119136319020241485003151", 10); - mpz_set_str(table[12], "6026114531099575223979460888670319934925690821987331473931156018640076076963", 10); - mpz_set_str(table[13], "10944522828858039019132510434937282740521606461351486749570217442036478845874", 10); - mpz_set_str(table[14], "34150059281764650431821436908228815954757841984565927419185000363817641282", 10); - mpz_set_str(table[15], "4478119007167091196834401258278180621830543151764559811059282865138801682023", 10); - mpz_set_str(table[16], "3283788056071665545396685111925954081473640926114876273822794894244113795831", 10); - mpz_set_str(table[17], "1766115830447063643744016651508878884243885328299078624059122133526368219261", 10); - mpz_set_str(table[18], "2451271247015725100549068687208319421198166364456868701671925125981675685112", 10); - mpz_set_str(table[19], "14873404453921610533921074080989065234867509765014738886052042258773943459793", 10); - mpz_set_str(table[20], "14172397620216105504083628687138549871525109427167850510501112208248415712850", 10); - mpz_set_str(table[21], "5192991067265193547443926558117386704414333051212030814224141793648634711411", 10); - mpz_set_str(table[22], "14451519960893134378643444131639362432973374084051839573757703575714664653085", 10); - mpz_set_str(table[23], "19619914535909988164032934839018912342207134355088178795472511828926528454508", 10); - mpz_set_str(table[24], "1996048653261175746716291716850870413553500006476319575131932677472524980479", 10); - mpz_set_str(table[25], "7551492955245066431272820191052776845785782872554634205646809869918788321855", 10); - mpz_set_str(table[26], "9948214574963398273322680866422503861483935571775486104786112990838651071848", 10); - mpz_set_str(table[27], "18452906734585337124549455227510883759059747575010379045925578424223328418119", 10); - mpz_set_str(table[28], "9762064078805639645016504297589367085397017954782976213355221692823382882998", 10); - mpz_set_str(table[29], "20563234881495021119581745331271038081710250934492836574777376255333871636690", 10); - mpz_set_str(table[30], "5000068642251714369669555299697048083562649973594517218636586467895799540489", 10); - mpz_set_str(table[31], "8595196622384633454709610183673330654472199308943912085169927326308549471103", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=40 -*/ -void EscalarMulWindow_3100757511332cec(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12416241616792737509661702710359503722367059164242541992444845969483552004395", 10); - mpz_set_str(table[3], "13559498164610241744503598095521949842776090366949329140964432317484133961232", 10); - mpz_set_str(table[4], "13602037497083884501377762498018530382249266099268581729423006252758784149333", 10); - mpz_set_str(table[5], "16341441975129912256351056417287499894519389468726043809809613413613147289278", 10); - mpz_set_str(table[6], "1363593728785650925576980135823657854638236776562875613511914041272537461042", 10); - mpz_set_str(table[7], "21082936985101748657767517814409045314624794729585842931044949329655082036400", 10); - mpz_set_str(table[8], "9054921689762709790540716778668352250371073098762972776282806439527056273694", 10); - mpz_set_str(table[9], "4554807898339846001515632516328488763903664805996191151739605897820823846452", 10); - mpz_set_str(table[10], "4712431409656243716910572291678394340769967388981856320454016232528062515749", 10); - mpz_set_str(table[11], "4507080617568969332017984410692061656934228651769330596007178531196335064209", 10); - mpz_set_str(table[12], "1111100525166241937592879343881048191451102619880902725042523612142597032511", 10); - mpz_set_str(table[13], "17832951620169455701576137800654410758965265005827783809713607234971300513634", 10); - mpz_set_str(table[14], "6826584469996085018476254532009830477855832699624153285643838159296646008653", 10); - mpz_set_str(table[15], "4272009148619158782753656212068594551784574759338556048800461553575470168155", 10); - mpz_set_str(table[16], "1966182434773021004759363170544682577489246499753938055587165741426931171285", 10); - mpz_set_str(table[17], "1574773852853564326666662024177293437429719653234453470335149461587563846708", 10); - mpz_set_str(table[18], "3641141430839882104144484214566266790870521952218086544644759402963239647270", 10); - mpz_set_str(table[19], "14550981677262773796844315364795574328117252725275857863037073236245940606181", 10); - mpz_set_str(table[20], "8520357843575486535139001093873885270186652438063358503380653301056230899457", 10); - mpz_set_str(table[21], "19116621288700210204594414028863120716295042984740909157500986113678452206567", 10); - mpz_set_str(table[22], "6674612876670126891390045970534378967324714292998335658450716143073994306222", 10); - mpz_set_str(table[23], "721853364068464252120707348651008351258384110986232377002281880792049360941", 10); - mpz_set_str(table[24], "2608955336401820892781854749570538419317313539014235967690520596508846574408", 10); - mpz_set_str(table[25], "15242743804905463959456340409683908034115411985421257125934992762956817176425", 10); - mpz_set_str(table[26], "17443065644622572935481296196982646171338838498244741303833379140760571805077", 10); - mpz_set_str(table[27], "6407580971358881456152654133684121554848206732398504964455418248939062349362", 10); - mpz_set_str(table[28], "1523162805231210281753340210101792086967642688671673058886085066928039581400", 10); - mpz_set_str(table[29], "752832523310484818333298184041250205580747820420383766133420289175435035632", 10); - mpz_set_str(table[30], "4884576585897242673474713654411440662206841240531482194621018476423458323503", 10); - mpz_set_str(table[31], "16029582673014354221316799149860373259359022505191972894672595945608109987625", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=41 -*/ -void EscalarMulWindow_3100767511332e9f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "13507448775409688610473704225149413899988757427237348844684485592340129833964", 10); - mpz_set_str(table[3], "6118207740932454885806113827712155924554153678788155800600460093916101590338", 10); - mpz_set_str(table[4], "1701898783674169906740415414316237098366095355792165851633864280819588372162", 10); - mpz_set_str(table[5], "14425537442241009422770132058332867169394883792129559219515124143806642633304", 10); - mpz_set_str(table[6], "9324515987868048857617401069933950063586944995700400183083907580534524932224", 10); - mpz_set_str(table[7], "9662952566311686763072589113030480169358453591071215328124464730194883520235", 10); - mpz_set_str(table[8], "1189506187705813369442395960227473829641911009702951982743435208704207573868", 10); - mpz_set_str(table[9], "19436347075372374907100828314510499659668044878353375496229033293996081722349", 10); - mpz_set_str(table[10], "20205904123700913671651218823538112107997470076449908795953454939840783364503", 10); - mpz_set_str(table[11], "288718742844439137704045321535953567336649753169422464863321666846748345967", 10); - mpz_set_str(table[12], "4460441508583233426147538295225287248510465330166238424872864971296458127284", 10); - mpz_set_str(table[13], "6478536223777685864876251312455070551443374015433636976190739677044372162998", 10); - mpz_set_str(table[14], "20925400990901621889819562873973538568814566409490572864161346582539148206591", 10); - mpz_set_str(table[15], "4101997535405021140720700009494574849271730623605759663799043760728831602936", 10); - mpz_set_str(table[16], "20662675753403998558683414937410453812713669481364448142786870767718572925901", 10); - mpz_set_str(table[17], "7088564762919676079206774489341460053754796821073011885622534869406716514503", 10); - mpz_set_str(table[18], "14934684914487148200920724983087363407583252844941926979028795416070052428114", 10); - mpz_set_str(table[19], "14958372150879485968381171596136496415998652302678723608467328279471237268019", 10); - mpz_set_str(table[20], "20136538306200729077084402936709392126605176265339765762795540078131168325578", 10); - mpz_set_str(table[21], "1871594192909772081805577268488744157883073569926388046680911092748426224484", 10); - mpz_set_str(table[22], "4131515834290860929705701423376205747465872171321844651998782609675637193211", 10); - mpz_set_str(table[23], "7996044384742222455600456995999790841735962093593402634912201324677304684546", 10); - mpz_set_str(table[24], "21162277078212917664345160709854314426971259537592075201465404332420072210727", 10); - mpz_set_str(table[25], "6748179157560672802686392750429920132668860999027876242728832073333295820770", 10); - mpz_set_str(table[26], "10661425994038126158788969640861461118154815293266871375752043371342723613251", 10); - mpz_set_str(table[27], "2982585129520999781830352123712961692964129858406931354724677038761402294798", 10); - mpz_set_str(table[28], "9504007241560372327381200775770032453104430971136546432677165434175259621393", 10); - mpz_set_str(table[29], "10586472870678352216787100825335108059933635794036120581460845709798847306139", 10); - mpz_set_str(table[30], "6240355571552953538822109870047345727286138997302706715224040239630061955152", 10); - mpz_set_str(table[31], "2652918044312270523261795033407149966429403119867662155572996806126569182319", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=42 -*/ -void EscalarMulWindow_3100777511333052(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18622474418000713621427585433905734564753749154887074022744752206320244565988", 10); - mpz_set_str(table[3], "1694169127962983890158516524134310542570106792347197035731699112926898926002", 10); - mpz_set_str(table[4], "11938027776676130589849031629817961353625925794756643778300260107738378010820", 10); - mpz_set_str(table[5], "11050897949244235833248257229494011847396936066610396327047653390138834919222", 10); - mpz_set_str(table[6], "3159875049229288470022629277880117106258950649226874802693450990126905093317", 10); - mpz_set_str(table[7], "2241757845451216840480925431659171500634864740063913456227940181787260251674", 10); - mpz_set_str(table[8], "17430978066692280973704505096992302251736874070106867047106336932096814073315", 10); - mpz_set_str(table[9], "14631855299055935058545789298932254510553541912356291150320612930091112647754", 10); - mpz_set_str(table[10], "19516696988698721408017104475846450422800415928323414574172851128053666589447", 10); - mpz_set_str(table[11], "14867521286941727030431861808845332559456135182257719802632635394588730790980", 10); - mpz_set_str(table[12], "12220311138793944886062630150399915041818752848128770767703106604660700808495", 10); - mpz_set_str(table[13], "8720381016862821617780729179111522229150832087647171887341436591935170191079", 10); - mpz_set_str(table[14], "7196542366148061767476558401022766517352936022145989665473022411077445751494", 10); - mpz_set_str(table[15], "15394878384635277155635633917034592383273995682649366150099036179089317668851", 10); - mpz_set_str(table[16], "1103842342789030280974482417188564672533419579724060997600685285578290324142", 10); - mpz_set_str(table[17], "10860407578751763297701982269854806389189047221870944944951948201418858290901", 10); - mpz_set_str(table[18], "16747547952349656467023346042637313561034310744051474587396520015007930533606", 10); - mpz_set_str(table[19], "16094439326071621364720414325561115424704020589036440346269925376000688851241", 10); - mpz_set_str(table[20], "15208448011831833709820887425658659952260044949101303649007090091558652897229", 10); - mpz_set_str(table[21], "10536101346112059913885413606344143381638365603933582925260700126473515939903", 10); - mpz_set_str(table[22], "10476288939447759249526548426154695128756974016703870790093891871801777538511", 10); - mpz_set_str(table[23], "16539804698862497219464683421474606356626237728450154498918118985527829865940", 10); - mpz_set_str(table[24], "88706155831643915983643972196732684571843408331379481722180201803563699221", 10); - mpz_set_str(table[25], "5834195269879572550111739813703742996565008017443123553763260268696632530596", 10); - mpz_set_str(table[26], "21027943040153833873820518610534107941527659049024514536114842019543003699445", 10); - mpz_set_str(table[27], "3517647881896881027899596124716528272457060358685945905127151997486216920829", 10); - mpz_set_str(table[28], "20242408733448373641601973667084439091514388994721580062035009374200510222309", 10); - mpz_set_str(table[29], "18709534970056258370447686912655905668215804008186678399131807624235856915323", 10); - mpz_set_str(table[30], "2140382859882670711174208463966823297415144587669537539759088306088089230133", 10); - mpz_set_str(table[31], "4241523365174956868715681552514426497245992384860590100378872402682268052489", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=43 -*/ -void EscalarMulWindow_3100787511333205(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "7966091176304498827052432677819882274538175937105248704625282697353838114426", 10); - mpz_set_str(table[3], "9611026006252145137616324600454865831408839266540000631817838452962090281582", 10); - mpz_set_str(table[4], "15561147416487224635523501176376795227477310470986720606784853942384978181517", 10); - mpz_set_str(table[5], "20077999766994928168500745568046494546082668191298332163397318168472000094222", 10); - mpz_set_str(table[6], "20041651589746938158456339331630803469220993689027536834811365190568586931218", 10); - mpz_set_str(table[7], "7800893302715801200811866216162674032536796426186935773993414011659567799978", 10); - mpz_set_str(table[8], "6590992522636381425482749474800363644014024576362483302101275181245622937194", 10); - mpz_set_str(table[9], "8635620547308313824356575217443564422521664326576285468864253017082836620536", 10); - mpz_set_str(table[10], "19040079330062713559828583511795142209521710618677094400324441892418053305664", 10); - mpz_set_str(table[11], "19614474699071748675302952261662387921568109672528380029905044989831210612595", 10); - mpz_set_str(table[12], "21175957023272148912676938255857228014963126246823898230041066128185995810712", 10); - mpz_set_str(table[13], "15395143804358060528297476684725834284441716491931761775740871367012598293678", 10); - mpz_set_str(table[14], "3933045872818026578468171051671407248485967214972068685269644697708555060400", 10); - mpz_set_str(table[15], "9816803334151315339930488390829798076307170165808853158279946148440821758048", 10); - mpz_set_str(table[16], "9035369531925138804284221908935804256144988620704151839823382829513678219582", 10); - mpz_set_str(table[17], "16947575352543059080036876549254184643495673262217222330645975369833500467430", 10); - mpz_set_str(table[18], "21513814271743059815395879252759987188085206792522148405906651513466446245998", 10); - mpz_set_str(table[19], "19240503005985922621441764128911287104192477300198109867144736062366145972693", 10); - mpz_set_str(table[20], "9034505160641394104695820312698051548236743067226799075616989859032028353917", 10); - mpz_set_str(table[21], "1957743435076165209482433236437363422171588683674981510019917758370477038590", 10); - mpz_set_str(table[22], "18243815258135988113588132370743533194217032529262861351287344685852542990315", 10); - mpz_set_str(table[23], "10016537009628746990883717783322778906503462976089117722673791067342330416852", 10); - mpz_set_str(table[24], "4961086558468591819848728647029287956829849013897925390093983810630579408199", 10); - mpz_set_str(table[25], "17531972773081893067819248432719094385820081262925543533473643846726624647362", 10); - mpz_set_str(table[26], "19135920985361256178464326483888951855122649809638008237404088569456910120325", 10); - mpz_set_str(table[27], "9413731711679563313414982136690879771559493016695950915377851808266188156327", 10); - mpz_set_str(table[28], "307200760057838356477415312340134834246379021167099904688682827296584816888", 10); - mpz_set_str(table[29], "12118443903162824133722731168260722579728351979669215745749034964385159933809", 10); - mpz_set_str(table[30], "12069101818882262634728869954802186682402579206880340206873551830399254013244", 10); - mpz_set_str(table[31], "19778735655000389981492869546903236453487769726679341233625468787365656346672", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=44 -*/ -void EscalarMulWindow_3100717511332620(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "14888133855634568969061731048798176382027259106004783382378030523919860154203", 10); - mpz_set_str(table[3], "13970965849274593310478670080351334089021941719911990543665219379821969007096", 10); - mpz_set_str(table[4], "11143721722430027516116431321209403460927967345298070665259227292966788634758", 10); - mpz_set_str(table[5], "17710806516977177155131714482239811557674966937531990600624487133526384902313", 10); - mpz_set_str(table[6], "8600488251208055544855545811981610043085044454736905042231915530225281617623", 10); - mpz_set_str(table[7], "21215630415439041190958478624099865649899593621773085134337473012438132333100", 10); - mpz_set_str(table[8], "17332672643904141944192072690667161383740441798638000696411048436282443372044", 10); - mpz_set_str(table[9], "11849800907307749268559892895203021432861701445205355943086310449407284140883", 10); - mpz_set_str(table[10], "73464088065988711086908041617643500667352448415533091085897731146601634960", 10); - mpz_set_str(table[11], "496024715327203322177779323599767867740934623290108355846054589938379051617", 10); - mpz_set_str(table[12], "11127873028811329981987447865749525171545568669024744657523616483940632629780", 10); - mpz_set_str(table[13], "7198233336684606986529964414871102328500175958972326417830106303897887721973", 10); - mpz_set_str(table[14], "14913694501174126440758697245404361553377492549455379131180398401073385725313", 10); - mpz_set_str(table[15], "3005314020495265723507905833212263195476090414793396176530552601777761462686", 10); - mpz_set_str(table[16], "6980817897227962418955701279365699080173284836673003097432101710553971348606", 10); - mpz_set_str(table[17], "12769718016522630653136882998125804429576840542031501958967049606169929933864", 10); - mpz_set_str(table[18], "8372801751049913005750654237452494667858774846085126355735239789622958021289", 10); - mpz_set_str(table[19], "16029017521415844253786356649810689741419650863220813264622904633880539582406", 10); - mpz_set_str(table[20], "19476695748721831355371539753333874690218754373979655272961840699448549036942", 10); - mpz_set_str(table[21], "21249148456388228260040635070639180377950169791084292599096800719948478439425", 10); - mpz_set_str(table[22], "19666908137422236458493095910674637931068740198338983087978155870922387055421", 10); - mpz_set_str(table[23], "19962043380410021808655527387218133530776162882340334281843412159524380310139", 10); - mpz_set_str(table[24], "3468010851949114845382113514722053775630429483687304025667149478557953613528", 10); - mpz_set_str(table[25], "952485033363010317308825641797667284047534583490607905985126361447169654616", 10); - mpz_set_str(table[26], "3589298958967160302755346214401634176256662105144829643230139019476004446392", 10); - mpz_set_str(table[27], "16200536231075971314902850406932148717264394545765696629404972605399066149687", 10); - mpz_set_str(table[28], "8283245394328125429498598368340035800499597209031178156217337287155304423767", 10); - mpz_set_str(table[29], "10415654150818721530480417368530989837888699447816149286986248534082752078357", 10); - mpz_set_str(table[30], "19936608869334505564629131538306076659812056876589615338471775971008576555967", 10); - mpz_set_str(table[31], "7893915122914855246036270458773507670378370599202123400411563971872018279019", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=45 -*/ -void EscalarMulWindow_31007275113327d3(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9902616749484961598299692654503365890676603437422923154307898950573675691799", 10); - mpz_set_str(table[3], "3395360360050596061723679428758009141891424375869776300826995156115704624241", 10); - mpz_set_str(table[4], "16759530097436699833937131560380929010979008076550131932581563185297522016702", 10); - mpz_set_str(table[5], "17749228829503576342938283245784412940386305320487349029694202681131696959994", 10); - mpz_set_str(table[6], "16019315348798958924656194966919246354944408189009303079785898928644558904181", 10); - mpz_set_str(table[7], "8216345144012403775088320434705996942695231438776147261995169418331802758777", 10); - mpz_set_str(table[8], "14440595796112049913282722664442349554147163878099887988945359686493740220575", 10); - mpz_set_str(table[9], "12605747996639334238489995417802206381410126039028758487274734187864039465016", 10); - mpz_set_str(table[10], "13009043987168785003250435624694433217128032114632509147083558347036380017783", 10); - mpz_set_str(table[11], "1737719622641036112443264240959326631254886497367006982444346988971566616688", 10); - mpz_set_str(table[12], "5402498441401440683039757039705451191491706125761996448409021185061150125204", 10); - mpz_set_str(table[13], "18484457550496918829849336589967339982985444795640923953688712052561096061096", 10); - mpz_set_str(table[14], "20547719335717833433141075145728552247508140680305051575399619507247198380961", 10); - mpz_set_str(table[15], "19313330201831445440832645744606517854246644448265728482116030945911524247686", 10); - mpz_set_str(table[16], "7100315256853920540746824998676905838916534443458914553801754983465825101478", 10); - mpz_set_str(table[17], "16849157392929048397163558463492215528932487931328319676217271784688952560594", 10); - mpz_set_str(table[18], "15797869741926155893916467541479674294487274611531570541326412033714120646273", 10); - mpz_set_str(table[19], "14313110281809416338600909420723893621732008656398753444598800528317518939160", 10); - mpz_set_str(table[20], "3914943290393121496884237949428970663304012594435377852990275287306505001781", 10); - mpz_set_str(table[21], "1124318058979586797331748310626565685160446142236665368709166234106699356607", 10); - mpz_set_str(table[22], "2893881379644810640276884087536490373483491880458849543288801120206740428263", 10); - mpz_set_str(table[23], "20199722910070788740648772840234850364596102353945926856305972007905172156425", 10); - mpz_set_str(table[24], "11617526521892329284999100127276159769423755817604517644565972687247042936032", 10); - mpz_set_str(table[25], "17731656012378639184521520951134837628534894005642573667335920829630957619634", 10); - mpz_set_str(table[26], "18655161169619551389520669633419272530251074688307521636814070993393159309478", 10); - mpz_set_str(table[27], "9312678361392757562981301736658794572346304340953222831475831747429389627354", 10); - mpz_set_str(table[28], "8026517338903215127519545107057104618936966804994911758606567305781040242188", 10); - mpz_set_str(table[29], "4420792829768540581057154140922823832407188897565071374500706446229403638892", 10); - mpz_set_str(table[30], "21031462206259523430049295081291282715502825322852454132057930907401048955235", 10); - mpz_set_str(table[31], "7291628508573742286859498413350068205235090738827285120391714499222553007177", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=46 -*/ -void EscalarMulWindow_3100737511332986(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "5548387197420373117064229280559759249540214731675063068252772286573360393559", 10); - mpz_set_str(table[3], "21060190259360102308109978814772425159771481899386270152313333608512551921581", 10); - mpz_set_str(table[4], "8924253549021453448130097568672394207499453879633251861635303976268037324590", 10); - mpz_set_str(table[5], "3767520902098004358333157008413713800421756763638248885413049088024612992871", 10); - mpz_set_str(table[6], "16120919439723982428073698067832525849657128737358627524357171024760233301081", 10); - mpz_set_str(table[7], "21302568348030831548793439322084474036858050371941663100579693115772618396002", 10); - mpz_set_str(table[8], "15193750343803243351974302566744625709295001369378965611621856790022690147661", 10); - mpz_set_str(table[9], "11381520182388522999107041957375479209171418071990679048527006696160700684582", 10); - mpz_set_str(table[10], "19281517936163080077904623851907470976812421337832135046256236571396567616737", 10); - mpz_set_str(table[11], "3773264838716250734937566175564697693829549894268021176823435716392863598430", 10); - mpz_set_str(table[12], "19670638646425373167250509029543765062936221072661457050872213035541427149916", 10); - mpz_set_str(table[13], "14306019539208650080269150394453165191621243028300761767776826998920947732736", 10); - mpz_set_str(table[14], "1978020746074357142442530668348659743196194762283495030981019716369100297932", 10); - mpz_set_str(table[15], "11668504484481501606509807830205708358989022945285476233909671588520533245354", 10); - mpz_set_str(table[16], "13969481256680644954313528790995351228381743947002616906271136745361189403122", 10); - mpz_set_str(table[17], "2050810515492934568189284128319746705581725695946746145050036906488237641432", 10); - mpz_set_str(table[18], "13951300416378830085960669458155906650489433141017665561328196110249701790193", 10); - mpz_set_str(table[19], "18157599193368407628956964573822393397637167009622782513784960388137256216302", 10); - mpz_set_str(table[20], "15907227475005387219520297424511610083598605969878011738135488093363711743901", 10); - mpz_set_str(table[21], "13730821743963108417423311899890089348574747966518830744108907565067929402554", 10); - mpz_set_str(table[22], "3372590181917648349010257342038892667844895431408309450669535389012164486455", 10); - mpz_set_str(table[23], "18524978917874144121197803093019534946760011171304068324351809360945718674937", 10); - mpz_set_str(table[24], "16835279148355937739738969774738050152597100987038403110225253774066367358258", 10); - mpz_set_str(table[25], "10637278176836671026764341994008888346622121755858009734098808602278591502477", 10); - mpz_set_str(table[26], "5425897873841091984465754729172322328755777268803490072584949066856480821395", 10); - mpz_set_str(table[27], "11736870819331040275385705196249994148708453792568332019883507957222822774473", 10); - mpz_set_str(table[28], "17858501372350375892336624826813235305479888079504537810758734955102019315052", 10); - mpz_set_str(table[29], "21601825311034536724072639663169197332892148022696715023416460319341048286489", 10); - mpz_set_str(table[30], "17118850945829807733771548332115436318791381764266553317146989012644640834401", 10); - mpz_set_str(table[31], "21448750768493116141871782622904285645335688515468278845181118618543329422802", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=47 -*/ -void EscalarMulWindow_3100747511332b39(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11386571938819058696803600651408482297604186469440253602029065131145074400875", 10); - mpz_set_str(table[3], "3348329584264663431122740425482543130026920779856290339414845130037151449118", 10); - mpz_set_str(table[4], "21047114600430953708706071004607774642804431416815520272692054908406887682881", 10); - mpz_set_str(table[5], "21108297513642398392891079037955154310896447130401205289652726698454700314870", 10); - mpz_set_str(table[6], "13294328839868110370752981845818752117578302956908411091430780745377005857374", 10); - mpz_set_str(table[7], "18078036034494806149219379591645106192975355369001375397939872441709256329438", 10); - mpz_set_str(table[8], "4406040019663638638192232550330149211760093332829020055771061344319190984745", 10); - mpz_set_str(table[9], "9627340720395317715736634095409265207478483281312431070088788783813648661688", 10); - mpz_set_str(table[10], "2669432581523687777213610440790519187316728874641076041550598115629363817810", 10); - mpz_set_str(table[11], "20076487721079403370493786309193429899282983461517657854782489281379038993608", 10); - mpz_set_str(table[12], "1199489797481287465857257757156692713998600774749824340898823904200555031182", 10); - mpz_set_str(table[13], "18992140204723360808052615267597143413166448772645885861757620026587152710689", 10); - mpz_set_str(table[14], "20456146284928237099805446816310741348744758855341590061575528472105874001557", 10); - mpz_set_str(table[15], "15339517201853310471404229665186771707588060279267163907068339177208424528891", 10); - mpz_set_str(table[16], "2004517262136486688934242744041898195916397907544648468949990924775144844339", 10); - mpz_set_str(table[17], "9308569135981146406059465195904737982179841252578068732943612569462673065716", 10); - mpz_set_str(table[18], "9545021092430341852939352199287060580331661147216036890617206613703117932140", 10); - mpz_set_str(table[19], "1047088741471749312205783397711738847354374422073879921247948489039180410249", 10); - mpz_set_str(table[20], "12318251418478888219821787205340678496055439564106803039338061468546568940517", 10); - mpz_set_str(table[21], "10337538546031339781288870013594337337226697954742868349260421776891497664649", 10); - mpz_set_str(table[22], "4468793544093873191477334322379032719515983661750769000788706314088518480286", 10); - mpz_set_str(table[23], "15598537287667421113148191490051745985220520055514665443619722078432971172853", 10); - mpz_set_str(table[24], "7705999799023589912601817113066806668419981645493670373115711840958612019923", 10); - mpz_set_str(table[25], "561977050925919686655468563962476380643304414965639177564903105686927203145", 10); - mpz_set_str(table[26], "18056819733567999656100318096798714403150765707301199516347448815727309083630", 10); - mpz_set_str(table[27], "14320442678166458845052510620996957141348538187679119882925658000189820793333", 10); - mpz_set_str(table[28], "2529879567799889291146044779450592997782983058287035587007276360279146516610", 10); - mpz_set_str(table[29], "15806258750407171289361134420483747124902342900861663140382310272671577805176", 10); - mpz_set_str(table[30], "6639369965194342909759207991583959121857015098201173340876194811476624004342", 10); - mpz_set_str(table[31], "4895372596251639413611472055836862192021256933992055220575837992471288355713", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=48 -*/ -void EscalarMulWindow_31007d7511333a84(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9353407459615507340297958346561680933470740259606277383461922069991640562467", 10); - mpz_set_str(table[3], "19398333101670992384971347162611893877622578264460504029511112889295265024231", 10); - mpz_set_str(table[4], "7403409994724747716050199561996316978039299158677650901366467538509050838238", 10); - mpz_set_str(table[5], "18917954860563263926685927340987151646748002854188679290335681494324790595755", 10); - mpz_set_str(table[6], "16299744020180598759866194156026069538947788914321316977259846372606007627243", 10); - mpz_set_str(table[7], "20428219381972295141020235718361303932599621460399678977132239449922316521704", 10); - mpz_set_str(table[8], "5659214411664535564649203093355510395335232026559720032504558426119407679168", 10); - mpz_set_str(table[9], "15092553302421635111481611629477791702315702493848394389338147857196307007832", 10); - mpz_set_str(table[10], "13166084249042114332994859664438204842615652146304356708282981719465735141568", 10); - mpz_set_str(table[11], "17673083782379108748924817294922193766885348536552290071466462326860960637466", 10); - mpz_set_str(table[12], "14565295027139525973417394160599614128232882061651390408247261798999395929320", 10); - mpz_set_str(table[13], "8062181545277483271535396440679586384642208931201088437111423052237410743314", 10); - mpz_set_str(table[14], "15821592037972182911620794219825075141143608187149937528395667634039551784769", 10); - mpz_set_str(table[15], "8153028369684305129523651746891306318703818600306220057728192980907570036199", 10); - mpz_set_str(table[16], "1063806342650229085135728764529656606200018029149619736067507686581528943331", 10); - mpz_set_str(table[17], "2982981811360879316425860087532220815862242519890918416778490366922666711929", 10); - mpz_set_str(table[18], "12582349535695322143423603561381068075076209315482001462940962994563617040893", 10); - mpz_set_str(table[19], "19935473574848222023384151833990427819616776022112860787182552056319120546566", 10); - mpz_set_str(table[20], "2884448925281478893343813716855900231071667641018762022791880056555064702163", 10); - mpz_set_str(table[21], "14926342773465730750477861272117437298870443718938673687343741085624607736102", 10); - mpz_set_str(table[22], "5758662579463739446662635083575409017048944707234528292141988018657531908195", 10); - mpz_set_str(table[23], "9928124603040159394003729245598556209228022887666592330810606004389358878123", 10); - mpz_set_str(table[24], "1869034730102509554674627969840286765335813097573133758388100032970976398885", 10); - mpz_set_str(table[25], "10592769825539820940700993362703512012911979571781099925945743436518415588180", 10); - mpz_set_str(table[26], "11072503311770318877216813601674108838784353361307385437581289024664123520714", 10); - mpz_set_str(table[27], "19855780958978300853321667033277163882019339727038990975173701184980151622560", 10); - mpz_set_str(table[28], "566354030190725048395017374574731553808470890171924604251953696705285599515", 10); - mpz_set_str(table[29], "9955123523626955280107326070662480078999547830300561534399533357039829708066", 10); - mpz_set_str(table[30], "2697230334831173532868730371519559758056447985048998202505972675466958264327", 10); - mpz_set_str(table[31], "11930267608563562353000039410498646040854863336841825719518987251529790356327", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=49 -*/ -void EscalarMulWindow_31007e7511333c37(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11550029292334287077789485474502318318052299166258130708261218890935604689647", 10); - mpz_set_str(table[3], "4857763993976224954140861996750024065327776640284972342134138976572540524894", 10); - mpz_set_str(table[4], "16256168611509723213692143713369506432802840510456053811803434681859789384553", 10); - mpz_set_str(table[5], "7178839995825100234785533347556183854707431028009014034077419141019604121146", 10); - mpz_set_str(table[6], "10609829441372430717718913870660830683277815475695106585212441832714641430637", 10); - mpz_set_str(table[7], "9998918340968803462363370889322930126196179286006529740600235981287217329810", 10); - mpz_set_str(table[8], "1125104159749394439234543238014295578402128933255324392813219835559333359738", 10); - mpz_set_str(table[9], "8594159416651349591242730002424921274706708542158958317433398196352608677970", 10); - mpz_set_str(table[10], "7017692829444357600879842552699430298698374463327267749352000225988620732346", 10); - mpz_set_str(table[11], "17466164696456902630848471712698527167752927017009923072082415339832929140933", 10); - mpz_set_str(table[12], "9744425590027050988461564385935267533440993325193972937017986833619336298832", 10); - mpz_set_str(table[13], "14227739722050651388711087791556573924822687250356505382702535397594361936037", 10); - mpz_set_str(table[14], "3230131584585774248926385942821716282169874391854911678005767733675205044655", 10); - mpz_set_str(table[15], "19697160053079650655989059630740288322378393421580484729762230320215903199637", 10); - mpz_set_str(table[16], "20648701228093485830384292946112204035069489837960035313951700675103022162650", 10); - mpz_set_str(table[17], "12691267430920798044281118146673999830474786071481174759382623191313158539347", 10); - mpz_set_str(table[18], "166597440278122047371904134111956838594470349283289680958130635740424174180", 10); - mpz_set_str(table[19], "18171744037005326491347974410890291932933434218272871609584745022502570873827", 10); - mpz_set_str(table[20], "9340805231089631910361409046402045019597432215502588699487782222045042725565", 10); - mpz_set_str(table[21], "9895206783152355385887954378305203508286240911475663698452856689415367566578", 10); - mpz_set_str(table[22], "2051146987385986535645508089819755263283799313709319335415412013582930504171", 10); - mpz_set_str(table[23], "34557603005374266948930734256584603241220006500329198902896249171416724286", 10); - mpz_set_str(table[24], "6223661159580897273000792631776630537772036907913573842513714125555053320686", 10); - mpz_set_str(table[25], "2843656225914017592425178160430427271572144770630196541968366495658765691135", 10); - mpz_set_str(table[26], "15523223472860409216644948521422754359577325245323266205984623994856959048187", 10); - mpz_set_str(table[27], "8715820835995449705971255676531530286169212897961162568620102865431554514681", 10); - mpz_set_str(table[28], "950649793827276410801187686601733569459627376307932906739968078137372101942", 10); - mpz_set_str(table[29], "12099663126097958814333595809924370708549248803640222184571438444685936088429", 10); - mpz_set_str(table[30], "5108584720818090203512265121217613228424375410391397432109226473501152101096", 10); - mpz_set_str(table[31], "8632396216563722878192157965295037095555654129937687581965778657007027599419", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=50 -*/ -void EscalarMulWindow_3103fb7511364675(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "4302627033731539583590881421851582924665874587782832780278195201834216656227", 10); - mpz_set_str(table[3], "8269095588811032923214868664153512814877236110622329904766222490721228392383", 10); - mpz_set_str(table[4], "9547865063052360557770267876030406053388864656881550889207839544078046838444", 10); - mpz_set_str(table[5], "1771776812723859563124571047939775061660634894072771584772618556779200307456", 10); - mpz_set_str(table[6], "15435831373611488460840624945769402668038669175623385013558990884517063860647", 10); - mpz_set_str(table[7], "18667806379364163846574250454211001115475166537670228706977821036688470462878", 10); - mpz_set_str(table[8], "8782796459238222677529178985573056657672177392231773065921077461095340482078", 10); - mpz_set_str(table[9], "12311607834350777154333415926905788585427269740212726626142184702313820817223", 10); - mpz_set_str(table[10], "21697300200635238974864434785387906311551899594743079094700670936659536107841", 10); - mpz_set_str(table[11], "6813749232360402523776121131742703327539853366563439709701491235079391044070", 10); - mpz_set_str(table[12], "3186056671027403872325989864619410550284386117976877816245426932966706316283", 10); - mpz_set_str(table[13], "12829341780144579953714269710817954657899398333641530263390006961642073756686", 10); - mpz_set_str(table[14], "21370131215705685202668400547006851375616294060930093086310849174147518568254", 10); - mpz_set_str(table[15], "20261619886486820068565723052297241484458048899407370085251095582630773272894", 10); - mpz_set_str(table[16], "9317048267655864688341982626198820196421333150410827172631470410889510852439", 10); - mpz_set_str(table[17], "9917602791005245993426714527202188560442056191475073563573123233037450652827", 10); - mpz_set_str(table[18], "14346754277312303614149768761851643644944554479384532337719415567551284038467", 10); - mpz_set_str(table[19], "10345677819890522033658050708648032589136796411826826774250278630521342648252", 10); - mpz_set_str(table[20], "14978032825564742253485505811767197586912363794279745938645522944983821448201", 10); - mpz_set_str(table[21], "13475672903085998471704584819239278707564771706748226420340905290201451789224", 10); - mpz_set_str(table[22], "15365969981229369022128218512291786151935134831446420580106074440416460860492", 10); - mpz_set_str(table[23], "18740095528205175515739334837589593672168774840238681373270392701142211875316", 10); - mpz_set_str(table[24], "17073179608478242285211198500164563622801117572465953692467543166452745495145", 10); - mpz_set_str(table[25], "12484870275472035119960588036972343963837716564206634913738330085493602746840", 10); - mpz_set_str(table[26], "10363300328784732537796982275973151043471291918048777738181854823776957152031", 10); - mpz_set_str(table[27], "9862821770146023477874420548784580218906131694026979191648811963104597377678", 10); - mpz_set_str(table[28], "6433295991257769676659720013968263124476483031976983876730612687368513922694", 10); - mpz_set_str(table[29], "16355317280952078348008850759067897199775566380456453169430581760207051011638", 10); - mpz_set_str(table[30], "20063186459670578688140120057975347439079427526755237642082975083948095421382", 10); - mpz_set_str(table[31], "12651861313704360324738923878134575419263289405761427873957388292705700250324", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=51 -*/ -void EscalarMulWindow_3103fa75113644c2(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "11307898516253336212268605429717173530738912260240386777365385927635463396194", 10); - mpz_set_str(table[3], "14585930090616724857217942464438222268515684374672025246683998117421973727222", 10); - mpz_set_str(table[4], "20002701486348847660031182403391273085309594887814819258782577182288741796033", 10); - mpz_set_str(table[5], "1138553834537418730601815368380837313734850829412788077728096831582237562436", 10); - mpz_set_str(table[6], "10799306485190924107472867400451039347836509079112223774600222810480826332895", 10); - mpz_set_str(table[7], "10440707470739845847004931807388647573302452424248720742659067184033652950824", 10); - mpz_set_str(table[8], "2991180772308783189817013624196032444556763359465547611815427476205794879673", 10); - mpz_set_str(table[9], "2321665860034437385765778337913220461589370913074094052210850160808588693097", 10); - mpz_set_str(table[10], "10831117806827692206397622504973399506712818096936029932948670983396056749894", 10); - mpz_set_str(table[11], "20545059033944562652991880271128717714267570020129776310839251703000874031596", 10); - mpz_set_str(table[12], "12908606319411516405998805053931626605613784662757416773882991662667184297341", 10); - mpz_set_str(table[13], "19864888953423826852193063787250419364104119074341080569048504680002551234540", 10); - mpz_set_str(table[14], "18954047832363355499210097566706049973734540505910763823717872286425730585380", 10); - mpz_set_str(table[15], "1944845572735297294690425553673062024800855869150128326226150159810598016434", 10); - mpz_set_str(table[16], "5768529159880607231328893587813709446121884045676765088640340127563317590360", 10); - mpz_set_str(table[17], "19044180265184387743937377906918398481891294230054763490628596155311502286465", 10); - mpz_set_str(table[18], "10812144239490811837635295413876760787111795049744097056034718513104625916484", 10); - mpz_set_str(table[19], "16044310899670211189700468511258961288431400153246653250829734178610962583115", 10); - mpz_set_str(table[20], "19966332057621316604700416789900482936004843110630947974114164863016646389570", 10); - mpz_set_str(table[21], "6139614060014821996464818518666366260915600554588183024787039754097443421579", 10); - mpz_set_str(table[22], "21104771601646363121963524092941110387909002138660434984463552375800538927341", 10); - mpz_set_str(table[23], "2364598572346589596386077727848864548233031002279959919983429526736958058427", 10); - mpz_set_str(table[24], "6216933245648834638151901495571274671301884186238468571397147737925351724640", 10); - mpz_set_str(table[25], "85542955628974166314460367927582582445435063237719123163488080178409445395", 10); - mpz_set_str(table[26], "12207706844065404924463615679270817526842389458826399978435329991067891176164", 10); - mpz_set_str(table[27], "15388258710018413174636306638602608815090297524380042291561732260635937845254", 10); - mpz_set_str(table[28], "1429205012601060506644251652127697429939351293241864389552272544810604985075", 10); - mpz_set_str(table[29], "20807435512156829143768923725821924044719842545185106935444588021304141229557", 10); - mpz_set_str(table[30], "12486941398418307599529142462759685956226207008029312453757279533186555936701", 10); - mpz_set_str(table[31], "826868849095923044056779655388050356039302520812073981406082000050535458975", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=52 -*/ -void EscalarMulWindow_3103f9751136430f(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "20134073852284737960310994584056735539881108166780724913938227345482568357678", 10); - mpz_set_str(table[3], "16030886940290038379543182760717989024652004788979542994419064321569444941472", 10); - mpz_set_str(table[4], "19963394596326356819489855091012492177878419585279015486690723777053625700028", 10); - mpz_set_str(table[5], "14806472965253527465350659536526387197197158195041846435525623602094864884513", 10); - mpz_set_str(table[6], "1601683261880694426727685740805423203144142490009167610422567554314343919427", 10); - mpz_set_str(table[7], "20048135285255252842297222554842409236350984804516770750161835397714727989768", 10); - mpz_set_str(table[8], "11126092185518000644439916621476530130429022951635267445636405501734528825744", 10); - mpz_set_str(table[9], "10185117531779232571984817037810257722737980674056387331731973052420569478194", 10); - mpz_set_str(table[10], "12260097859080770031877002245996252301383748327184947266914992565126137101128", 10); - mpz_set_str(table[11], "6185220650612271141574466040495892991365203107354999925385448850969286167525", 10); - mpz_set_str(table[12], "14024443372680095135459728170192268969732671730470439751055825892743903011072", 10); - mpz_set_str(table[13], "17360531765426754267510502797214244178297579224456204241183094237739180451979", 10); - mpz_set_str(table[14], "8001754044879467164759654217301892825125962923331839594741896809586872864446", 10); - mpz_set_str(table[15], "19812876202832835501156443324149408210656219154595846013737657931736309080658", 10); - mpz_set_str(table[16], "16992605048069398488263350046819815833653837203333841369101540063958010910898", 10); - mpz_set_str(table[17], "10018817941802018759504576734598323079102235555984605351023845730328661694831", 10); - mpz_set_str(table[18], "14513545980688945383609321849051656814619430650059319537119328453928485651743", 10); - mpz_set_str(table[19], "9677493710718270961112401432015852640441827833427827422805258106766257607116", 10); - mpz_set_str(table[20], "19413312831183411518735800776955202546349448265158393030887090984457887642749", 10); - mpz_set_str(table[21], "8270375109967761463012171158194402258974113189745544322310378137826884262282", 10); - mpz_set_str(table[22], "11238664807357541606979556409967248472793455263121264864180422472598013569822", 10); - mpz_set_str(table[23], "7480023340849837721542369688744600286681747385355056617689846205078336601092", 10); - mpz_set_str(table[24], "19494412197906000955466199714427286178271665370964578957385297691900165341040", 10); - mpz_set_str(table[25], "18356178552154501290065998611779765688630660489507018649754866528177925533999", 10); - mpz_set_str(table[26], "20852456327855312184386131519721657883454891229290048535600580641443750438399", 10); - mpz_set_str(table[27], "14070060041442728889354665545848729721004902185937546707540438746762167004179", 10); - mpz_set_str(table[28], "15610642031144123140227314872733718358480438342132296569695507559452512795177", 10); - mpz_set_str(table[29], "19198004331353587227125706709717854339256375754129238724488437096054650493591", 10); - mpz_set_str(table[30], "2607916736602818314976170537964383406424487659100368117753144023131485777044", 10); - mpz_set_str(table[31], "20642684776575155851515682517648367682104723757265938626555038684433479310053", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=53 -*/ -void EscalarMulWindow_3103f8751136415c(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "9471790144309963354711579154240669565979958109019328445445514067079188706453", 10); - mpz_set_str(table[3], "7661061988940607334081239786163678068816320017689904291698311134541363459586", 10); - mpz_set_str(table[4], "15736778466688472206596554404132351380313196409320081031550581716046780586370", 10); - mpz_set_str(table[5], "5659720705768783217756971407396698692193007773752044999422064084082785406711", 10); - mpz_set_str(table[6], "1515625718994475057823965943385288898760642866237227724772988626136288432276", 10); - mpz_set_str(table[7], "19403252802969044169857808569817589291211939121093032588716990730705610205785", 10); - mpz_set_str(table[8], "6399219874394405733502963437521984944386900739700928032687886072090943579570", 10); - mpz_set_str(table[9], "10105984212021262688142627006204284084654134662004022029788761090604882619727", 10); - mpz_set_str(table[10], "5121039973129521501257780737594762117462633720253418660769677913426336242789", 10); - mpz_set_str(table[11], "17849769427089247765601918836616632733784223891279546998075563998794031622566", 10); - mpz_set_str(table[12], "20061822913515989540944515625390754307296663157462879500640242306067578634703", 10); - mpz_set_str(table[13], "16219181115037946603601779137655924002173683209576896437912830704618720521790", 10); - mpz_set_str(table[14], "2953631873393509987210963854683339405169139679715768157109520355266627192250", 10); - mpz_set_str(table[15], "16537866103438580748037463534413780593674469743758750479960868891771017447112", 10); - mpz_set_str(table[16], "12103174523200155445763293484911234993862340877058571057958190442902429313841", 10); - mpz_set_str(table[17], "17727566573166472920088564265296436697319157577004859416697208120516352841756", 10); - mpz_set_str(table[18], "5795244933710418736837752855584275514019607857618924484059822970932201037812", 10); - mpz_set_str(table[19], "20405480735238523728716859674068268632766401583115738916447291755191267714609", 10); - mpz_set_str(table[20], "3451678764966498344401373177103850902731173001437256472229629082256786373092", 10); - mpz_set_str(table[21], "15510252044949559866768040241839210520106478163849323635940118615288678181860", 10); - mpz_set_str(table[22], "8707549680064937904405220940888913393223664588137940659927262586690686668453", 10); - mpz_set_str(table[23], "15425738389646623966719449880585598089293786297739643007660615068116109677552", 10); - mpz_set_str(table[24], "16117547446044078140769490704030375963043138274345344027393219255920501572722", 10); - mpz_set_str(table[25], "14566484784700618711926552401468556956013853027877219370182883988207291065731", 10); - mpz_set_str(table[26], "9578687415154201600565379801245504306433043126897617162360766246492302430865", 10); - mpz_set_str(table[27], "11465559028391775359079892490002993400941223205318554500216740638489526435416", 10); - mpz_set_str(table[28], "21013328395390738262471095892350636698759972778863803858807351662793133844476", 10); - mpz_set_str(table[29], "3239151816420009502090254136578539267839500559376437647515835324944173145994", 10); - mpz_set_str(table[30], "4102054991066510564551038741050571146818079803865813992829797852620151443656", 10); - mpz_set_str(table[31], "3883851110745434106034813102667802216301778998133943725871264634605746938161", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=54 -*/ -void EscalarMulWindow_3103f77511363fa9(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12710241444393840241444373488608092735401345802013735473564715530172661261837", 10); - mpz_set_str(table[3], "21062513588594879763719218018603879900636499451991670319090734153387396586485", 10); - mpz_set_str(table[4], "3337962021630885202291452691099985258279897263661989150426674758109620606753", 10); - mpz_set_str(table[5], "21273690313665956433738524506785916979724850285772736605524090483721088185957", 10); - mpz_set_str(table[6], "7062568709351439894641236926721880129845962446856932352057094218795833351091", 10); - mpz_set_str(table[7], "19176758032035576084469281080189172056409371326298316687019280412424122358845", 10); - mpz_set_str(table[8], "18700803408735962456440156638088484045969462426841014321271417380506163576015", 10); - mpz_set_str(table[9], "4201009895193523679790412294093016914215278601359665850510452386466917321363", 10); - mpz_set_str(table[10], "6350113705557994061493527793424762366333443648860085163591602606133413224628", 10); - mpz_set_str(table[11], "13284100591949209635480456431253949138344593497043891366966237083990553036004", 10); - mpz_set_str(table[12], "10962840714891950227107826817162839674101878329501005125583766825424155667226", 10); - mpz_set_str(table[13], "173037207271443519282278263693729175285248727312756577837749366522679976501", 10); - mpz_set_str(table[14], "20465479571365048741569355022848980464757365476269177496001919323358075205469", 10); - mpz_set_str(table[15], "9276534302427970263414657657126707602717504457575276220277033035611007199359", 10); - mpz_set_str(table[16], "10030304900673959755851711903728678409666173173200272445827526680123105354001", 10); - mpz_set_str(table[17], "5843180947702850417469818047024829534541077201655256795556483963966577966415", 10); - mpz_set_str(table[18], "10255991850806226830144066190612105963844187253134418293982395044094412745053", 10); - mpz_set_str(table[19], "20680276893186481679246193213439773233074101300926416589184757027349787781507", 10); - mpz_set_str(table[20], "9154983088509023137566054874877009962303017087413715413701151571084589810220", 10); - mpz_set_str(table[21], "18994223852476769907893781362060658565335866764954390610322822816430334360932", 10); - mpz_set_str(table[22], "6437001655346824546551239148111737453611017039913469320538158189766929699323", 10); - mpz_set_str(table[23], "8707050947285572977748204187552485981486895381454376317941206612017691178544", 10); - mpz_set_str(table[24], "1841393170079948874015326567390285244163419887661696585996876329883366211661", 10); - mpz_set_str(table[25], "33750025319208354057534804766967356410254673729654634229546062382263110785", 10); - mpz_set_str(table[26], "13773384542089651797797611750093315983903156669451740498644408004207728025176", 10); - mpz_set_str(table[27], "6028133113480809859246434148092275091908599182169621306834822691819183179386", 10); - mpz_set_str(table[28], "9312699939180151527031347304668400708507081677597515705826389865267116417632", 10); - mpz_set_str(table[29], "12310039720550826754272912756514107997493294827897666578554058125719758023477", 10); - mpz_set_str(table[30], "15280602162987523566491034769639584898613756110991745557870555964441568960845", 10); - mpz_set_str(table[31], "21409557010127077534551523935329301560894331453254282266279206377280843254446", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=55 -*/ -void EscalarMulWindow_3103f67511363df6(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "15569509731463808354799947527085997010232400539214722032102095166586456507156", 10); - mpz_set_str(table[3], "847655824552965664665983803913306950502172234773950904080216045962718046079", 10); - mpz_set_str(table[4], "17343250303322136140712734191181058972130149344181144729973662612850749140033", 10); - mpz_set_str(table[5], "4135619949902765536673362860169749978469854339731244217296869419459239108182", 10); - mpz_set_str(table[6], "289229275183227001965228900096871817349664294468177722878017585462331066498", 10); - mpz_set_str(table[7], "5844288640455872867858913999954395773097311439445253407286197744069916443321", 10); - mpz_set_str(table[8], "8346230471634125647995579684874874353803350902974097176637414671779362512784", 10); - mpz_set_str(table[9], "14708728294170877160017249008960517392081465863541980164835044794161528000137", 10); - mpz_set_str(table[10], "5502905629776813500445131361790771159624916583770996489402087204904046621382", 10); - mpz_set_str(table[11], "9887520866573723571080767054094544071171065108417105094251065139610276762976", 10); - mpz_set_str(table[12], "16480974059501878141752883699359590903810057067203827828327268039305250201346", 10); - mpz_set_str(table[13], "14497044394856016756491096345365947163281516004534327152943119450552715080521", 10); - mpz_set_str(table[14], "12727040357200777210201436324067150333516841615474041867148309899018585657190", 10); - mpz_set_str(table[15], "21661197524161179811996622091199955183208337895023284118086242581966365614994", 10); - mpz_set_str(table[16], "18483318172896860230824109090185501644500825468321523965081782129698195331708", 10); - mpz_set_str(table[17], "1940383939506965902563629163298650925170023430255171291101920893147300846347", 10); - mpz_set_str(table[18], "9203239731084772491527714023262413806113553590443600757100249425530157373578", 10); - mpz_set_str(table[19], "18526372368265502175995678857081165617912344077280559372896636599965633075181", 10); - mpz_set_str(table[20], "19250485013055316169868428892681083272656577498989134895410573328032709192087", 10); - mpz_set_str(table[21], "19653736545396208933081349209814454706446333915598431178777365832215366501241", 10); - mpz_set_str(table[22], "11108064741923172918925873393575747159897270458049278929698555620359881739180", 10); - mpz_set_str(table[23], "6739079307038753282397868165545757372653656871046420244564514615855794260323", 10); - mpz_set_str(table[24], "16101172123060664912221547062758291102079492404020125142807222277993998584789", 10); - mpz_set_str(table[25], "14926095400796387217564523917697025100042889231728227670200888649380934389192", 10); - mpz_set_str(table[26], "3495721938567074564321726667409710693862608887724226550438435209341715149288", 10); - mpz_set_str(table[27], "19916786701428167683149817905614326625821387210949530372471233336874037365855", 10); - mpz_set_str(table[28], "21150555535304912321837298768378924163080318859924010354720448866344342840867", 10); - mpz_set_str(table[29], "2427122773211488702727200651311082908932816102239375843974048801736014103589", 10); - mpz_set_str(table[30], "162238947847889377980962591283729271071297629239464525398913686524030097133", 10); - mpz_set_str(table[31], "12085709889475146773112012595093050404965195234674333728078225631215554685609", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=56 -*/ -void EscalarMulWindow_3103f57511363c43(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "10337386278232558623910671969352401184684442870550504253214357719883615910641", 10); - mpz_set_str(table[3], "1612420639928585840644839171092190452010380536028455235539103495382595838270", 10); - mpz_set_str(table[4], "15174363165307969422318822464827015798757380964895294719744964937883209378873", 10); - mpz_set_str(table[5], "3103632537654959745635213984989040784149480270767304536009304917682296630703", 10); - mpz_set_str(table[6], "6330366766736357305261886601303184731617190785995262968961461474764083429826", 10); - mpz_set_str(table[7], "9998221204358926006776741584354492060541438320013993836652450142067350062034", 10); - mpz_set_str(table[8], "9480231520447889470096148245406542141345886516666843799810728214062139533685", 10); - mpz_set_str(table[9], "1567978059549882203194695500210825100521695921557966081361410403092508691983", 10); - mpz_set_str(table[10], "19760936466286491729624349700607920516431497611331019743354286930187475760236", 10); - mpz_set_str(table[11], "14677553660089969717962453966782521818670535991726643564440470019237498888545", 10); - mpz_set_str(table[12], "6980866081290044942101162036572808624897291566263495578471488628987559925106", 10); - mpz_set_str(table[13], "8156401784498649236937075454985749480997963371551340514217985746643785887151", 10); - mpz_set_str(table[14], "19879620290539104863895435770573810715651225330988885962324530317610264303709", 10); - mpz_set_str(table[15], "16360585570621609069137389277541577032449820129557431749057364337207268075355", 10); - mpz_set_str(table[16], "14141432428886969912197748880826293871323937806070927824281896531250659189419", 10); - mpz_set_str(table[17], "11079237197536160342397234464198834315431750459355355647374316460115127341982", 10); - mpz_set_str(table[18], "14666904754881895608265563821653554554693177520673022372014955519250367718160", 10); - mpz_set_str(table[19], "9381982065706129432287624987893380372460590674274135849093079664203674490518", 10); - mpz_set_str(table[20], "6289613545683086313609229465729106636631615082470351446181017048638373497558", 10); - mpz_set_str(table[21], "21244069980869175187915949211779095149759290931082897259194547514272875803022", 10); - mpz_set_str(table[22], "4159097115517485716734601154846450853116695661507648676889228728045958814608", 10); - mpz_set_str(table[23], "17642321593369764880399347342177994534136672309900094985992478609745240517763", 10); - mpz_set_str(table[24], "18393010734825134826911578692690391920211288242459015594205360292156830861705", 10); - mpz_set_str(table[25], "12093756100710773236778849889834681718188399355529104140684006431662912359397", 10); - mpz_set_str(table[26], "5877932045332725532926365227022143908891619540132121689854338430769657157262", 10); - mpz_set_str(table[27], "14625496793293222534270883546532950650835746337890550312886317792533843841934", 10); - mpz_set_str(table[28], "8469715332755649897825593509009689490868120895133565325296814800138233919439", 10); - mpz_set_str(table[29], "16914633452502096472303758599887851743021511976496498515486978052757893922019", 10); - mpz_set_str(table[30], "10917453721829066251250332574445862364638112841780214636392792070106571900932", 10); - mpz_set_str(table[31], "9060359750672058272342903482306165293235121395604406567619459600244304717794", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=57 -*/ -void EscalarMulWindow_3103f47511363a90(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "825826398613128988017232851661370900698491777008099065971660493023187864445", 10); - mpz_set_str(table[3], "10554589176317453577509116902103327990560872939997483317636552279547306653150", 10); - mpz_set_str(table[4], "7741922719806587766598420240393344063682407983199748724656654309250014470593", 10); - mpz_set_str(table[5], "20545796873410277625177939613361930559491817226024659752255540340154460619062", 10); - mpz_set_str(table[6], "12404507002934727264624698793324985452770099659201976609994223345571819557328", 10); - mpz_set_str(table[7], "10505575881586869480849090637555279486168656527556936315594830018392495009783", 10); - mpz_set_str(table[8], "14052658127363582162025964487521860507188610187851688089099418541413755553368", 10); - mpz_set_str(table[9], "9850954037525120563184696381061004964680110828174235670063629741637776626555", 10); - mpz_set_str(table[10], "8110202815012375236349886342429735622430199988476084868893339145526947301613", 10); - mpz_set_str(table[11], "10921406965680794741382855154482318058436571026412504949179183509783435455075", 10); - mpz_set_str(table[12], "20726324874087899988612500493385411950678010973105566875254021548556133975", 10); - mpz_set_str(table[13], "21575966413151975806748514996979724198956410726461211291795264736644214997092", 10); - mpz_set_str(table[14], "2438721688319181495143988292625315062119629542950247473307949090025565909212", 10); - mpz_set_str(table[15], "19688483698802742345387092067539336774912216020683037865068314276433134131534", 10); - mpz_set_str(table[16], "4212168126422394646575473365250714731914991083489514159634871877328752685311", 10); - mpz_set_str(table[17], "20686141691064959751428962930863775529968930385908862180101065458427521352091", 10); - mpz_set_str(table[18], "14499587505707204466587579551736659464614416608495611080986088370161862440923", 10); - mpz_set_str(table[19], "15401444974721048166199595914333660232711457710190306875945606656281865244479", 10); - mpz_set_str(table[20], "4057798905336790888200216032459428972126173266097972116647074359002996038586", 10); - mpz_set_str(table[21], "10567476768718487219881667513811438614178156073942269577104798381952557776779", 10); - mpz_set_str(table[22], "6428761324722381204556594796867100348392573470136547833708017341360052769053", 10); - mpz_set_str(table[23], "16313223805791963248538284903801513057220938939817347734206684784116795164595", 10); - mpz_set_str(table[24], "14802286557699357192615496032342292746653938513884666632894634867957994669857", 10); - mpz_set_str(table[25], "10039398335426206737520495178360938343270799248168396293128854885442357392706", 10); - mpz_set_str(table[26], "8717845621784296369051053507638609578567636687159595904869687801311292252290", 10); - mpz_set_str(table[27], "10512611554295596380748449225658641217960695369935150078337337954401088551104", 10); - mpz_set_str(table[28], "11798561098106765582114192314571118251035172258430904505231309071634181159352", 10); - mpz_set_str(table[29], "16371561162154216181088638295852733091501680013063133738779393762963953295463", 10); - mpz_set_str(table[30], "16570592823478876905170491584688783392612376969533732786062150186774178166848", 10); - mpz_set_str(table[31], "16483049098299217007960359198983764130425795812890413143530977367858955686199", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=58 -*/ -void EscalarMulWindow_310403751136540d(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "18148013772681295323313729926974144081761473650209963955905858599379365062867", 10); - mpz_set_str(table[3], "1934180223901113416258239993398380627420471822875616354289531717172636142737", 10); - mpz_set_str(table[4], "17486031304851396604181097365398558531561317823624895460094740530426071194783", 10); - mpz_set_str(table[5], "4904786464797837987030683608367392045696177375888822091092638797461299071938", 10); - mpz_set_str(table[6], "15093148461803611108888718259103660278027423393233532995695713493465614542889", 10); - mpz_set_str(table[7], "16435431947786590534273773258832636761259513429785919918417192556926468572977", 10); - mpz_set_str(table[8], "18469877554390492424033931955266424735401266331402111500423257934787363507611", 10); - mpz_set_str(table[9], "20253084736650341182131650836265785065757433481691531636494288844742648132519", 10); - mpz_set_str(table[10], "860709475750823310885820244116047886916099329387045649710070904927712506661", 10); - mpz_set_str(table[11], "18033072851734554795579901105706892536342543298742394779755885912347292046193", 10); - mpz_set_str(table[12], "12217466147017628574212766325198705664565522629830079368551092529749883105961", 10); - mpz_set_str(table[13], "11719313560784042607887596063019493778425854696531836459986743363106580886610", 10); - mpz_set_str(table[14], "10725506545576627867157913615352272792336853955067307830628069270520982113428", 10); - mpz_set_str(table[15], "1683718870099799879046479549743497757451627208515512263694816604259507974302", 10); - mpz_set_str(table[16], "20784352424807529623595959278191003000422365915582565004218054585170396451804", 10); - mpz_set_str(table[17], "2125249384284160991492461510467146733977564048389797904927133918284010711181", 10); - mpz_set_str(table[18], "6565931438230232985041064369658220145445025575106392786028402058083378257391", 10); - mpz_set_str(table[19], "6353261624734749073722531324002575785284280457639897916658242231384875594487", 10); - mpz_set_str(table[20], "1191894879914081900025856099513091626968608413261606524230263480862174473790", 10); - mpz_set_str(table[21], "19011136325078281878459948418423384806550806409516655953024338028790133160832", 10); - mpz_set_str(table[22], "16952894269675486228166020538548661670026842114446906133245893204396378466088", 10); - mpz_set_str(table[23], "20275335494660589151048567716238431136328232781683801247021943155934354830573", 10); - mpz_set_str(table[24], "19223345718360980548860790251632926297913586546924424790407231952305638289259", 10); - mpz_set_str(table[25], "19259194146386639151009155789773486353833880915974880675576831447366534501092", 10); - mpz_set_str(table[26], "4817471030982599753932980113754955418614019159781584542495277203922397838608", 10); - mpz_set_str(table[27], "9874459493437021908303245421801813281823130766080508802360698309777134808730", 10); - mpz_set_str(table[28], "16852530365158061624378137341458788937547698728119556493193873898424076923257", 10); - mpz_set_str(table[29], "5038712665731941557484734852448475752754664097767671098388288211612423770113", 10); - mpz_set_str(table[30], "17712494484024029516420745373637793356409574771706910104239899748279885360484", 10); - mpz_set_str(table[31], "21682789105728053044840284556958683477931469744426812598195554806708578103626", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=59 -*/ -void EscalarMulWindow_310402751136525a(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "13201213420513133631946710890249929024043453210523691767325983875458841395163", 10); - mpz_set_str(table[3], "19189193772717264607978461736798607540009183941607988719093695862287599768316", 10); - mpz_set_str(table[4], "265099668210425069426032934484741808861476649385577362440472659869570754556", 10); - mpz_set_str(table[5], "4772306342397303489364969494987328875238096127612466100550612671599186363070", 10); - mpz_set_str(table[6], "9635954623993416737758947263833406269272701524300732265268466767525441956543", 10); - mpz_set_str(table[7], "12235855927072075206066613991683886718920716765231876264279453058605925342751", 10); - mpz_set_str(table[8], "9285818088987365337131858971826109471512371893231806398140766760393160233473", 10); - mpz_set_str(table[9], "19934374536979131247685743678277580239582587138332787130640292319304606646315", 10); - mpz_set_str(table[10], "18060805946488613544873802136469647299331392912108766231393560438177878823201", 10); - mpz_set_str(table[11], "11379814885634430159698976533488030011070700474099622971158567916966433789937", 10); - mpz_set_str(table[12], "6864073189081075653601759887496530903767248296715650078166738679311064038992", 10); - mpz_set_str(table[13], "954930391635216420052125687462335675583165538625113420448792828533314949589", 10); - mpz_set_str(table[14], "9001449387857646792593881815364980208437527895191549223473477672363754796203", 10); - mpz_set_str(table[15], "9951500986680191663490372358760514061921296650803060926447254021036302044051", 10); - mpz_set_str(table[16], "19718976903851058008475055401653131705192756003499102971032195561882012679425", 10); - mpz_set_str(table[17], "15174550403514799958881548585631420568532058082297338970739157805972042301170", 10); - mpz_set_str(table[18], "4101718753859799407893687617658454693685923494837053440673987374535604249868", 10); - mpz_set_str(table[19], "20549646018435516318815788832040114807249035973708996435350455903662876830195", 10); - mpz_set_str(table[20], "3646348971155663167078300436004800703182518455384428098628582343293936312713", 10); - mpz_set_str(table[21], "16784309560178865998174512628497525090839470210059578374058850372069570107298", 10); - mpz_set_str(table[22], "17382745693654589811727490647516647478546800200109160448507447202279758295983", 10); - mpz_set_str(table[23], "16110449051230697536150454624054860354141156002210297797931736588795557856902", 10); - mpz_set_str(table[24], "2174121364834107791894364998715059735995539457974331890171266849994509979443", 10); - mpz_set_str(table[25], "13823257600462786612074247247321984582055270395839968294354358506599604031904", 10); - mpz_set_str(table[26], "12926954318331197864838833724345310621060273970863187658164166929600245531862", 10); - mpz_set_str(table[27], "7063397132223206848794851884577990059648019130883044337773488769940230781007", 10); - mpz_set_str(table[28], "19042204117135364186557198033309072641040161562969924728486693938220831603554", 10); - mpz_set_str(table[29], "5760010797365010887796625952901667899803957687203303391641263298943162569429", 10); - mpz_set_str(table[30], "16243651326792731304554982075999921755291212921867127807733603100596864437220", 10); - mpz_set_str(table[31], "5739255654707932952650019252527735981103907587068196326732082725534084524445", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=60 -*/ -void EscalarMulWindow_310701751138867e(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "12286294471024767972418304223091891467424718643344831746327316255105013265308", 10); - mpz_set_str(table[3], "4001255280591196308426960767325018473344475545975814090810688460192215073155", 10); - mpz_set_str(table[4], "7338615797537906521462561536524900046882101619681098455063245632223235107260", 10); - mpz_set_str(table[5], "3301215797153104089410993402785874986310793079533186632945245028294273822714", 10); - mpz_set_str(table[6], "9863559329668340142151685261678331687652635640674281144358302225770891563384", 10); - mpz_set_str(table[7], "3532670162435061062512414308937148543002384328988503750405308979593281309967", 10); - mpz_set_str(table[8], "12807007651407926849531070107972704761861486253097576959076058809001011642914", 10); - mpz_set_str(table[9], "2407681705366546342190097491952454585978673125857369048705800533199245470234", 10); - mpz_set_str(table[10], "20411540599541401106955518440752444498819379048475236763152566532547237598919", 10); - mpz_set_str(table[11], "13750271450979663548210190433453800219183100415984763158692574214412010037438", 10); - mpz_set_str(table[12], "19147474762997683443174629980910746918881861820641258726823806154524971895798", 10); - mpz_set_str(table[13], "18095652603013053345262683641635395791317681750975154970027082779523857869627", 10); - mpz_set_str(table[14], "21299146461700361028406839478653590865798115450959114213692721082822750754732", 10); - mpz_set_str(table[15], "6637055795339397543222585259358384041596552115201577863134694052094491638605", 10); - mpz_set_str(table[16], "1941726336802434062909924897880447861847591067225483797974285098969930688013", 10); - mpz_set_str(table[17], "3791037693551707665887625624205652110752319962824302138222196362189984832890", 10); - mpz_set_str(table[18], "6552661231901866178501414461737078728551509930908515965504473735545644303199", 10); - mpz_set_str(table[19], "18074050693809441777471881507172383966494938949796625993397949068797538919411", 10); - mpz_set_str(table[20], "10670375986147547836746850006291913978074489861375211865501070753884676834603", 10); - mpz_set_str(table[21], "19423278176664305454881898734202762769407838107765892779863409604164460315876", 10); - mpz_set_str(table[22], "20308093751945518538976082464921508808055875499621983141965748693209298339016", 10); - mpz_set_str(table[23], "1516653181144633937135448621504167322572489130659402081879739722033859501682", 10); - mpz_set_str(table[24], "13037768788360809473165904880957545062214028539891277259165798238391540534603", 10); - mpz_set_str(table[25], "9556759030671051686046709436565179488687661496508826818264063193198794024510", 10); - mpz_set_str(table[26], "2406707624228397990759459995363681383705229679604585677866603093924221234543", 10); - mpz_set_str(table[27], "19099971485738052081256185932837043334898663325166117430829537795963951846517", 10); - mpz_set_str(table[28], "2117928231944965902118545119881471991642868691073361847875283846090795669060", 10); - mpz_set_str(table[29], "5135559544631262351286622723473301642962284807688249036413426569125828748163", 10); - mpz_set_str(table[30], "7379641312200595368782619998618047167897375049825170305984079801800346819147", 10); - mpz_set_str(table[31], "8480658133846085031375740896696096373006436359406492894156427480156865226412", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=61 -*/ -void EscalarMulWindow_3107027511388831(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6446496076490518960659682938305999336925534151245963517541567007447087975521", 10); - mpz_set_str(table[3], "2019648216255836384797932721821490491897267682589786839312300147860587669821", 10); - mpz_set_str(table[4], "20150046980542677940373916206783938419864065182332530203515586787026057426873", 10); - mpz_set_str(table[5], "8733497576866329749708230570378809239935415731302206757338927512435838669097", 10); - mpz_set_str(table[6], "9853435745364794967839773370134593975308688489645892220203708763208814470825", 10); - mpz_set_str(table[7], "13960741987783249427299525680006182886088700645717377202947333678694287312595", 10); - mpz_set_str(table[8], "5944803001529712599490509949317545723797627357952459058181823237999748765905", 10); - mpz_set_str(table[9], "16026374841299431450806234976468703584808497693229370259839241226338369387763", 10); - mpz_set_str(table[10], "8843829247382871456521924277750112236994730426881068520333015773383139172617", 10); - mpz_set_str(table[11], "16369125777486302415003732200850490635632739602196575546589645811686749093193", 10); - mpz_set_str(table[12], "14173405151893571766162218843345994200834683286147521513959028749158748079528", 10); - mpz_set_str(table[13], "3117050602382662130126580577498655757277006650180383614413984534523162336949", 10); - mpz_set_str(table[14], "21305513345954555636084623816208563984973267896169765298739719654691200409117", 10); - mpz_set_str(table[15], "6764023343324142166928111854512448386891528073362612545186998524282393010947", 10); - mpz_set_str(table[16], "17697942416743474789602659896752899553232686006571679601627096957631910451919", 10); - mpz_set_str(table[17], "16100771358981608102145579490242672554694513690355413142737038499055185258203", 10); - mpz_set_str(table[18], "9424873268866230860947713004343829865160624434386955757426040049365918196000", 10); - mpz_set_str(table[19], "14244359717894321046234094776956282951093590375772103209395367550524403470666", 10); - mpz_set_str(table[20], "6096465518088079793078226441796311106032781985851722201486103507417758959008", 10); - mpz_set_str(table[21], "19963266803276623826710490736822267678484896174357158691334533691588698656550", 10); - mpz_set_str(table[22], "13464231294097937476492585830608262782189537666296746662634131087232498136956", 10); - mpz_set_str(table[23], "17147580724826769366471074936495546519182950017179197236809304308615847540681", 10); - mpz_set_str(table[24], "10002529640883611031216439987268033543478846999298954290943295416757038303003", 10); - mpz_set_str(table[25], "13604649250761515301540260682988436278759439438054416933154369079725596688437", 10); - mpz_set_str(table[26], "7803705618321573191621093459415272262733199922548621714534543475611568675945", 10); - mpz_set_str(table[27], "16988497400125190531242979021306175394959283781563114688356565360814068232447", 10); - mpz_set_str(table[28], "15004279328443652981359762002440989030008542063375036030564391273438614538322", 10); - mpz_set_str(table[29], "21745407852202215283005389363150027727405608988532589597871543914927993108207", 10); - mpz_set_str(table[30], "20294146956031974829624449729800275000538652739624482122211889106131125941403", 10); - mpz_set_str(table[31], "16185910233486748383614554206992923087462183035937848213966773554338833167972", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -EscalarMulWindow -base=[2671756056509184035029146175565761955751135805354291559563293617232983272177,2663205510731142763556352975002641716101654201788071096152948830924149045094] -k=62 -sel[2]=0 -sel[3]=0 -*/ -void EscalarMulWindow_d9853d1d04a8f6cb(Circom_CalcWit *ctx) { - // Header - int _compIdx; - int _sigIdx; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_1; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _tmp_2 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _compIdx_1; - int _sigIdx_2; - Circom_Sizes _sigSizes_2; - PBigInt _v_7; - int _offset_13; - int _sigIdx_3; - Circom_Sizes _sigSizes_3; - PBigInt _v_8; - int _offset_15; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - PBigInt _v_9; - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _v_10; - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "4", 10); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - PBigInt _v_11; - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "16", 10); - PBigInt _tmp_5 = ctx->allocBigInts(1); - int _cond_1; - int _compIdx_2; - int _sigIdx_4; - Circom_Sizes _sigSizes_4; - PBigInt _v_12; - int _offset_22; - PBigInt _v_13; - int _offset_24; - PBigInt table = ctx->allocBigInts(32); - PBigInt _v_14; - int _compIdx_3; - int _sigIdx_5; - Circom_Sizes _sigSizes_5; - PBigInt _v_15; - int _offset_26; - PBigInt _v_16; - int _offset_28; - PBigInt _v_17; - PBigInt _v_18; - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "16", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - int _compIdx_4; - int _sigIdx_6; - int _sigIdx_7; - Circom_Sizes _sigSizes_6; - int _offset_32; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - int _compIdx_5; - int _sigIdx_8; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - int _offset_33; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - int _compIdx_6; - int _sigIdx_10; - int _compIdx_7; - int _sigIdx_11; - Circom_Sizes _sigSizes_8; - int _offset_34; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - int _compIdx_8; - int _sigIdx_12; - int _compIdx_9; - int _sigIdx_13; - Circom_Sizes _sigSizes_9; - int _offset_35; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _compIdx_10; - int _sigIdx_14; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - int _sigIdx_15; - Circom_Sizes _sigSizes_10; - int _offset_36; - int _compIdx_11; - int _sigIdx_16; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - int _sigIdx_17; - Circom_Sizes _sigSizes_11; - int _offset_37; - - - /* signal input in[2] */ - - /* signal input sel[4] */ - - /* signal output out[2] */ - - /* var table */ - - /* component mux */ - - /* component adder */ - - /* var i */ - - /* table = EscalarMulW4Table(base, k) */ - - /* mux = MultiMux4(2) */ - - /* adder = BabyAdd() */ - - /* for (i=0,i<4,i++) */ - - /* sel[i] ==> mux.s[i] */ - _compIdx = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx = ctx->getSignalOffset(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _sigSizes = ctx->getSignalSizes(_compIdx, 0xaf63ee4c86020b22LL /* s */); - _offset_6 = _sigIdx + 0*_sigSizes[1]; - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _offset_8 = _sigIdx_1 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue); - ctx->setSignal(_compIdx, _offset_6, _sigValue); - mpz_set_str(_tmp_2[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_2); - while (_cond) { - - /* sel[i] ==> mux.s[i] */ - _compIdx_1 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_2 = ctx->getSignalOffset(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _sigSizes_2 = ctx->getSignalSizes(_compIdx_1, 0xaf63ee4c86020b22LL /* s */); - _v_7 = i + 0; - _offset_13 = _sigIdx_2 + ctx->field->toInt(_v_7)*_sigSizes_2[1]; - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x823b7f195ce2008bLL /* sel */); - _v_8 = i + 0; - _offset_15 = _sigIdx_3 + ctx->field->toInt(_v_8)*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_15, _sigValue_1); - ctx->setSignal(_compIdx_1, _offset_13, _sigValue_1); - _v_9 = i + 0; - ctx->field->add(_tmp_3, _v_9, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_3, 1); - _v_10 = i + 0; - ctx->field->lt(_tmp_4,_v_10,_const); - _cond = ctx->field->isTrue(_tmp_4); - } - - /* for (i=0,i<16,i++) */ - mpz_set_str(_num_4[0], "0", 10); - ctx->field->copyn(i, _num_4, 1); - _v_11 = i + 0; - ctx->field->lt(_tmp_5,_v_11,_const_1); - _cond_1 = ctx->field->isTrue(_tmp_5); - while (_cond_1) { - - /* mux.c[0][i] <== table[i][0] */ - _compIdx_2 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_4 = ctx->getSignalOffset(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_4 = ctx->getSignalSizes(_compIdx_2, 0xaf63de4c8601eff2LL /* c */); - _v_12 = i + 0; - _offset_22 = _sigIdx_4 + 0*_sigSizes_4[1] + ctx->field->toInt(_v_12)*_sigSizes_4[2]; - _v_13 = i + 0; - _offset_24 = ctx->field->toInt(_v_13)*2; - mpz_set_str(table[0], "0", 10); - mpz_set_str(table[1], "1", 10); - mpz_set_str(table[2], "6600834736095245391512368390411939590435383499809669289380392845967064057444", 10); - mpz_set_str(table[3], "1633434512792176902074648870945712028805008561742690591809872912129322248868", 10); - mpz_set_str(table[4], "16996318184956492942334646502712398459263974492360527679252913249520280570008", 10); - mpz_set_str(table[5], "19606106315039262061760392521792128729767050629444225388723754740612433373386", 10); - mpz_set_str(table[6], "19586249309441326420684158143227957922016964341400617150716942139045539181111", 10); - mpz_set_str(table[7], "1208971139685368024795229629123810712875363508652069176395900886322510155758", 10); - mpz_set_str(table[8], "7869430521407597508798694428486217896494164647651577096591908839179071816740", 10); - mpz_set_str(table[9], "2652002923612297664473349871307018470220720037371726066312417414363660735086", 10); - mpz_set_str(table[10], "19806604190927879117707398304164556469195833479644524852012470482356718380880", 10); - mpz_set_str(table[11], "10370086847876734926453946709787936557202271162431876667347439751886220791666", 10); - mpz_set_str(table[12], "2663629767540826004599981448534395517152473372480358812000815224554928456003", 10); - mpz_set_str(table[13], "9207732235973302533798065671040586053961210222960930811174724149896608057124", 10); - mpz_set_str(table[14], "15917834070138736481164712347131848355117927532235269522922208460805083710705", 10); - mpz_set_str(table[15], "13857571900858294657632494210200724431892241857560695406558696003046825117484", 10); - mpz_set_str(table[16], "70699033622291437248962604873968124418887292826447617994920193024392713075", 10); - mpz_set_str(table[17], "19838570974144894989479244511589773211125982144332318455369737113713811404408", 10); - mpz_set_str(table[18], "19916976267145920230607748108885506802631509537457663942653049639113153858817", 10); - mpz_set_str(table[19], "11591387735997900425994172721934925589958176079025009803405218201210114710024", 10); - mpz_set_str(table[20], "5138476365150979254117712435041963869004737393241390301149424700428140688804", 10); - mpz_set_str(table[21], "6715445107578362767060517282302740222189549195128518916519837730534436011988", 10); - mpz_set_str(table[22], "13808264826417046217275063640364739087608330819572913807331215420630258967632", 10); - mpz_set_str(table[23], "9747575873342827607333156657556591675053380437399410151299831040828092472235", 10); - mpz_set_str(table[24], "2636099407502932083457822735627413352598609469535775234991465804303069025190", 10); - mpz_set_str(table[25], "13308756045457775495570327854914600747139220312592957456749212221476182719874", 10); - mpz_set_str(table[26], "19323047059641902004766987260279125592640378720679649563286822052474610814780", 10); - mpz_set_str(table[27], "20353430351869962234584612643290197573449327507636178189220891078775877443701", 10); - mpz_set_str(table[28], "15542459110336791601835818219714853234659346918957562242740672684181966602331", 10); - mpz_set_str(table[29], "9165065992188962046717881241800694352779992196524897483850794077193256916683", 10); - mpz_set_str(table[30], "21135819146441038971961464709565881455773756910784526860750156523681008320853", 10); - mpz_set_str(table[31], "8479806898753630888209219305141397336190454856444754658577405239025189300917", 10); - _v_14 = table + _offset_24; - ctx->setSignal(_compIdx_2, _offset_22, _v_14); - - /* mux.c[1][i] <== table[i][1] */ - _compIdx_3 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_5 = ctx->getSignalOffset(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _sigSizes_5 = ctx->getSignalSizes(_compIdx_3, 0xaf63de4c8601eff2LL /* c */); - _v_15 = i + 0; - _offset_26 = _sigIdx_5 + 1*_sigSizes_5[1] + ctx->field->toInt(_v_15)*_sigSizes_5[2]; - _v_16 = i + 0; - _offset_28 = ctx->field->toInt(_v_16)*2 + 1; - _v_17 = table + _offset_28; - ctx->setSignal(_compIdx_3, _offset_26, _v_17); - _v_18 = i + 0; - ctx->field->add(_tmp_6, _v_18, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_6, 1); - _v_19 = i + 0; - ctx->field->lt(_tmp_7,_v_19,_const_2); - _cond_1 = ctx->field->isTrue(_tmp_7); - } - - /* in[0] ==> adder.x1 */ - _compIdx_4 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_6 = ctx->getSignalOffset(_compIdx_4, 0x08f10707b58d70c2LL /* x1 */); - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_32 = _sigIdx_7 + 0*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_32, _sigValue_2); - ctx->setSignal(_compIdx_4, _sigIdx_6, _sigValue_2); - - /* in[1] ==> adder.y1 */ - _compIdx_5 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_8 = ctx->getSignalOffset(_compIdx_5, 0x08ed8307b58a5a9fLL /* y1 */); - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - _offset_33 = _sigIdx_9 + 1*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_33, _sigValue_3); - ctx->setSignal(_compIdx_5, _sigIdx_8, _sigValue_3); - - /* mux.out[0] ==> adder.x2 */ - _compIdx_6 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_10 = ctx->getSignalOffset(_compIdx_6, 0x08f10607b58d6f0fLL /* x2 */); - _compIdx_7 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_11 = ctx->getSignalOffset(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_8 = ctx->getSignalSizes(_compIdx_7, 0x19f79b1921bbcfffLL /* out */); - _offset_34 = _sigIdx_11 + 0*_sigSizes_8[1]; - ctx->getSignal(_compIdx_7, _offset_34, _sigValue_4); - ctx->setSignal(_compIdx_6, _sigIdx_10, _sigValue_4); - - /* mux.out[1] ==> adder.y2 */ - _compIdx_8 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_12 = ctx->getSignalOffset(_compIdx_8, 0x08ed8407b58a5c52LL /* y2 */); - _compIdx_9 = ctx->getSubComponentOffset(ctx->cIdx, 0x07e65919174a287dLL /* mux */); - _sigIdx_13 = ctx->getSignalOffset(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_9 = ctx->getSignalSizes(_compIdx_9, 0x19f79b1921bbcfffLL /* out */); - _offset_35 = _sigIdx_13 + 1*_sigSizes_9[1]; - ctx->getSignal(_compIdx_9, _offset_35, _sigValue_5); - ctx->setSignal(_compIdx_8, _sigIdx_12, _sigValue_5); - - /* adder.xout ==> out[0] */ - _compIdx_10 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_14 = ctx->getSignalOffset(_compIdx_10, 0x9479dd5455b31c79LL /* xout */); - ctx->getSignal(_compIdx_10, _sigIdx_14, _sigValue_6); - _sigIdx_15 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_10 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_36 = _sigIdx_15 + 0*_sigSizes_10[1]; - ctx->setSignal(ctx->cIdx, _offset_36, _sigValue_6); - - /* adder.yout ==> out[1] */ - _compIdx_11 = ctx->getSubComponentOffset(ctx->cIdx, 0x235decfdfd543243LL /* adder */); - _sigIdx_16 = ctx->getSignalOffset(_compIdx_11, 0xd3470749a88bd6f8LL /* yout */); - ctx->getSignal(_compIdx_11, _sigIdx_16, _sigValue_7); - _sigIdx_17 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_11 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_37 = _sigIdx_17 + 1*_sigSizes_11[1]; - ctx->setSignal(ctx->cIdx, _offset_37, _sigValue_7); - - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_5, 1); - ctx->freeBigInts(table, 32); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_sigValue_7, 1); -} - -/* -Num2Bits -n=250 -*/ -void Num2Bits_615abe7f710c8f9d(Circom_CalcWit *ctx) { - // Header - int _sigIdx; - PBigInt _sigValue = ctx->allocBigInts(1); - PBigInt _const; - _const = ctx->allocBigInts(1); - mpz_set_str(_const[0], "0", 10); - PBigInt _tmp_1 = ctx->allocBigInts(1); - PBigInt _const_1; - _const_1 = ctx->allocBigInts(1); - mpz_set_str(_const_1[0], "1", 10); - PBigInt _tmp_2 = ctx->allocBigInts(1); - int _sigIdx_1; - Circom_Sizes _sigSizes; - int _offset_6; - int _sigIdx_2; - Circom_Sizes _sigSizes_1; - int _offset_8; - PBigInt _sigValue_1 = ctx->allocBigInts(1); - int _sigIdx_3; - Circom_Sizes _sigSizes_2; - int _offset_10; - PBigInt _sigValue_2 = ctx->allocBigInts(1); - PBigInt _const_2; - _const_2 = ctx->allocBigInts(1); - mpz_set_str(_const_2[0], "1", 10); - PBigInt _tmp_3 = ctx->allocBigInts(1); - PBigInt _tmp_4 = ctx->allocBigInts(1); - PBigInt _num_4 = ctx->allocBigInts(1); - int _sigIdx_4; - Circom_Sizes _sigSizes_3; - int _offset_13; - PBigInt _sigValue_3 = ctx->allocBigInts(1); - PBigInt _const_3; - _const_3 = ctx->allocBigInts(1); - mpz_set_str(_const_3[0], "1", 10); - PBigInt _tmp_6 = ctx->allocBigInts(1); - PBigInt _const_4; - _const_4 = ctx->allocBigInts(1); - mpz_set_str(_const_4[0], "0", 10); - PBigInt _tmp_7 = ctx->allocBigInts(1); - PBigInt lc1 = ctx->allocBigInts(1); - PBigInt _tmp_9 = ctx->allocBigInts(1); - PBigInt i = ctx->allocBigInts(1); - int _cond; - int _sigIdx_5; - PBigInt _sigValue_4 = ctx->allocBigInts(1); - PBigInt _v_12; - PBigInt _tmp_10 = ctx->allocBigInts(1); - PBigInt _const_5; - _const_5 = ctx->allocBigInts(1); - mpz_set_str(_const_5[0], "1", 10); - PBigInt _tmp_11 = ctx->allocBigInts(1); - int _sigIdx_6; - Circom_Sizes _sigSizes_4; - PBigInt _v_13; - int _offset_22; - int _sigIdx_7; - Circom_Sizes _sigSizes_5; - PBigInt _v_14; - int _offset_24; - PBigInt _sigValue_5 = ctx->allocBigInts(1); - int _sigIdx_8; - Circom_Sizes _sigSizes_6; - PBigInt _v_15; - int _offset_26; - PBigInt _sigValue_6 = ctx->allocBigInts(1); - PBigInt _const_6; - _const_6 = ctx->allocBigInts(1); - mpz_set_str(_const_6[0], "1", 10); - PBigInt _tmp_12 = ctx->allocBigInts(1); - PBigInt _tmp_13 = ctx->allocBigInts(1); - PBigInt _num_8 = ctx->allocBigInts(1); - PBigInt _v_16; - int _sigIdx_9; - Circom_Sizes _sigSizes_7; - PBigInt _v_17; - int _offset_29; - PBigInt _sigValue_7 = ctx->allocBigInts(1); - PBigInt _v_18; - PBigInt _const_7; - _const_7 = ctx->allocBigInts(1); - mpz_set_str(_const_7[0], "2", 10); - PBigInt _tmp_14 = ctx->allocBigInts(1); - PBigInt _tmp_15 = ctx->allocBigInts(1); - PBigInt _tmp_16 = ctx->allocBigInts(1); - PBigInt _v_19; - PBigInt _tmp_17 = ctx->allocBigInts(1); - PBigInt _v_20; - PBigInt _const_8; - _const_8 = ctx->allocBigInts(1); - mpz_set_str(_const_8[0], "250", 10); - PBigInt _tmp_18 = ctx->allocBigInts(1); - PBigInt _v_22; - int _sigIdx_10; - PBigInt _sigValue_8 = ctx->allocBigInts(1); - - - /* signal input in */ - - /* signal output out[n] */ - - /* var lc1=0 */ - - /* for (var i = 0,i> i) & 1 */ - _sigIdx = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx, _sigValue); - ctx->field->shr(_tmp_1,_sigValue,_const); - ctx->field->band(_tmp_2,_tmp_1,_const_1); - _sigIdx_1 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_6 = _sigIdx_1 + 0*_sigSizes[1]; - ctx->setSignal(ctx->cIdx, _offset_6, _tmp_2); - - /* out[i] * (out[i] -1 ) === 0 */ - _sigIdx_2 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_1 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_8 = _sigIdx_2 + 0*_sigSizes_1[1]; - ctx->getSignal(ctx->cIdx, _offset_8, _sigValue_1); - _sigIdx_3 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_2 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_10 = _sigIdx_3 + 0*_sigSizes_2[1]; - ctx->getSignal(ctx->cIdx, _offset_10, _sigValue_2); - ctx->field->sub(_tmp_3,_sigValue_2,_const_2); - ctx->field->mul(_tmp_4,_sigValue_1,_tmp_3); - ctx->checkConstraint(_tmp_4, _num_4, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); - /* lc1 += out[i] * 2**i */ - _sigIdx_4 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_3 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _offset_13 = _sigIdx_4 + 0*_sigSizes_3[1]; - ctx->getSignal(ctx->cIdx, _offset_13, _sigValue_3); - ctx->field->mul(_tmp_6,_sigValue_3,_const_3); - ctx->field->add(_tmp_7,_const_4,_tmp_6); - ctx->field->copyn(lc1, _tmp_7, 1); - mpz_set_str(_tmp_9[0], "1", 10); - mpz_set_str(i[0], "1", 10); - _cond = ctx->field->isTrue(_tmp_9); - while (_cond) { - - /* out[i] <-- (in >> i) & 1 */ - _sigIdx_5 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx_5, _sigValue_4); - _v_12 = i + 0; - ctx->field->shr(_tmp_10,_sigValue_4,_v_12); - ctx->field->band(_tmp_11,_tmp_10,_const_5); - _sigIdx_6 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_4 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_13 = i + 0; - _offset_22 = _sigIdx_6 + ctx->field->toInt(_v_13)*_sigSizes_4[1]; - ctx->setSignal(ctx->cIdx, _offset_22, _tmp_11); - - /* out[i] * (out[i] -1 ) === 0 */ - _sigIdx_7 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_5 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_14 = i + 0; - _offset_24 = _sigIdx_7 + ctx->field->toInt(_v_14)*_sigSizes_5[1]; - ctx->getSignal(ctx->cIdx, _offset_24, _sigValue_5); - _sigIdx_8 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_6 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_15 = i + 0; - _offset_26 = _sigIdx_8 + ctx->field->toInt(_v_15)*_sigSizes_6[1]; - ctx->getSignal(ctx->cIdx, _offset_26, _sigValue_6); - ctx->field->sub(_tmp_12,_sigValue_6,_const_6); - ctx->field->mul(_tmp_13,_sigValue_5,_tmp_12); - ctx->checkConstraint(_tmp_13, _num_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:31:8"); - /* lc1 += out[i] * 2**i */ - _v_16 = lc1 + 0; - _sigIdx_9 = ctx->getSignalOffset(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _sigSizes_7 = ctx->getSignalSizes(ctx->cIdx, 0x19f79b1921bbcfffLL /* out */); - _v_17 = i + 0; - _offset_29 = _sigIdx_9 + ctx->field->toInt(_v_17)*_sigSizes_7[1]; - ctx->getSignal(ctx->cIdx, _offset_29, _sigValue_7); - _v_18 = i + 0; - ctx->field->pow(_tmp_14,_const_7,_v_18); - ctx->field->mul(_tmp_15,_sigValue_7,_tmp_14); - ctx->field->add(_tmp_16,_v_16,_tmp_15); - ctx->field->copyn(lc1, _tmp_16, 1); - _v_19 = i + 0; - ctx->field->add(_tmp_17, _v_19, &(ctx->field->one)); - ctx->field->copyn(i, _tmp_17, 1); - _v_20 = i + 0; - ctx->field->lt(_tmp_18,_v_20,_const_8); - _cond = ctx->field->isTrue(_tmp_18); - } - - /* lc1 === in */ - _v_22 = lc1 + 0; - _sigIdx_10 = ctx->getSignalOffset(ctx->cIdx, 0x08b73807b55c4bbeLL /* in */); - ctx->getSignal(ctx->cIdx, _sigIdx_10, _sigValue_8); - ctx->checkConstraint(_v_22, _sigValue_8, "/Users/jbaylina/git/iden3/circomlib/circuits/bitify.circom:35:4"); - // Footer - ctx->freeBigInts(_sigValue, 1); - ctx->freeBigInts(_const, 1); - ctx->freeBigInts(_tmp_1, 1); - ctx->freeBigInts(_const_1, 1); - ctx->freeBigInts(_tmp_2, 1); - ctx->freeBigInts(_sigValue_1, 1); - ctx->freeBigInts(_sigValue_2, 1); - ctx->freeBigInts(_const_2, 1); - ctx->freeBigInts(_tmp_3, 1); - ctx->freeBigInts(_tmp_4, 1); - ctx->freeBigInts(_num_4, 1); - ctx->freeBigInts(_sigValue_3, 1); - ctx->freeBigInts(_const_3, 1); - ctx->freeBigInts(_tmp_6, 1); - ctx->freeBigInts(_const_4, 1); - ctx->freeBigInts(_tmp_7, 1); - ctx->freeBigInts(lc1, 1); - ctx->freeBigInts(_tmp_9, 1); - ctx->freeBigInts(i, 1); - ctx->freeBigInts(_sigValue_4, 1); - ctx->freeBigInts(_tmp_10, 1); - ctx->freeBigInts(_const_5, 1); - ctx->freeBigInts(_tmp_11, 1); - ctx->freeBigInts(_sigValue_5, 1); - ctx->freeBigInts(_sigValue_6, 1); - ctx->freeBigInts(_const_6, 1); - ctx->freeBigInts(_tmp_12, 1); - ctx->freeBigInts(_tmp_13, 1); - ctx->freeBigInts(_num_8, 1); - ctx->freeBigInts(_sigValue_7, 1); - ctx->freeBigInts(_const_7, 1); - ctx->freeBigInts(_tmp_14, 1); - ctx->freeBigInts(_tmp_15, 1); - ctx->freeBigInts(_tmp_16, 1); - ctx->freeBigInts(_tmp_17, 1); - ctx->freeBigInts(_const_8, 1); - ctx->freeBigInts(_tmp_18, 1); - ctx->freeBigInts(_sigValue_8, 1); -} - -// Components -Circom_Component _components[384] = { - {_htMain,_entryTableMain,Main_49e763aed00877a8, 2} - ,{_htPedersen,_entryTablePedersen,Pedersen_e89189a40b66818b, 500} - ,{_htEscalarMul,_entryTableEscalarMul,EscalarMul_f29b0428f5d364a5, 252} - ,{_htEscalarMul,_entryTableEscalarMul_1,EscalarMul_013c1dd4c0cce6a8, 252} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow,EscalarMulWindow_8a817f91638c8624, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_1,EscalarMulWindow_8a818091638c87d7, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_2,EscalarMulWindow_8a818191638c898a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_3,EscalarMulWindow_8a818291638c8b3d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_4,EscalarMulWindow_8a817b91638c7f58, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_5,EscalarMulWindow_8a817c91638c810b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_6,EscalarMulWindow_8a817d91638c82be, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_7,EscalarMulWindow_8a817e91638c8471, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_8,EscalarMulWindow_8a817791638c788c, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_9,EscalarMulWindow_8a817891638c7a3f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_10,EscalarMulWindow_e6955e0c27caed85, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_11,EscalarMulWindow_e6955d0c27caebd2, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_12,EscalarMulWindow_e6955c0c27caea1f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_13,EscalarMulWindow_e6955b0c27cae86c, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_14,EscalarMulWindow_e6955a0c27cae6b9, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_15,EscalarMulWindow_e695590c27cae506, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_16,EscalarMulWindow_e695580c27cae353, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_17,EscalarMulWindow_e695570c27cae1a0, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_18,EscalarMulWindow_e695660c27cafb1d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_19,EscalarMulWindow_e695650c27caf96a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_20,EscalarMulWindow_e698e40c27ce070e, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_21,EscalarMulWindow_e698e50c27ce08c1, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_22,EscalarMulWindow_e698e20c27ce03a8, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_23,EscalarMulWindow_e698e30c27ce055b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_24,EscalarMulWindow_e698e80c27ce0dda, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_25,EscalarMulWindow_e698e90c27ce0f8d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_26,EscalarMulWindow_e698e60c27ce0a74, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_27,EscalarMulWindow_e698e70c27ce0c27, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_28,EscalarMulWindow_e698dc0c27cdf976, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_29,EscalarMulWindow_e698dd0c27cdfb29, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_30,EscalarMulWindow_e69bea0c27d04717, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_31,EscalarMulWindow_e69be90c27d04564, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_32,EscalarMulWindow_e69bec0c27d04a7d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_33,EscalarMulWindow_e69beb0c27d048ca, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_34,EscalarMulWindow_e69be60c27d0404b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_35,EscalarMulWindow_e69be50c27d03e98, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_36,EscalarMulWindow_e69be80c27d043b1, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_37,EscalarMulWindow_e69be70c27d041fe, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_38,EscalarMulWindow_e69be20c27d0397f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_39,EscalarMulWindow_e69be10c27d037cc, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_40,EscalarMulWindow_e684600c27bc7db8, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_41,EscalarMulWindow_e684610c27bc7f6b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_42,EscalarMulWindow_e684620c27bc811e, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_43,EscalarMulWindow_e684630c27bc82d1, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_44,EscalarMulWindow_e684640c27bc8484, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_45,EscalarMulWindow_e684650c27bc8637, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_46,EscalarMulWindow_e684660c27bc87ea, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_47,EscalarMulWindow_e684670c27bc899d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_48,EscalarMulWindow_e684580c27bc7020, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_49,EscalarMulWindow_e684590c27bc71d3, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_50,EscalarMulWindow_e687e60c27bf9741, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_51,EscalarMulWindow_e687e50c27bf958e, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_52,EscalarMulWindow_e687e40c27bf93db, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_53,EscalarMulWindow_e687e30c27bf9228, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_54,EscalarMulWindow_e687ea0c27bf9e0d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_55,EscalarMulWindow_e687e90c27bf9c5a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_56,EscalarMulWindow_e687e80c27bf9aa7, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_57,EscalarMulWindow_e687e70c27bf98f4, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_58,EscalarMulWindow_e687de0c27bf89a9, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_59,EscalarMulWindow_e687dd0c27bf87f6, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_60,EscalarMulWindow_e68aec0c27c1d74a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_61,EscalarMulWindow_e68aed0c27c1d8fd, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_62,EscalarMulWindow_04331b56a98f2867, 6} - ,{_htMultiMux4,_entryTableMultiMux4,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_1,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_1,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_2,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_2,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_3,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_3,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_4,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_4,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_5,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_5,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_6,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_6,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_7,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_7,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_8,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_8,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_9,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_9,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_10,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_10,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_11,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_11,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_12,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_12,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_13,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_13,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_14,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_14,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_15,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_15,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_16,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_16,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_17,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_17,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_18,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_18,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_19,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_19,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_20,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_20,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_21,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_21,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_22,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_22,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_23,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_23,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_24,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_24,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_25,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_25,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_26,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_26,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_27,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_27,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_28,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_28,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_29,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_29,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_30,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_30,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_31,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_31,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_32,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_32,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_33,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_33,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_34,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_34,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_35,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_35,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_36,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_36,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_37,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_37,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_38,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_38,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_39,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_39,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_40,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_40,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_41,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_41,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_42,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_42,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_43,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_43,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_44,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_44,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_45,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_45,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_46,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_46,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_47,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_47,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_48,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_48,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_49,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_49,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_50,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_50,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_51,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_51,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_52,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_52,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_53,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_53,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_54,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_54,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_55,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_55,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_56,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_56,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_57,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_57,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_58,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_58,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_59,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_59,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_60,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_60,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_61,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_61,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_62,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_62,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_63,EscalarMulWindow_c58c15588b83ea88, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_64,EscalarMulWindow_c58c16588b83ec3b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_65,EscalarMulWindow_c58c17588b83edee, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_66,EscalarMulWindow_c58c18588b83efa1, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_67,EscalarMulWindow_c58c19588b83f154, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_68,EscalarMulWindow_c58c1a588b83f307, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_69,EscalarMulWindow_c58c1b588b83f4ba, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_70,EscalarMulWindow_c58c1c588b83f66d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_71,EscalarMulWindow_c58c0d588b83dcf0, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_72,EscalarMulWindow_c58c0e588b83dea3, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_73,EscalarMulWindow_30f60375112a16b1, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_74,EscalarMulWindow_30f60275112a14fe, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_75,EscalarMulWindow_30f60175112a134b, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_76,EscalarMulWindow_30f60075112a1198, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_77,EscalarMulWindow_30f60775112a1d7d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_78,EscalarMulWindow_30f60675112a1bca, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_79,EscalarMulWindow_30f60575112a1a17, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_80,EscalarMulWindow_30f60475112a1864, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_81,EscalarMulWindow_30f5fb75112a0919, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_82,EscalarMulWindow_30f5fa75112a0766, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_83,EscalarMulWindow_30f98975112d303a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_84,EscalarMulWindow_30f98a75112d31ed, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_85,EscalarMulWindow_30f98775112d2cd4, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_86,EscalarMulWindow_30f98875112d2e87, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_87,EscalarMulWindow_30f98575112d296e, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_88,EscalarMulWindow_30f98675112d2b21, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_89,EscalarMulWindow_30f98375112d2608, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_90,EscalarMulWindow_30f98475112d27bb, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_91,EscalarMulWindow_30f98175112d22a2, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_92,EscalarMulWindow_30f98275112d2455, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_93,EscalarMulWindow_30fcef7511301363, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_94,EscalarMulWindow_30fcee75113011b0, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_95,EscalarMulWindow_30fcf175113016c9, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_96,EscalarMulWindow_30fcf07511301516, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_97,EscalarMulWindow_30fcf37511301a2f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_98,EscalarMulWindow_30fcf2751130187c, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_99,EscalarMulWindow_30fcf57511301d95, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_100,EscalarMulWindow_30fcf47511301be2, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_101,EscalarMulWindow_30fcf775113020fb, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_102,EscalarMulWindow_30fcf67511301f48, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_103,EscalarMulWindow_3100757511332cec, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_104,EscalarMulWindow_3100767511332e9f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_105,EscalarMulWindow_3100777511333052, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_106,EscalarMulWindow_3100787511333205, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_107,EscalarMulWindow_3100717511332620, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_108,EscalarMulWindow_31007275113327d3, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_109,EscalarMulWindow_3100737511332986, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_110,EscalarMulWindow_3100747511332b39, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_111,EscalarMulWindow_31007d7511333a84, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_112,EscalarMulWindow_31007e7511333c37, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_113,EscalarMulWindow_3103fb7511364675, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_114,EscalarMulWindow_3103fa75113644c2, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_115,EscalarMulWindow_3103f9751136430f, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_116,EscalarMulWindow_3103f8751136415c, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_117,EscalarMulWindow_3103f77511363fa9, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_118,EscalarMulWindow_3103f67511363df6, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_119,EscalarMulWindow_3103f57511363c43, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_120,EscalarMulWindow_3103f47511363a90, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_121,EscalarMulWindow_310403751136540d, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_122,EscalarMulWindow_310402751136525a, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_123,EscalarMulWindow_310701751138867e, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_124,EscalarMulWindow_3107027511388831, 6} - ,{_htEscalarMulWindow,_entryTableEscalarMulWindow_125,EscalarMulWindow_d9853d1d04a8f6cb, 6} - ,{_htMultiMux4,_entryTableMultiMux4_63,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_63,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_64,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_64,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_65,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_65,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_66,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_66,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_67,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_67,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_68,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_68,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_69,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_69,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_70,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_70,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_71,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_71,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_72,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_72,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_73,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_73,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_74,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_74,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_75,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_75,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_76,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_76,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_77,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_77,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_78,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_78,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_79,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_79,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_80,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_80,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_81,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_81,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_82,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_82,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_83,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_83,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_84,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_84,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_85,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_85,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_86,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_86,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_87,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_87,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_88,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_88,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_89,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_89,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_90,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_90,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_91,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_91,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_92,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_92,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_93,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_93,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_94,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_94,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_95,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_95,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_96,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_96,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_97,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_97,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_98,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_98,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_99,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_99,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_100,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_100,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_101,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_101,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_102,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_102,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_103,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_103,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_104,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_104,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_105,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_105,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_106,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_106,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_107,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_107,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_108,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_108,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_109,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_109,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_110,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_110,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_111,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_111,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_112,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_112,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_113,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_113,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_114,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_114,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_115,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_115,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_116,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_116,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_117,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_117,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_118,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_118,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_119,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_119,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_120,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_120,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_121,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_121,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_122,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_122,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_123,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_123,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_124,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_124,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htMultiMux4,_entryTableMultiMux4_125,MultiMux4_e43006c194d99269, 36} - ,{_htBabyAdd,_entryTableBabyAdd_125,BabyAdd_4d10bd4b8f5eb590, 4} - ,{_htNum2Bits,_entryTableNum2Bits,Num2Bits_615abe7f710c8f9d, 1} - ,{_htNum2Bits,_entryTableNum2Bits_1,Num2Bits_615abe7f710c8f9d, 1} -}; - - -// mapIsArray -u32 _mapIsInput[410] = { - 0xFFFFFFE6,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0x7E7FFFFF,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000 -,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07 -,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFE7,0x000001FF,0x7E078000,0xFFFFFFFE,0x0000001F,0xE7E07800,0xFFFFFFFF,0x00000001,0xFE7E0780,0x1FFFFFFF -,0x00000000,0xFFE7E078,0x01FFFFFF,0x80000000,0xFFFE7E07,0x001FFFFF,0x78000000,0xFFFFE7E0,0x0001FFFF,0x07800000,0xFFFFFE7E,0x00001FFF,0xE0780000,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xFFFFFFFF,0xF9FFFFFF,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000 -,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81 -,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0xFFFFFF9F,0x000007FF,0xF81E0000,0xFFFFFFF9,0x0000007F,0x9F81E000,0xFFFFFFFF,0x00000007,0xF9F81E00,0x7FFFFFFF,0x00000000,0xFF9F81E0,0x07FFFFFF -,0x00000000,0xFFF9F81E,0x007FFFFF,0xE0000000,0xFFFF9F81,0x0007FFFF,0x1E000000,0xFFFFF9F8,0x00007FFF,0x81E00000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x04000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 -}; - -// Signal Table -int _wit2sig[5541] = { - 0,12601,12602,1,2,12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,12661,12662,12663,12664,12665,12666,12667,12668 -,12669,12670,12671,12672,12673,12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,12687,12688,12689,12690,12691,12692,12693,12694,12695,12696,12697,12698,12699,12700,12701,12702,12703,12704,12705,12706,12707,12708,12709,12710,12711,12712,12713,12714,12715,12716,12717,12718,12719,12720,12721,12722,12723,12724,12725,12726,12727,12728,12729,12730,12731,12732 -,12733,12734,12735,12736,12737,12738,12739,12740,12741,12742,12743,12744,12745,12746,12747,12748,12749,12750,12751,12752,12753,12754,12755,12756,12757,12758,12759,12760,12761,12762,12763,12764,12765,12766,12767,12768,12769,12770,12771,12772,12773,12774,12775,12776,12777,12778,12779,12780,12781,12782,12783,12784,12785,12786,12787,12788,12789,12790,12791,12792,12793,12794,12795,12796 -,12797,12798,12799,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,12824,12825,12826,12827,12828,12829,12830,12831,12832,12833,12834,12835,12836,12837,12838,12839,12840,12841,12842,12843,12844,12845,12846,12847,12848,12849,12850,12851,12852,12853,12854,12855,12856,12857,12860,12861,12862 -,12863,12864,12865,12866,12867,12868,12869,12870,12871,12872,12873,12874,12875,12876,12877,12878,12879,12880,12881,12882,12883,12884,12885,12886,12887,12888,12889,12890,12891,12892,12893,12894,12895,12896,12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,12923,12924,12925,12926 -,12927,12928,12929,12930,12931,12932,12933,12934,12935,12936,12937,12938,12939,12940,12941,12942,12943,12944,12945,12946,12947,12948,12949,12950,12951,12952,12953,12954,12955,12956,12957,12958,12959,12960,12961,12962,12963,12964,12965,12966,12967,12968,12969,12970,12971,12972,12973,12974,12975,12976,12977,12978,12979,12980,12981,12982,12983,12984,12985,12986,12987,12988,12989,12990 -,12991,12992,12993,12994,12995,12996,12997,12998,12999,13000,13001,13002,13003,13004,13005,13006,13007,13008,13009,13010,13011,13012,13013,13014,13015,13016,13017,13018,13019,13020,13021,13022,13023,13024,13025,13026,13027,13028,13029,13030,13031,13032,13033,13034,13035,13036,13037,13038,13039,13040,13041,13042,13043,13044,13045,13046,13047,13048,13049,13050,13051,13052,13053,13054 -,13055,13056,13057,13058,13059,13060,13061,13062,13063,13064,13065,13066,13067,13068,13069,13070,13071,13072,13073,13074,13075,13076,13077,13078,13079,13080,13081,13082,13083,13084,13085,13086,13087,13088,13089,13090,13091,13092,13093,13094,13095,13096,13097,13098,13099,13100,13101,13102,13103,13104,13105,13106,13107,13108,6551,6552,847,848,805,806,807,808,809,810 -,811,812,813,814,815,816,817,818,819,820,823,824,825,826,827,828,829,830,831,832,833,834,835,836,839,840,841,842,849,850,851,852,939,940,897,898,899,900,901,902,903,904,905,906,907,908,909,910,911,912,915,916,917,918,919,920,921,922,923,924,925,926,927,928 -,931,932,933,934,941,942,943,944,1031,1032,989,990,991,992,993,994,995,996,997,998,999,1000,1001,1002,1003,1004,1007,1008,1009,1010,1011,1012,1013,1014,1015,1016,1017,1018,1019,1020,1023,1024,1025,1026,1033,1034,1035,1036,1123,1124,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094 -,1095,1096,1099,1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1115,1116,1117,1118,1125,1126,1127,1128,1215,1216,1173,1174,1175,1176,1177,1178,1179,1180,1181,1182,1183,1184,1185,1186,1187,1188,1191,1192,1193,1194,1195,1196,1197,1198,1199,1200,1201,1202,1203,1204,1207,1208,1209,1210,1217,1218,1219,1220 -,1307,1308,1265,1266,1267,1268,1269,1270,1271,1272,1273,1274,1275,1276,1277,1278,1279,1280,1283,1284,1285,1286,1287,1288,1289,1290,1291,1292,1293,1294,1295,1296,1299,1300,1301,1302,1309,1310,1311,1312,1399,1400,1357,1358,1359,1360,1361,1362,1363,1364,1365,1366,1367,1368,1369,1370,1371,1372,1375,1376,1377,1378,1379,1380 -,1381,1382,1383,1384,1385,1386,1387,1388,1391,1392,1393,1394,1401,1402,1403,1404,1491,1492,1449,1450,1451,1452,1453,1454,1455,1456,1457,1458,1459,1460,1461,1462,1463,1464,1467,1468,1469,1470,1471,1472,1473,1474,1475,1476,1477,1478,1479,1480,1483,1484,1485,1486,1493,1494,1495,1496,1583,1584,1541,1542,1543,1544,1545,1546 -,1547,1548,1549,1550,1551,1552,1553,1554,1555,1556,1559,1560,1561,1562,1563,1564,1565,1566,1567,1568,1569,1570,1571,1572,1575,1576,1577,1578,1585,1586,1587,1588,1675,1676,1633,1634,1635,1636,1637,1638,1639,1640,1641,1642,1643,1644,1645,1646,1647,1648,1651,1652,1653,1654,1655,1656,1657,1658,1659,1660,1661,1662,1663,1664 -,1667,1668,1669,1670,1677,1678,1679,1680,1767,1768,1725,1726,1727,1728,1729,1730,1731,1732,1733,1734,1735,1736,1737,1738,1739,1740,1743,1744,1745,1746,1747,1748,1749,1750,1751,1752,1753,1754,1755,1756,1759,1760,1761,1762,1769,1770,1771,1772,1859,1860,1817,1818,1819,1820,1821,1822,1823,1824,1825,1826,1827,1828,1829,1830 -,1831,1832,1835,1836,1837,1838,1839,1840,1841,1842,1843,1844,1845,1846,1847,1848,1851,1852,1853,1854,1861,1862,1863,1864,1951,1952,1909,1910,1911,1912,1913,1914,1915,1916,1917,1918,1919,1920,1921,1922,1923,1924,1927,1928,1929,1930,1931,1932,1933,1934,1935,1936,1937,1938,1939,1940,1943,1944,1945,1946,1953,1954,1955,1956 -,2043,2044,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2019,2020,2021,2022,2023,2024,2025,2026,2027,2028,2029,2030,2031,2032,2035,2036,2037,2038,2045,2046,2047,2048,2135,2136,2093,2094,2095,2096,2097,2098,2099,2100,2101,2102,2103,2104,2105,2106,2107,2108,2111,2112,2113,2114,2115,2116 -,2117,2118,2119,2120,2121,2122,2123,2124,2127,2128,2129,2130,2137,2138,2139,2140,2227,2228,2185,2186,2187,2188,2189,2190,2191,2192,2193,2194,2195,2196,2197,2198,2199,2200,2203,2204,2205,2206,2207,2208,2209,2210,2211,2212,2213,2214,2215,2216,2219,2220,2221,2222,2229,2230,2231,2232,2319,2320,2277,2278,2279,2280,2281,2282 -,2283,2284,2285,2286,2287,2288,2289,2290,2291,2292,2295,2296,2297,2298,2299,2300,2301,2302,2303,2304,2305,2306,2307,2308,2311,2312,2313,2314,2321,2322,2323,2324,2411,2412,2369,2370,2371,2372,2373,2374,2375,2376,2377,2378,2379,2380,2381,2382,2383,2384,2387,2388,2389,2390,2391,2392,2393,2394,2395,2396,2397,2398,2399,2400 -,2403,2404,2405,2406,2413,2414,2415,2416,2503,2504,2461,2462,2463,2464,2465,2466,2467,2468,2469,2470,2471,2472,2473,2474,2475,2476,2479,2480,2481,2482,2483,2484,2485,2486,2487,2488,2489,2490,2491,2492,2495,2496,2497,2498,2505,2506,2507,2508,2595,2596,2553,2554,2555,2556,2557,2558,2559,2560,2561,2562,2563,2564,2565,2566 -,2567,2568,2571,2572,2573,2574,2575,2576,2577,2578,2579,2580,2581,2582,2583,2584,2587,2588,2589,2590,2597,2598,2599,2600,2687,2688,2645,2646,2647,2648,2649,2650,2651,2652,2653,2654,2655,2656,2657,2658,2659,2660,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2674,2675,2676,2679,2680,2681,2682,2689,2690,2691,2692 -,2779,2780,2737,2738,2739,2740,2741,2742,2743,2744,2745,2746,2747,2748,2749,2750,2751,2752,2755,2756,2757,2758,2759,2760,2761,2762,2763,2764,2765,2766,2767,2768,2771,2772,2773,2774,2781,2782,2783,2784,2871,2872,2829,2830,2831,2832,2833,2834,2835,2836,2837,2838,2839,2840,2841,2842,2843,2844,2847,2848,2849,2850,2851,2852 -,2853,2854,2855,2856,2857,2858,2859,2860,2863,2864,2865,2866,2873,2874,2875,2876,2963,2964,2921,2922,2923,2924,2925,2926,2927,2928,2929,2930,2931,2932,2933,2934,2935,2936,2939,2940,2941,2942,2943,2944,2945,2946,2947,2948,2949,2950,2951,2952,2955,2956,2957,2958,2965,2966,2967,2968,3055,3056,3013,3014,3015,3016,3017,3018 -,3019,3020,3021,3022,3023,3024,3025,3026,3027,3028,3031,3032,3033,3034,3035,3036,3037,3038,3039,3040,3041,3042,3043,3044,3047,3048,3049,3050,3057,3058,3059,3060,3147,3148,3105,3106,3107,3108,3109,3110,3111,3112,3113,3114,3115,3116,3117,3118,3119,3120,3123,3124,3125,3126,3127,3128,3129,3130,3131,3132,3133,3134,3135,3136 -,3139,3140,3141,3142,3149,3150,3151,3152,3239,3240,3197,3198,3199,3200,3201,3202,3203,3204,3205,3206,3207,3208,3209,3210,3211,3212,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3231,3232,3233,3234,3241,3242,3243,3244,3331,3332,3289,3290,3291,3292,3293,3294,3295,3296,3297,3298,3299,3300,3301,3302 -,3303,3304,3307,3308,3309,3310,3311,3312,3313,3314,3315,3316,3317,3318,3319,3320,3323,3324,3325,3326,3333,3334,3335,3336,3423,3424,3381,3382,3383,3384,3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3399,3400,3401,3402,3403,3404,3405,3406,3407,3408,3409,3410,3411,3412,3415,3416,3417,3418,3425,3426,3427,3428 -,3515,3516,3473,3474,3475,3476,3477,3478,3479,3480,3481,3482,3483,3484,3485,3486,3487,3488,3491,3492,3493,3494,3495,3496,3497,3498,3499,3500,3501,3502,3503,3504,3507,3508,3509,3510,3517,3518,3519,3520,3607,3608,3565,3566,3567,3568,3569,3570,3571,3572,3573,3574,3575,3576,3577,3578,3579,3580,3583,3584,3585,3586,3587,3588 -,3589,3590,3591,3592,3593,3594,3595,3596,3599,3600,3601,3602,3609,3610,3611,3612,3699,3700,3657,3658,3659,3660,3661,3662,3663,3664,3665,3666,3667,3668,3669,3670,3671,3672,3675,3676,3677,3678,3679,3680,3681,3682,3683,3684,3685,3686,3687,3688,3691,3692,3693,3694,3701,3702,3703,3704,3791,3792,3749,3750,3751,3752,3753,3754 -,3755,3756,3757,3758,3759,3760,3761,3762,3763,3764,3767,3768,3769,3770,3771,3772,3773,3774,3775,3776,3777,3778,3779,3780,3783,3784,3785,3786,3793,3794,3795,3796,3883,3884,3841,3842,3843,3844,3845,3846,3847,3848,3849,3850,3851,3852,3853,3854,3855,3856,3859,3860,3861,3862,3863,3864,3865,3866,3867,3868,3869,3870,3871,3872 -,3875,3876,3877,3878,3885,3886,3887,3888,3975,3976,3933,3934,3935,3936,3937,3938,3939,3940,3941,3942,3943,3944,3945,3946,3947,3948,3951,3952,3953,3954,3955,3956,3957,3958,3959,3960,3961,3962,3963,3964,3967,3968,3969,3970,3977,3978,3979,3980,4067,4068,4025,4026,4027,4028,4029,4030,4031,4032,4033,4034,4035,4036,4037,4038 -,4039,4040,4043,4044,4045,4046,4047,4048,4049,4050,4051,4052,4053,4054,4055,4056,4059,4060,4061,4062,4069,4070,4071,4072,4159,4160,4117,4118,4119,4120,4121,4122,4123,4124,4125,4126,4127,4128,4129,4130,4131,4132,4135,4136,4137,4138,4139,4140,4141,4142,4143,4144,4145,4146,4147,4148,4151,4152,4153,4154,4161,4162,4163,4164 -,4251,4252,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219,4220,4221,4222,4223,4224,4227,4228,4229,4230,4231,4232,4233,4234,4235,4236,4237,4238,4239,4240,4243,4244,4245,4246,4253,4254,4255,4256,4343,4344,4301,4302,4303,4304,4305,4306,4307,4308,4309,4310,4311,4312,4313,4314,4315,4316,4319,4320,4321,4322,4323,4324 -,4325,4326,4327,4328,4329,4330,4331,4332,4335,4336,4337,4338,4345,4346,4347,4348,4435,4436,4393,4394,4395,4396,4397,4398,4399,4400,4401,4402,4403,4404,4405,4406,4407,4408,4411,4412,4413,4414,4415,4416,4417,4418,4419,4420,4421,4422,4423,4424,4427,4428,4429,4430,4437,4438,4439,4440,4527,4528,4485,4486,4487,4488,4489,4490 -,4491,4492,4493,4494,4495,4496,4497,4498,4499,4500,4503,4504,4505,4506,4507,4508,4509,4510,4511,4512,4513,4514,4515,4516,4519,4520,4521,4522,4529,4530,4531,4532,4619,4620,4577,4578,4579,4580,4581,4582,4583,4584,4585,4586,4587,4588,4589,4590,4591,4592,4595,4596,4597,4598,4599,4600,4601,4602,4603,4604,4605,4606,4607,4608 -,4611,4612,4613,4614,4621,4622,4623,4624,4711,4712,4669,4670,4671,4672,4673,4674,4675,4676,4677,4678,4679,4680,4681,4682,4683,4684,4687,4688,4689,4690,4691,4692,4693,4694,4695,4696,4697,4698,4699,4700,4703,4704,4705,4706,4713,4714,4715,4716,4803,4804,4761,4762,4763,4764,4765,4766,4767,4768,4769,4770,4771,4772,4773,4774 -,4775,4776,4779,4780,4781,4782,4783,4784,4785,4786,4787,4788,4789,4790,4791,4792,4795,4796,4797,4798,4805,4806,4807,4808,4895,4896,4853,4854,4855,4856,4857,4858,4859,4860,4861,4862,4863,4864,4865,4866,4867,4868,4871,4872,4873,4874,4875,4876,4877,4878,4879,4880,4881,4882,4883,4884,4887,4888,4889,4890,4897,4898,4899,4900 -,4987,4988,4945,4946,4947,4948,4949,4950,4951,4952,4953,4954,4955,4956,4957,4958,4959,4960,4963,4964,4965,4966,4967,4968,4969,4970,4971,4972,4973,4974,4975,4976,4979,4980,4981,4982,4989,4990,4991,4992,5079,5080,5037,5038,5039,5040,5041,5042,5043,5044,5045,5046,5047,5048,5049,5050,5051,5052,5055,5056,5057,5058,5059,5060 -,5061,5062,5063,5064,5065,5066,5067,5068,5071,5072,5073,5074,5081,5082,5083,5084,5171,5172,5129,5130,5131,5132,5133,5134,5135,5136,5137,5138,5139,5140,5141,5142,5143,5144,5147,5148,5149,5150,5151,5152,5153,5154,5155,5156,5157,5158,5159,5160,5163,5164,5165,5166,5173,5174,5175,5176,5263,5264,5221,5222,5223,5224,5225,5226 -,5227,5228,5229,5230,5231,5232,5233,5234,5235,5236,5239,5240,5241,5242,5243,5244,5245,5246,5247,5248,5249,5250,5251,5252,5255,5256,5257,5258,5265,5266,5267,5268,5355,5356,5313,5314,5315,5316,5317,5318,5319,5320,5321,5322,5323,5324,5325,5326,5327,5328,5331,5332,5333,5334,5335,5336,5337,5338,5339,5340,5341,5342,5343,5344 -,5347,5348,5349,5350,5357,5358,5359,5360,5447,5448,5405,5406,5407,5408,5409,5410,5411,5412,5413,5414,5415,5416,5417,5418,5419,5420,5423,5424,5425,5426,5427,5428,5429,5430,5431,5432,5433,5434,5435,5436,5439,5440,5441,5442,5449,5450,5451,5452,5539,5540,5497,5498,5499,5500,5501,5502,5503,5504,5505,5506,5507,5508,5509,5510 -,5511,5512,5515,5516,5517,5518,5519,5520,5521,5522,5523,5524,5525,5526,5527,5528,5531,5532,5533,5534,5541,5542,5543,5544,5631,5632,5589,5590,5591,5592,5593,5594,5595,5596,5597,5598,5599,5600,5601,5602,5603,5604,5607,5608,5609,5610,5611,5612,5613,5614,5615,5616,5617,5618,5619,5620,5623,5624,5625,5626,5633,5634,5635,5636 -,5723,5724,5681,5682,5683,5684,5685,5686,5687,5688,5689,5690,5691,5692,5693,5694,5695,5696,5699,5700,5701,5702,5703,5704,5705,5706,5707,5708,5709,5710,5711,5712,5715,5716,5717,5718,5725,5726,5727,5728,5815,5816,5773,5774,5775,5776,5777,5778,5779,5780,5781,5782,5783,5784,5785,5786,5787,5788,5791,5792,5793,5794,5795,5796 -,5797,5798,5799,5800,5801,5802,5803,5804,5807,5808,5809,5810,5817,5818,5819,5820,5907,5908,5865,5866,5867,5868,5869,5870,5871,5872,5873,5874,5875,5876,5877,5878,5879,5880,5883,5884,5885,5886,5887,5888,5889,5890,5891,5892,5893,5894,5895,5896,5899,5900,5901,5902,5909,5910,5911,5912,5999,6000,5957,5958,5959,5960,5961,5962 -,5963,5964,5965,5966,5967,5968,5969,5970,5971,5972,5975,5976,5977,5978,5979,5980,5981,5982,5983,5984,5985,5986,5987,5988,5991,5992,5993,5994,6001,6002,6003,6004,6091,6092,6049,6050,6051,6052,6053,6054,6055,6056,6057,6058,6059,6060,6061,6062,6063,6064,6067,6068,6069,6070,6071,6072,6073,6074,6075,6076,6077,6078,6079,6080 -,6083,6084,6085,6086,6093,6094,6095,6096,6183,6184,6141,6142,6143,6144,6145,6146,6147,6148,6149,6150,6151,6152,6153,6154,6155,6156,6159,6160,6161,6162,6163,6164,6165,6166,6167,6168,6169,6170,6171,6172,6175,6176,6177,6178,6185,6186,6187,6188,6275,6276,6233,6234,6235,6236,6237,6238,6239,6240,6241,6242,6243,6244,6245,6246 -,6247,6248,6251,6252,6253,6254,6255,6256,6257,6258,6259,6260,6261,6262,6263,6264,6267,6268,6269,6270,6277,6278,6279,6280,6367,6368,6325,6326,6327,6328,6329,6330,6331,6332,6333,6334,6335,6336,6337,6338,6339,6340,6343,6344,6345,6346,6347,6348,6349,6350,6351,6352,6353,6354,6355,6356,6359,6360,6361,6362,6369,6370,6371,6372 -,6459,6460,6417,6418,6419,6420,6421,6422,6423,6424,6425,6426,6427,6428,6429,6430,6431,6432,6435,6436,6437,6438,6439,6440,6441,6442,6443,6444,6445,6446,6447,6448,6451,6452,6453,6454,6461,6462,6463,6464,6509,6510,6511,6512,6513,6514,6515,6516,6517,6518,6519,6520,6521,6522,6523,6524,6527,6528,6529,6530,6531,6532,6533,6534 -,6535,6536,6537,6538,6539,6540,6543,6544,6545,6546,6553,6554,6555,6556,6897,6898,6855,6856,6857,6858,6859,6860,6861,6862,6863,6864,6865,6866,6867,6868,6869,6870,6873,6874,6875,6876,6877,6878,6879,6880,6881,6882,6883,6884,6885,6886,6889,6890,6891,6892,6899,6900,6901,6902,6989,6990,6947,6948,6949,6950,6951,6952,6953,6954 -,6955,6956,6957,6958,6959,6960,6961,6962,6965,6966,6967,6968,6969,6970,6971,6972,6973,6974,6975,6976,6977,6978,6981,6982,6983,6984,6991,6992,6993,6994,7081,7082,7039,7040,7041,7042,7043,7044,7045,7046,7047,7048,7049,7050,7051,7052,7053,7054,7057,7058,7059,7060,7061,7062,7063,7064,7065,7066,7067,7068,7069,7070,7073,7074 -,7075,7076,7083,7084,7085,7086,7173,7174,7131,7132,7133,7134,7135,7136,7137,7138,7139,7140,7141,7142,7143,7144,7145,7146,7149,7150,7151,7152,7153,7154,7155,7156,7157,7158,7159,7160,7161,7162,7165,7166,7167,7168,7175,7176,7177,7178,7265,7266,7223,7224,7225,7226,7227,7228,7229,7230,7231,7232,7233,7234,7235,7236,7237,7238 -,7241,7242,7243,7244,7245,7246,7247,7248,7249,7250,7251,7252,7253,7254,7257,7258,7259,7260,7267,7268,7269,7270,7357,7358,7315,7316,7317,7318,7319,7320,7321,7322,7323,7324,7325,7326,7327,7328,7329,7330,7333,7334,7335,7336,7337,7338,7339,7340,7341,7342,7343,7344,7345,7346,7349,7350,7351,7352,7359,7360,7361,7362,7449,7450 -,7407,7408,7409,7410,7411,7412,7413,7414,7415,7416,7417,7418,7419,7420,7421,7422,7425,7426,7427,7428,7429,7430,7431,7432,7433,7434,7435,7436,7437,7438,7441,7442,7443,7444,7451,7452,7453,7454,7541,7542,7499,7500,7501,7502,7503,7504,7505,7506,7507,7508,7509,7510,7511,7512,7513,7514,7517,7518,7519,7520,7521,7522,7523,7524 -,7525,7526,7527,7528,7529,7530,7533,7534,7535,7536,7543,7544,7545,7546,7633,7634,7591,7592,7593,7594,7595,7596,7597,7598,7599,7600,7601,7602,7603,7604,7605,7606,7609,7610,7611,7612,7613,7614,7615,7616,7617,7618,7619,7620,7621,7622,7625,7626,7627,7628,7635,7636,7637,7638,7725,7726,7683,7684,7685,7686,7687,7688,7689,7690 -,7691,7692,7693,7694,7695,7696,7697,7698,7701,7702,7703,7704,7705,7706,7707,7708,7709,7710,7711,7712,7713,7714,7717,7718,7719,7720,7727,7728,7729,7730,7817,7818,7775,7776,7777,7778,7779,7780,7781,7782,7783,7784,7785,7786,7787,7788,7789,7790,7793,7794,7795,7796,7797,7798,7799,7800,7801,7802,7803,7804,7805,7806,7809,7810 -,7811,7812,7819,7820,7821,7822,7909,7910,7867,7868,7869,7870,7871,7872,7873,7874,7875,7876,7877,7878,7879,7880,7881,7882,7885,7886,7887,7888,7889,7890,7891,7892,7893,7894,7895,7896,7897,7898,7901,7902,7903,7904,7911,7912,7913,7914,8001,8002,7959,7960,7961,7962,7963,7964,7965,7966,7967,7968,7969,7970,7971,7972,7973,7974 -,7977,7978,7979,7980,7981,7982,7983,7984,7985,7986,7987,7988,7989,7990,7993,7994,7995,7996,8003,8004,8005,8006,8093,8094,8051,8052,8053,8054,8055,8056,8057,8058,8059,8060,8061,8062,8063,8064,8065,8066,8069,8070,8071,8072,8073,8074,8075,8076,8077,8078,8079,8080,8081,8082,8085,8086,8087,8088,8095,8096,8097,8098,8185,8186 -,8143,8144,8145,8146,8147,8148,8149,8150,8151,8152,8153,8154,8155,8156,8157,8158,8161,8162,8163,8164,8165,8166,8167,8168,8169,8170,8171,8172,8173,8174,8177,8178,8179,8180,8187,8188,8189,8190,8277,8278,8235,8236,8237,8238,8239,8240,8241,8242,8243,8244,8245,8246,8247,8248,8249,8250,8253,8254,8255,8256,8257,8258,8259,8260 -,8261,8262,8263,8264,8265,8266,8269,8270,8271,8272,8279,8280,8281,8282,8369,8370,8327,8328,8329,8330,8331,8332,8333,8334,8335,8336,8337,8338,8339,8340,8341,8342,8345,8346,8347,8348,8349,8350,8351,8352,8353,8354,8355,8356,8357,8358,8361,8362,8363,8364,8371,8372,8373,8374,8461,8462,8419,8420,8421,8422,8423,8424,8425,8426 -,8427,8428,8429,8430,8431,8432,8433,8434,8437,8438,8439,8440,8441,8442,8443,8444,8445,8446,8447,8448,8449,8450,8453,8454,8455,8456,8463,8464,8465,8466,8553,8554,8511,8512,8513,8514,8515,8516,8517,8518,8519,8520,8521,8522,8523,8524,8525,8526,8529,8530,8531,8532,8533,8534,8535,8536,8537,8538,8539,8540,8541,8542,8545,8546 -,8547,8548,8555,8556,8557,8558,8645,8646,8603,8604,8605,8606,8607,8608,8609,8610,8611,8612,8613,8614,8615,8616,8617,8618,8621,8622,8623,8624,8625,8626,8627,8628,8629,8630,8631,8632,8633,8634,8637,8638,8639,8640,8647,8648,8649,8650,8737,8738,8695,8696,8697,8698,8699,8700,8701,8702,8703,8704,8705,8706,8707,8708,8709,8710 -,8713,8714,8715,8716,8717,8718,8719,8720,8721,8722,8723,8724,8725,8726,8729,8730,8731,8732,8739,8740,8741,8742,8829,8830,8787,8788,8789,8790,8791,8792,8793,8794,8795,8796,8797,8798,8799,8800,8801,8802,8805,8806,8807,8808,8809,8810,8811,8812,8813,8814,8815,8816,8817,8818,8821,8822,8823,8824,8831,8832,8833,8834,8921,8922 -,8879,8880,8881,8882,8883,8884,8885,8886,8887,8888,8889,8890,8891,8892,8893,8894,8897,8898,8899,8900,8901,8902,8903,8904,8905,8906,8907,8908,8909,8910,8913,8914,8915,8916,8923,8924,8925,8926,9013,9014,8971,8972,8973,8974,8975,8976,8977,8978,8979,8980,8981,8982,8983,8984,8985,8986,8989,8990,8991,8992,8993,8994,8995,8996 -,8997,8998,8999,9000,9001,9002,9005,9006,9007,9008,9015,9016,9017,9018,9105,9106,9063,9064,9065,9066,9067,9068,9069,9070,9071,9072,9073,9074,9075,9076,9077,9078,9081,9082,9083,9084,9085,9086,9087,9088,9089,9090,9091,9092,9093,9094,9097,9098,9099,9100,9107,9108,9109,9110,9197,9198,9155,9156,9157,9158,9159,9160,9161,9162 -,9163,9164,9165,9166,9167,9168,9169,9170,9173,9174,9175,9176,9177,9178,9179,9180,9181,9182,9183,9184,9185,9186,9189,9190,9191,9192,9199,9200,9201,9202,9289,9290,9247,9248,9249,9250,9251,9252,9253,9254,9255,9256,9257,9258,9259,9260,9261,9262,9265,9266,9267,9268,9269,9270,9271,9272,9273,9274,9275,9276,9277,9278,9281,9282 -,9283,9284,9291,9292,9293,9294,9381,9382,9339,9340,9341,9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9352,9353,9354,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,9367,9368,9369,9370,9373,9374,9375,9376,9383,9384,9385,9386,9473,9474,9431,9432,9433,9434,9435,9436,9437,9438,9439,9440,9441,9442,9443,9444,9445,9446 -,9449,9450,9451,9452,9453,9454,9455,9456,9457,9458,9459,9460,9461,9462,9465,9466,9467,9468,9475,9476,9477,9478,9565,9566,9523,9524,9525,9526,9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9541,9542,9543,9544,9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9557,9558,9559,9560,9567,9568,9569,9570,9657,9658 -,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9649,9650,9651,9652,9659,9660,9661,9662,9749,9750,9707,9708,9709,9710,9711,9712,9713,9714,9715,9716,9717,9718,9719,9720,9721,9722,9725,9726,9727,9728,9729,9730,9731,9732 -,9733,9734,9735,9736,9737,9738,9741,9742,9743,9744,9751,9752,9753,9754,9841,9842,9799,9800,9801,9802,9803,9804,9805,9806,9807,9808,9809,9810,9811,9812,9813,9814,9817,9818,9819,9820,9821,9822,9823,9824,9825,9826,9827,9828,9829,9830,9833,9834,9835,9836,9843,9844,9845,9846,9933,9934,9891,9892,9893,9894,9895,9896,9897,9898 -,9899,9900,9901,9902,9903,9904,9905,9906,9909,9910,9911,9912,9913,9914,9915,9916,9917,9918,9919,9920,9921,9922,9925,9926,9927,9928,9935,9936,9937,9938,10025,10026,9983,9984,9985,9986,9987,9988,9989,9990,9991,9992,9993,9994,9995,9996,9997,9998,10001,10002,10003,10004,10005,10006,10007,10008,10009,10010,10011,10012,10013,10014,10017,10018 -,10019,10020,10027,10028,10029,10030,10117,10118,10075,10076,10077,10078,10079,10080,10081,10082,10083,10084,10085,10086,10087,10088,10089,10090,10093,10094,10095,10096,10097,10098,10099,10100,10101,10102,10103,10104,10105,10106,10109,10110,10111,10112,10119,10120,10121,10122,10209,10210,10167,10168,10169,10170,10171,10172,10173,10174,10175,10176,10177,10178,10179,10180,10181,10182 -,10185,10186,10187,10188,10189,10190,10191,10192,10193,10194,10195,10196,10197,10198,10201,10202,10203,10204,10211,10212,10213,10214,10301,10302,10259,10260,10261,10262,10263,10264,10265,10266,10267,10268,10269,10270,10271,10272,10273,10274,10277,10278,10279,10280,10281,10282,10283,10284,10285,10286,10287,10288,10289,10290,10293,10294,10295,10296,10303,10304,10305,10306,10393,10394 -,10351,10352,10353,10354,10355,10356,10357,10358,10359,10360,10361,10362,10363,10364,10365,10366,10369,10370,10371,10372,10373,10374,10375,10376,10377,10378,10379,10380,10381,10382,10385,10386,10387,10388,10395,10396,10397,10398,10485,10486,10443,10444,10445,10446,10447,10448,10449,10450,10451,10452,10453,10454,10455,10456,10457,10458,10461,10462,10463,10464,10465,10466,10467,10468 -,10469,10470,10471,10472,10473,10474,10477,10478,10479,10480,10487,10488,10489,10490,10577,10578,10535,10536,10537,10538,10539,10540,10541,10542,10543,10544,10545,10546,10547,10548,10549,10550,10553,10554,10555,10556,10557,10558,10559,10560,10561,10562,10563,10564,10565,10566,10569,10570,10571,10572,10579,10580,10581,10582,10669,10670,10627,10628,10629,10630,10631,10632,10633,10634 -,10635,10636,10637,10638,10639,10640,10641,10642,10645,10646,10647,10648,10649,10650,10651,10652,10653,10654,10655,10656,10657,10658,10661,10662,10663,10664,10671,10672,10673,10674,10761,10762,10719,10720,10721,10722,10723,10724,10725,10726,10727,10728,10729,10730,10731,10732,10733,10734,10737,10738,10739,10740,10741,10742,10743,10744,10745,10746,10747,10748,10749,10750,10753,10754 -,10755,10756,10763,10764,10765,10766,10853,10854,10811,10812,10813,10814,10815,10816,10817,10818,10819,10820,10821,10822,10823,10824,10825,10826,10829,10830,10831,10832,10833,10834,10835,10836,10837,10838,10839,10840,10841,10842,10845,10846,10847,10848,10855,10856,10857,10858,10945,10946,10903,10904,10905,10906,10907,10908,10909,10910,10911,10912,10913,10914,10915,10916,10917,10918 -,10921,10922,10923,10924,10925,10926,10927,10928,10929,10930,10931,10932,10933,10934,10937,10938,10939,10940,10947,10948,10949,10950,11037,11038,10995,10996,10997,10998,10999,11000,11001,11002,11003,11004,11005,11006,11007,11008,11009,11010,11013,11014,11015,11016,11017,11018,11019,11020,11021,11022,11023,11024,11025,11026,11029,11030,11031,11032,11039,11040,11041,11042,11129,11130 -,11087,11088,11089,11090,11091,11092,11093,11094,11095,11096,11097,11098,11099,11100,11101,11102,11105,11106,11107,11108,11109,11110,11111,11112,11113,11114,11115,11116,11117,11118,11121,11122,11123,11124,11131,11132,11133,11134,11221,11222,11179,11180,11181,11182,11183,11184,11185,11186,11187,11188,11189,11190,11191,11192,11193,11194,11197,11198,11199,11200,11201,11202,11203,11204 -,11205,11206,11207,11208,11209,11210,11213,11214,11215,11216,11223,11224,11225,11226,11313,11314,11271,11272,11273,11274,11275,11276,11277,11278,11279,11280,11281,11282,11283,11284,11285,11286,11289,11290,11291,11292,11293,11294,11295,11296,11297,11298,11299,11300,11301,11302,11305,11306,11307,11308,11315,11316,11317,11318,11405,11406,11363,11364,11365,11366,11367,11368,11369,11370 -,11371,11372,11373,11374,11375,11376,11377,11378,11381,11382,11383,11384,11385,11386,11387,11388,11389,11390,11391,11392,11393,11394,11397,11398,11399,11400,11407,11408,11409,11410,11497,11498,11455,11456,11457,11458,11459,11460,11461,11462,11463,11464,11465,11466,11467,11468,11469,11470,11473,11474,11475,11476,11477,11478,11479,11480,11481,11482,11483,11484,11485,11486,11489,11490 -,11491,11492,11499,11500,11501,11502,11589,11590,11547,11548,11549,11550,11551,11552,11553,11554,11555,11556,11557,11558,11559,11560,11561,11562,11565,11566,11567,11568,11569,11570,11571,11572,11573,11574,11575,11576,11577,11578,11581,11582,11583,11584,11591,11592,11593,11594,11681,11682,11639,11640,11641,11642,11643,11644,11645,11646,11647,11648,11649,11650,11651,11652,11653,11654 -,11657,11658,11659,11660,11661,11662,11663,11664,11665,11666,11667,11668,11669,11670,11673,11674,11675,11676,11683,11684,11685,11686,11773,11774,11731,11732,11733,11734,11735,11736,11737,11738,11739,11740,11741,11742,11743,11744,11745,11746,11749,11750,11751,11752,11753,11754,11755,11756,11757,11758,11759,11760,11761,11762,11765,11766,11767,11768,11775,11776,11777,11778,11865,11866 -,11823,11824,11825,11826,11827,11828,11829,11830,11831,11832,11833,11834,11835,11836,11837,11838,11841,11842,11843,11844,11845,11846,11847,11848,11849,11850,11851,11852,11853,11854,11857,11858,11859,11860,11867,11868,11869,11870,11957,11958,11915,11916,11917,11918,11919,11920,11921,11922,11923,11924,11925,11926,11927,11928,11929,11930,11933,11934,11935,11936,11937,11938,11939,11940 -,11941,11942,11943,11944,11945,11946,11949,11950,11951,11952,11959,11960,11961,11962,12049,12050,12007,12008,12009,12010,12011,12012,12013,12014,12015,12016,12017,12018,12019,12020,12021,12022,12025,12026,12027,12028,12029,12030,12031,12032,12033,12034,12035,12036,12037,12038,12041,12042,12043,12044,12051,12052,12053,12054,12141,12142,12099,12100,12101,12102,12103,12104,12105,12106 -,12107,12108,12109,12110,12111,12112,12113,12114,12117,12118,12119,12120,12121,12122,12123,12124,12125,12126,12127,12128,12129,12130,12133,12134,12135,12136,12143,12144,12145,12146,12233,12234,12191,12192,12193,12194,12195,12196,12197,12198,12199,12200,12201,12202,12203,12204,12205,12206,12209,12210,12211,12212,12213,12214,12215,12216,12217,12218,12219,12220,12221,12222,12225,12226 -,12227,12228,12235,12236,12237,12238,12325,12326,12283,12284,12285,12286,12287,12288,12289,12290,12291,12292,12293,12294,12295,12296,12297,12298,12301,12302,12303,12304,12305,12306,12307,12308,12309,12310,12311,12312,12313,12314,12317,12318,12319,12320,12327,12328,12329,12330,12417,12418,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390 -,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12409,12410,12411,12412,12419,12420,12421,12422,12509,12510,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12501,12502,12503,12504,12511,12512,12513,12514,12559,12560 -,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,12572,12573,12574,12577,12578,12579,12580,12581,12582,12583,12584,12585,12586,12587,12588,12589,12590,12593,12594,12595,12596,12603,12604,12605,12606 -}; - -Circom_Circuit _circuit = { - NSignals, - NComponents, - NInputs, - NOutputs, - NVars, - _wit2sig, - _components, - _mapIsInput, - __P__ -}; diff --git a/test/circuits/pedersen_test.dSYM/Contents/Info.plist b/test/circuits/pedersen_test.dSYM/Contents/Info.plist deleted file mode 100644 index 83c7fe7..0000000 --- a/test/circuits/pedersen_test.dSYM/Contents/Info.plist +++ /dev/null @@ -1,20 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleIdentifier - com.apple.xcode.dsym.pedersen_test - CFBundleInfoDictionaryVersion - 6.0 - CFBundlePackageType - dSYM - CFBundleSignature - ???? - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - - diff --git a/test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test b/test/circuits/pedersen_test.dSYM/Contents/Resources/DWARF/pedersen_test deleted file mode 100644 index 39783f19c1994a58e60e48eb81d307d96a5718fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2615866 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�&8Akox^L{PvCL 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

I?7Y!u+4)ajW#^xLm(1Bux9^krR_O0Y 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

?n}ftzfh5$#})b_ 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℟UoH#Vz_O4UW^n@&hTd+@ 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

*nl!l1ZJ802?uxZl4O%V*%jxwuIQd5APJZh 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%0A)=c1x$`MvcNrB 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

tvm4F+V@Zd3Vn3 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 z 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 { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsamimc_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains EdDSA MiMC: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "eddsamimc_test.circom")); }); it("Sign a single number", async () => { @@ -33,7 +28,7 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], @@ -42,7 +37,8 @@ describe("EdDSA MiMC test", function () { S: signature.S, M: msg}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); it("Detect Invalid signature", async () => { @@ -57,7 +53,7 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); try { - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], @@ -84,7 +80,7 @@ describe("EdDSA MiMC test", function () { assert(eddsa.verifyMiMC(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, Ax: pubKey[0], Ay: pubKey[1], @@ -93,6 +89,7 @@ describe("EdDSA MiMC test", function () { S: signature.S, M: msg}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/eddsaposeidon.js b/test/eddsaposeidon.js index 5ed5b97..2360cd7 100644 --- a/test/eddsaposeidon.js +++ b/test/eddsaposeidon.js @@ -1,25 +1,21 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const eddsa = require("../src/eddsa.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - describe("EdDSA Poseidon test", function () { let circuit; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "eddsaposeidon_test.circom")); - console.log("NConstrains EdDSA Poseidon: " + circuit.nConstraints); }); it("Sign a single number", async () => { @@ -33,7 +29,7 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], @@ -42,7 +38,8 @@ describe("EdDSA Poseidon test", function () { S: signature.S, M: msg}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); it("Detect Invalid signature", async () => { @@ -57,7 +54,7 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); try { - circuit.calculateWitness({ + await circuit.calculateWitness({ enabled: 1, Ax: pubKey[0], Ay: pubKey[1], @@ -84,7 +81,7 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, Ax: pubKey[0], Ay: pubKey[1], @@ -93,6 +90,7 @@ describe("EdDSA Poseidon test", function () { S: signature.S, M: msg}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/escalarmul.js b/test/escalarmul.js index f183550..955057b 100644 --- a/test/escalarmul.js +++ b/test/escalarmul.js @@ -1,172 +1,117 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; +const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - - -const q=bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617"); -function addPoint(a,b) { - const cta = bigInt("168700"); - const d = bigInt("168696"); - - const res = []; - res[0] = bigInt((a[0]*b[1] + b[0]*a[1]) * bigInt(bigInt.one + d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); - res[1] = bigInt((a[1]*b[1] - cta*a[0]*b[0]) * bigInt(bigInt.one - d*a[0]*b[0]*a[1]*b[1]).inverse(q)).affine(q); - return res; -} - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -describe("Exponentioation test", () => { +describe("Exponentioation test", function () { + + this.timeout(100000); + it("Should generate the Exponentiation table in k=0", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test.circom")); -// console.log(JSON.stringify(cirDef, null, 1)); + const w = await circuit.calculateWitness({in: 1}); -// assert.equal(cirDef.nVars, 2); + // TODO + // assert(circuit.checkWitness(w)); - const circuit = new snarkjs.Circuit(cirDef); + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; - console.log("NConstrains: " + circuit.nConstraints); + let dbl= [bigInt("0"), bigInt("1")]; - const w = circuit.calculateWitness({in: 1}); - - assert(circuit.checkWitness(w)); - - let g = [bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] - - dbl= [bigInt("0"), snarkjs.bigInt("1")]; + const expectedOut = []; for (let i=0; i<16; i++) { - const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; - const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; - // console.log(xout1.toString()); - // console.log(yout1.toString()); - // console.log(dbl[0]); - // console.log(dbl[1]); - - assert(xout1.equals(dbl[0])); - assert(yout1.equals(dbl[1])); - - dbl = addPoint([xout1, yout1],g); + expectedOut.push(dbl); + dbl = babyJub.addPoint(dbl,g); } + await circuit.assertOut(w, {out: expectedOut}); + }); it("Should generate the Exponentiation table in k=3", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmulw4table_test3.circom")); -// console.log(JSON.stringify(cirDef, null, 1)); + const w = await circuit.calculateWitness({in: 1}); -// assert.equal(cirDef.nVars, 2); + // TODO + // assert(circuit.checkWitness(w)); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains: " + circuit.nConstraints); - - const w = circuit.calculateWitness({in: 1}); - - assert(circuit.checkWitness(w)); - - let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; for (let i=0; i<12;i++) { - g = addPoint(g,g); + g = babyJub.addPoint(g,g); } - dbl= [snarkjs.bigInt("0"), snarkjs.bigInt("1")]; + let dbl= [bigInt("0"), bigInt("1")]; + + const expectedOut = []; for (let i=0; i<16; i++) { - const xout1 = w[circuit.getSignalIdx(`main.out[${i}][0]`)]; - const yout1 = w[circuit.getSignalIdx(`main.out[${i}][1]`)]; + expectedOut.push(dbl); - - // console.log(xout1.toString()); - // console.log(yout1.toString()); - // console.log(dbl[0]); - // console.log(dbl[1]); - - assert(xout1.equals(dbl[0])); - assert(yout1.equals(dbl[1])); - - dbl = addPoint([xout1, yout1],g); + dbl = babyJub.addPoint(dbl,g); } + await circuit.assertOut(w, {out: expectedOut}); + }); it("Should exponentiate g^31", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test.circom"), {reduceConstraints: true}); -// console.log(JSON.stringify(cirDef, null, 1)); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test.circom")); -// assert.equal(cirDef.nVars, 2); + const w = await circuit.calculateWitness({"in": 31}); - const circuit = new snarkjs.Circuit(cirDef); + // TODO + // assert(circuit.checkWitness(w)); - console.log("NConstrains: " + circuit.nConstraints); + let g = [ + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; - const w = circuit.calculateWitness({"in": 31}); - - assert(circuit.checkWitness(w)); - - let g = [snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")] - - let c = [0n, 1n]; + let c = [bigInt(0), bigInt(1)]; for (let i=0; i<31;i++) { - c = addPoint(c,g); + c = babyJub.addPoint(c,g); } - const xout = w[circuit.getSignalIdx(`main.out[0]`)]; - const yout = w[circuit.getSignalIdx(`main.out[1]`)]; + await circuit.assertOut(w, {out: c}); -/* - console.log(xout.toString()); - console.log(yout.toString()); -*/ - assert(xout.equals(c[0])); - assert(yout.equals(c[1])); - - console.log("-------") - const w2 = circuit.calculateWitness({"in": (1n<<252n)+1n}); - - const xout2 = w2[circuit.getSignalIdx(`main.out[0]`)]; - const yout2 = w2[circuit.getSignalIdx(`main.out[1]`)]; + const w2 = await circuit.calculateWitness({"in": bigInt(1).shiftLeft(252).add(bigInt.one)}); c = [g[0], g[1]]; for (let i=0; i<252;i++) { - c = addPoint(c,c); + c = babyJub.addPoint(c,c); } - c = addPoint(c,g); + c = babyJub.addPoint(c,g); - // console.log(xout2.toString()); - // console.log(yout2.toString()); - // console.log(c[0].toString()); - // console.log(c[1].toString()); - - assert(xout2.equals(c[0])); - assert(yout2.equals(c[1])); + await circuit.assertOut(w2, {out: c}); }).timeout(10000000); it("Number of constrains for 256 bits", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); - const circuit = new snarkjs.Circuit(cirDef); + const circuit = await tester(path.join(__dirname, "circuits", "escalarmul_test_min.circom")); - console.log("NConstrains: " + circuit.nConstraints); }).timeout(10000000); }); diff --git a/test/escalarmulany.js b/test/escalarmulany.js index 2d33827..a3e5973 100644 --- a/test/escalarmulany.js +++ b/test/escalarmulany.js @@ -1,12 +1,7 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); - -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; - +const bigInt = require("big-integer"); +const tester = require("circom").tester; function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); @@ -18,41 +13,35 @@ describe("Escalarmul test", function () { this.timeout(100000); let g = [ - snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; before( async() => { - const cirDefEMulAny = await compiler(path.join(__dirname, "circuits", "escalarmulany_test.circom")); - circuitEMulAny = new snarkjs.Circuit(cirDefEMulAny); - console.log("NConstrains Escalarmul any: " + circuitEMulAny.nConstraints); + circuitEMulAny = await tester(path.join(__dirname, "circuits", "escalarmulany_test.circom")); }); it("Should generate Same escalar mul", async () => { - const w = circuitEMulAny.calculateWitness({"e": 1, "p": g}); + const w = await circuitEMulAny.calculateWitness({"e": 1, "p": g}); - assert(circuitEMulAny.checkWitness(w)); + // TODO + // assert(circuitEMulAny.checkWitness(w)); - const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; - const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + await circuitEMulAny.assertOut(w, {out: g}); - assert(xout.equals(g[0])); - assert(yout.equals(g[1])); }); it("If multiply by order should return 0", async () => { const r = bigInt("2736030358979909402780800718157159386076813972158567259200215660948447373041"); - const w = circuitEMulAny.calculateWitness({"e": r, "p": g}); + const w = await circuitEMulAny.calculateWitness({"e": r, "p": g}); - assert(circuitEMulAny.checkWitness(w)); + // TODO + // assert(circuitEMulAny.checkWitness(w)); - const xout = w[circuitEMulAny.getSignalIdx("main.out[0]")]; - const yout = w[circuitEMulAny.getSignalIdx("main.out[1]")]; + await circuitEMulAny.assertOut(w, {out: [0,1]}); - assert(xout.equals(bigInt.zero)); - assert(yout.equals(bigInt.one)); }); }); diff --git a/test/escalarmulfix.js b/test/escalarmulfix.js index 77f6c97..28f4769 100644 --- a/test/escalarmulfix.js +++ b/test/escalarmulfix.js @@ -1,14 +1,11 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyjub = require("../src/babyjub"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -19,35 +16,29 @@ describe("Escalarmul test", function () { this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - console.log("NConstrains Escalarmul fix: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "escalarmulfix_test.circom")); }); it("Should generate Same escalar mul", async () => { - const w = circuit.calculateWitness({"e": 0}); + const w = await circuit.calculateWitness({"e": 0}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: [0,1]}); - assert(xout.equals(0)); - assert(yout.equals(1)); }); it("Should generate Same escalar mul", async () => { - const w = circuit.calculateWitness({"e": 1}); + const w = await circuit.calculateWitness({"e": 1}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + await circuit.assertOut(w, {out: babyjub.Base8}); - assert(xout.equals(babyjub.Base8[0])); - assert(yout.equals(babyjub.Base8[1])); }); it("Should generate scalar mul of a specific constant", async () => { @@ -58,17 +49,15 @@ describe("Escalarmul test", function () { bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; - const w = circuit.calculateWitness({"e": s}); + const w = await circuit.calculateWitness({"e": s}); - assert(circuit.checkWitness(w)); - - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + // TODO + // assert(circuit.checkWitness(w)); const expectedRes = babyjub.mulPointEscalar(base8, s); - assert(xout.equals(expectedRes[0])); - assert(yout.equals(expectedRes[1])); + await circuit.assertOut(w, {out: expectedRes}); + }); it("Should generate scalar mul of the firsts 50 elements", async () => { @@ -81,31 +70,25 @@ describe("Escalarmul test", function () { for (let i=0; i<50; i++) { const s = bigInt(i); - const w = circuit.calculateWitness({"e": s}); + const w = await circuit.calculateWitness({"e": s}); - assert(circuit.checkWitness(w)); - - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; + // TODO + // assert(circuit.checkWitness(w)); const expectedRes = babyjub.mulPointEscalar(base8, s); - assert(xout.equals(expectedRes[0])); - assert(yout.equals(expectedRes[1])); + await circuit.assertOut(w, {out: expectedRes}); } }); it("If multiply by order should return 0", async () => { - const w = circuit.calculateWitness({"e": babyjub.subOrder }); + const w = await circuit.calculateWitness({"e": babyjub.subOrder }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - const xout = w[circuit.getSignalIdx("main.out[0]")]; - const yout = w[circuit.getSignalIdx("main.out[1]")]; - - assert(xout.equals(bigInt.zero)); - assert(yout.equals(bigInt.one)); + await circuit.assertOut(w, {out: [0,1]}); }); }); diff --git a/test/mimccircuit.js b/test/mimccircuit.js index f45db3d..d579650 100644 --- a/test/mimccircuit.js +++ b/test/mimccircuit.js @@ -1,35 +1,26 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const tester = require("circom").tester; const mimcjs = require("../src/mimc7.js"); -const assert = chai.assert; - describe("MiMC Circuit test", function () { let circuit; this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("MiMC constraints: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "mimc_test.circom")); }); it("Should check constrain", async () => { - const w = circuit.calculateWitness({x_in: 1, k: 2}); - - const res = w[circuit.getSignalIdx("main.out")]; + const w = await circuit.calculateWitness({x_in: 1, k: 2}); const res2 = mimcjs.hash(1,2,91); - assert.equal(res.toString(), res2.toString()); - - assert(circuit.checkWitness(w)); + await circuit.assertOut(w, {out: res2}); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/mimcspongecircuit.js b/test/mimcspongecircuit.js index b114924..405f153 100644 --- a/test/mimcspongecircuit.js +++ b/test/mimcspongecircuit.js @@ -1,11 +1,8 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const tester = require("circom").tester; const mimcjs = require("../src/mimcsponge.js"); -const assert = chai.assert; describe("MiMC Sponge Circuit test", function () { let circuit; @@ -13,46 +10,30 @@ describe("MiMC Sponge Circuit test", function () { this.timeout(100000); it("Should check permutation", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); - circuit = new snarkjs.Circuit(cirDef); + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_test.circom")); - console.log("MiMC Feistel constraints: " + circuit.nConstraints); - - const w = circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); - - const xLout = w[circuit.getSignalIdx("main.xL_out")]; - const xRout = w[circuit.getSignalIdx("main.xR_out")]; + const w = await circuit.calculateWitness({xL_in: 1, xR_in: 2, k: 3}); const out2 = mimcjs.hash(1,2,3); - assert.equal(xLout.toString(), out2.xL.toString()); - assert.equal(xRout.toString(), out2.xR.toString()); + await circuit.assertOut(w, {xL_out: out2.xL, xR_out: out2.xR}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); it("Should check hash", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); + circuit = await tester(path.join(__dirname, "circuits", "mimc_sponge_hash_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - - console.log("MiMC Sponge constraints: " + circuit.nConstraints); - - const w = circuit.calculateWitness({ins: [1, 2], k: 0}); - - const o1 = w[circuit.getSignalIdx("main.outs[0]")]; - const o2 = w[circuit.getSignalIdx("main.outs[1]")]; - const o3 = w[circuit.getSignalIdx("main.outs[2]")]; + const w = await circuit.calculateWitness({ins: [1, 2], k: 0}); const out2 = mimcjs.multiHash([1,2], 0, 3); - assert.equal(o1.toString(), out2[0].toString()); - assert.equal(o2.toString(), out2[1].toString()); - assert.equal(o3.toString(), out2[2].toString()); - - assert(circuit.checkWitness(w)); + await circuit.assertOut(w, {outs: out2}); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/montgomery.js b/test/montgomery.js index 0de3ca0..50aea4c 100644 --- a/test/montgomery.js +++ b/test/montgomery.js @@ -1,13 +1,11 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - describe("Montgomery test", function () { let circuitE2M; let circuitM2E; @@ -15,43 +13,37 @@ describe("Montgomery test", function () { let circuitMDouble; let g = [ - snarkjs.bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), - snarkjs.bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203")]; + bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), + bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") + ]; let mg, mg2, g2, g3, mg3; this.timeout(100000); before( async() => { - const cirDefE2M = await compiler(path.join(__dirname, "circuits", "edwards2montgomery.circom")); - circuitE2M = new snarkjs.Circuit(cirDefE2M); - console.log("NConstrains Edwards -> Montgomery: " + circuitE2M.nConstraints); - - const cirDefM2E = await compiler(path.join(__dirname, "circuits", "montgomery2edwards.circom")); - circuitM2E = new snarkjs.Circuit(cirDefM2E); - console.log("NConstrains Montgomery -> Edwards: " + circuitM2E.nConstraints); - - const cirDefMAdd = await compiler(path.join(__dirname, "circuits", "montgomeryadd.circom")); - circuitMAdd = new snarkjs.Circuit(cirDefMAdd); - console.log("NConstrains Montgomery Add: " + circuitMAdd.nConstraints); - - const cirDefMDouble = await compiler(path.join(__dirname, "circuits", "montgomerydouble.circom")); - circuitMDouble = new snarkjs.Circuit(cirDefMDouble); - console.log("NConstrains Montgomery Double: " + circuitMDouble.nConstraints); + circuitE2M = await tester(path.join(__dirname, "circuits", "edwards2montgomery.circom")); + await circuitE2M.loadSymbols(); + circuitM2E = await tester(path.join(__dirname, "circuits", "montgomery2edwards.circom")); + await circuitM2E.loadSymbols(); + circuitMAdd = await tester(path.join(__dirname, "circuits", "montgomeryadd.circom")); + await circuitMAdd.loadSymbols(); + circuitMDouble = await tester(path.join(__dirname, "circuits", "montgomerydouble.circom")); + await circuitMDouble.loadSymbols(); }); it("Convert Edwards to Montgomery and back again", async () => { let w, xout, yout; - w = circuitE2M.calculateWitness({ in: g}); + w = await circuitE2M.calculateWitness({ in: g}); - xout = w[circuitE2M.getSignalIdx("main.out[0]")]; - yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + xout = w[circuitE2M.symbols["main.out[0]"].idxWit]; + yout = w[circuitE2M.symbols["main.out[1]"].idxWit]; mg = [xout, yout]; - w = circuitM2E.calculateWitness({ in: [xout, yout]}); + w = await circuitM2E.calculateWitness({ in: [xout, yout]}); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; + yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; assert(xout.equals(g[0])); assert(yout.equals(g[1])); @@ -61,17 +53,17 @@ describe("Montgomery test", function () { g2 = babyJub.addPoint(g,g); - w = circuitMDouble.calculateWitness({ in: mg}); + w = await circuitMDouble.calculateWitness({ in: mg}); - xout = w[circuitE2M.getSignalIdx("main.out[0]")]; - yout = w[circuitE2M.getSignalIdx("main.out[1]")]; + xout = w[circuitE2M.symbols["main.out[0]"].idxWit]; + yout = w[circuitE2M.symbols["main.out[1]"].idxWit]; mg2 = [xout, yout]; - w = circuitM2E.calculateWitness({ in: mg2}); + w = await circuitM2E.calculateWitness({ in: mg2}); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; + yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; assert(xout.equals(g2[0])); assert(yout.equals(g2[1])); @@ -81,17 +73,17 @@ describe("Montgomery test", function () { g3 = babyJub.addPoint(g,g2); - w = circuitMAdd.calculateWitness({ in1: mg, in2: mg2}); + w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}); - xout = w[circuitMAdd.getSignalIdx("main.out[0]")]; - yout = w[circuitMAdd.getSignalIdx("main.out[1]")]; + xout = w[circuitMAdd.symbols["main.out[0]"].idxWit]; + yout = w[circuitMAdd.symbols["main.out[1]"].idxWit]; mg3 = [xout, yout]; - w = circuitM2E.calculateWitness({ in: mg3}); + w = await circuitM2E.calculateWitness({ in: mg3}); - xout = w[circuitM2E.getSignalIdx("main.out[0]")]; - yout = w[circuitM2E.getSignalIdx("main.out[1]")]; + xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; + yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; assert(xout.equals(g3[0])); assert(yout.equals(g3[1])); diff --git a/test/multiplexer.js b/test/multiplexer.js index ee62566..0f14c3d 100644 --- a/test/multiplexer.js +++ b/test/multiplexer.js @@ -1,25 +1,13 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; -const assert = chai.assert; +describe("Mux4 test", function() { + this.timeout(100000); -const bigInt = snarkjs.bigInt; - - -describe("Mux4 test", () => { it("Should create a constant multiplexer 4", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux4_1.circom")); - -// console.log(JSON.stringify(cirDef, null, 1)); - -// assert.equal(cirDef.nVars, 2); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux4: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "mux4_1.circom")); const ct16 = [ bigInt("123"), @@ -41,24 +29,19 @@ describe("Mux4 test", () => { ]; for (let i=0; i<16; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - assert(w[0].equals(bigInt(1))); + await circuit.assertOut(w, {out: ct16[i]}); - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct16[i])); } }); it("Should create a constant multiplexer 3", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux3_1.circom")); - - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux3: " + circuit.nConstraints); + const circuit = await tester(path.join(__dirname, "circuits", "mux3_1.circom")); const ct8 = [ bigInt("37"), @@ -72,23 +55,19 @@ describe("Mux4 test", () => { ]; for (let i=0; i<8; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }); - assert(w[0].equals(bigInt(1))); + // TODO + // assert(circuit.checkWitness(w)); - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct8[i]}); } }); it("Should create a constant multiplexer 2", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux2_1.circom")); + const circuit = await tester(path.join(__dirname, "circuits", "mux2_1.circom")); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux2: " + circuit.nConstraints); - - const ct8 = [ + const ct4 = [ bigInt("37"), bigInt("47"), bigInt("53"), @@ -96,38 +75,30 @@ describe("Mux4 test", () => { ]; for (let i=0; i<4; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - assert(w[0].equals(bigInt(1))); - - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct4[i]}); } }); it("Should create a constant multiplexer 1", async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "mux1_1.circom")); + const circuit = await tester(path.join(__dirname, "circuits", "mux1_1.circom")); - const circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Mux1: " + circuit.nConstraints); - - const ct8 = [ + const ct2 = [ bigInt("37"), bigInt("47"), ]; for (let i=0; i<2; i++) { - const w = circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); - assert(w[0].equals(bigInt(1))); - - // console.log(i + " -> " + w[circuit.getSignalIdx("main.out")].toString()); - assert(w[circuit.getSignalIdx("main.out")].equals(ct8[i])); + await circuit.assertOut(w, {out: ct2[i]}); } }); }); diff --git a/test/point2bits.js b/test/point2bits.js index 51191d5..c86d46e 100644 --- a/test/point2bits.js +++ b/test/point2bits.js @@ -1,11 +1,5 @@ -const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); - -const assert = chai.assert; - -const bigInt = snarkjs.bigInt; +const tester = require("circom").tester; const babyJub = require("../src/babyjub.js"); @@ -14,20 +8,18 @@ describe("Point 2 bits test", function() { let circuit; this.timeout(100000); before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "pointbits_loopback.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains Point2Bits loopback: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "pointbits_loopback.circom")); }); it("Should do the both convertions for 8Base", async () => { - const w = circuit.calculateWitness({ in: babyJub.Base8}); + const w = await circuit.calculateWitness({ in: babyJub.Base8}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); it("Should do the both convertions for Zero point", async () => { - const w = circuit.calculateWitness({ in: [0, 1]}); + const w = await circuit.calculateWitness({ in: [0, 1]}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/poseidoncircuit.js b/test/poseidoncircuit.js index 5bb880f..0d7654e 100644 --- a/test/poseidoncircuit.js +++ b/test/poseidoncircuit.js @@ -1,8 +1,8 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -var blake2b = require('blake2b'); +var blake2b = require("blake2b"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const poseidon = require("../src/poseidon.js"); @@ -11,9 +11,9 @@ const assert = chai.assert; describe("Blake2b version test", function() { it("Should give the expected output for blake2b version", async () => { var output = new Uint8Array(32); - var input = Buffer.from('poseidon_constants'); - h = blake2b(output.length).update(input).digest('hex') - assert.equal('e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1', h); + var input = Buffer.from("poseidon_constants"); + const h = blake2b(output.length).update(input).digest("hex"); + assert.equal("e57ba154fb2c47811dc1a2369b27e25a44915b4e4ece4eb8ec74850cb78e01b1", h); }); }); @@ -23,38 +23,35 @@ describe("Poseidon Circuit test", function () { this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "poseidon_test.circom")); + circuit = await tester(path.join(__dirname, "circuits", "poseidon_test.circom")); - circuit = new snarkjs.Circuit(cirDef); - - console.log("Poseidon constraints: " + circuit.nConstraints); }); it("Should check constrain of hash([1, 2])", async () => { - const w = circuit.calculateWitness({inputs: [1, 2]}); - - const res = w[circuit.getSignalIdx("main.out")]; + const w = await circuit.calculateWitness({inputs: [1, 2]}); const hash = poseidon.createHash(6, 8, 57); const res2 = hash([1,2]); - assert.equal('12242166908188651009877250812424843524687801523336557272219921456462821518061', res2.toString()); - assert.equal(res.toString(), res2.toString()); - assert(circuit.checkWitness(w)); + assert.equal("12242166908188651009877250812424843524687801523336557272219921456462821518061", res2.toString()); + + await circuit.assertOut(w, {out : res2}); + + // TODO + // assert(circuit.checkWitness(w)); }); it("Should check constrain of hash([3, 4])", async () => { - const w = circuit.calculateWitness({inputs: [3, 4]}); - - const res = w[circuit.getSignalIdx("main.out")]; + const w = await circuit.calculateWitness({inputs: [3, 4]}); const hash = poseidon.createHash(6, 8, 57); const res2 = hash([3, 4]); - assert.equal('17185195740979599334254027721507328033796809509313949281114643312710535000993', res2.toString()); + assert.equal("17185195740979599334254027721507328033796809509313949281114643312710535000993", res2.toString()); - assert.equal(res.toString(), res2.toString()); + await circuit.assertOut(w, {out : res2}); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); }); }); diff --git a/test/rawsmt3.circom b/test/rawsmt3.circom deleted file mode 100644 index 1ac1e40..0000000 --- a/test/rawsmt3.circom +++ /dev/null @@ -1,23 +0,0 @@ - -include "../circuits/smt/smtverifier.circom"; -template SMT(nLevels) { - signal input root; - signal input mtp[nLevels]; - signal input hi; - signal input hv; - - component smtClaimExists = SMTVerifier(nLevels); - smtClaimExists.enabled <== 1; - smtClaimExists.fnc <== 0; - smtClaimExists.root <== root; - for (var i=0; i { +describe("Sign test", function() { let circuit; + this.timeout(100000); + before( async() => { - const cirDef = await compiler(path.join(__dirname, "circuits", "sign_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "sign_test.circom")); }); it("Sign of 0", async () => { const inp = getBits(bigInt.zero, 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of 3", async () => { const inp = getBits(bigInt(3), 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2", async () => { - const inp = getBits(q.shr(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.shiftRight(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(0)) ); + await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2+1", async () => { - const inp = getBits(q.shr(bigInt.one).add(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.shiftRight(bigInt.one).add(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of q-1", async () => { - const inp = getBits(q.sub(bigInt.one), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(q.minus(bigInt.one), 254); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of q", async () => { const inp = getBits(q, 254); - const w = circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); it("Sign of all ones", async () => { - const inp = getBits(bigInt(1).shl(254).sub(bigInt(1)), 254); - const w = circuit.calculateWitness({in: inp}); + const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt(1)), 254); + const w = await circuit.calculateWitness({in: inp}); - assert( w[circuit.getSignalIdx("main.sign")].equals(bigInt(1)) ); + await circuit.assertOut(w, {sign: 1}); }); - - }); diff --git a/test/smtjs.js b/test/smtjs.js index eb360ab..732a398 100644 --- a/test/smtjs.js +++ b/test/smtjs.js @@ -1,12 +1,11 @@ const chai = require("chai"); -const snarkjs = require("snarkjs"); + +const bigInt = require("big-integer"); const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function stringifyBigInts(o) { if ((typeof(o) == "bigint") || (o instanceof bigInt)) { diff --git a/test/smtprocessor.js b/test/smtprocessor.js index d283277..a1caf96 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -1,14 +1,12 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -19,7 +17,7 @@ async function testInsert(tree, key, value, circuit, log ) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [1,0], oldRoot: res.oldRoot, siblings: siblings, @@ -30,9 +28,11 @@ async function testInsert(tree, key, value, circuit, log ) { newValue: value }, log); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); + // TODO + // assert(circuit.checkWitness(w)); + + await circuit.assertOut(w, {newRoot: res.newRoot}); + } async function testDelete(tree, key, circuit) { @@ -40,7 +40,7 @@ async function testDelete(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [1,1], oldRoot: res.oldRoot, siblings: siblings, @@ -51,10 +51,10 @@ async function testDelete(tree, key, circuit) { newValue: res.delValue }); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; + // TODO + // assert(circuit.checkWitness(w)); - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); + await circuit.assertOut(w, {newRoot: res.newRoot}); } async function testUpdate(tree, key, newValue, circuit) { @@ -62,7 +62,7 @@ async function testUpdate(tree, key, newValue, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [0,1], oldRoot: res.oldRoot, siblings: siblings, @@ -73,10 +73,10 @@ async function testUpdate(tree, key, newValue, circuit) { newValue: res.newValue }); - const root1 = w[circuit.getSignalIdx("main.newRoot")]; + // TODO + // assert(circuit.checkWitness(w)); - assert(circuit.checkWitness(w)); - assert(root1.equals(res.newRoot)); + await circuit.assertOut(w, {newRoot: res.newRoot}); } @@ -87,11 +87,8 @@ describe("SMT test", function () { this.timeout(10000000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains SMTProcessor: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "smtprocessor10_test.circom")); + await circuit.loadSymbols(); tree = await smt.newMemEmptyTrie(); }); @@ -179,7 +176,7 @@ describe("SMT test", function () { it("Should match a NOp with random vals", async () => { let siblings = []; while (siblings.length<10) siblings.push(bigInt(88)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ fnc: [0,0], oldRoot: 11, siblings: siblings, @@ -190,12 +187,13 @@ describe("SMT test", function () { newValue: 77 }); - const root1 = w[circuit.getSignalIdx("main.oldRoot")]; - const root2 = w[circuit.getSignalIdx("main.newRoot")]; + const root1 = w[circuit.symbols["main.oldRoot"].idxWit]; + const root2 = w[circuit.symbols["main.newRoot"].idxWit]; + + // TODO + // assert(circuit.checkWitness(w)); - assert(circuit.checkWitness(w)); assert(root1.equals(root2)); - }); it("Should update an element", async () => { const tree1 = await smt.newMemEmptyTrie(); diff --git a/test/smtverifier.js b/test/smtverifier.js index ce6cd05..9432f47 100644 --- a/test/smtverifier.js +++ b/test/smtverifier.js @@ -1,14 +1,12 @@ const chai = require("chai"); const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); +const bigInt = require("big-integer"); +const tester = require("circom").tester; const smt = require("../src/smt.js"); const assert = chai.assert; -const bigInt = snarkjs.bigInt; - function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } @@ -21,7 +19,7 @@ async function testInclusion(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, fnc: 0, root: tree.root, @@ -33,7 +31,8 @@ async function testInclusion(tree, key, circuit) { value: res.foundValue }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); } async function testExclusion(tree, key, circuit) { @@ -43,7 +42,7 @@ async function testExclusion(tree, key, circuit) { let siblings = res.siblings; while (siblings.length<10) siblings.push(bigInt(0)); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 1, fnc: 1, root: tree.root, @@ -55,7 +54,8 @@ async function testExclusion(tree, key, circuit) { value: 0 }); - assert(circuit.checkWitness(w)); + // TODO + // assert(circuit.checkWitness(w)); } describe("SMT test", function () { @@ -65,11 +65,7 @@ describe("SMT test", function () { this.timeout(100000); before( async () => { - const cirDef = await compiler(path.join(__dirname, "circuits", "smtverifier10_test.circom")); - - circuit = new snarkjs.Circuit(cirDef); - - console.log("NConstrains SMTVerifier: " + circuit.nConstraints); + circuit = await tester(path.join(__dirname, "circuits", "smtverifier10_test.circom")); tree = await smt.newMemEmptyTrie(); await tree.insert(7,77); @@ -97,7 +93,7 @@ describe("SMT test", function () { let siblings = []; for (let i=0; i<10; i++) siblings.push(i); - const w = circuit.calculateWitness({ + const w = await circuit.calculateWitness({ enabled: 0, fnc: 0, root: 1, @@ -108,7 +104,9 @@ describe("SMT test", function () { key: 44, value: 0 }); - assert(circuit.checkWitness(w)); + + // TODO + // assert(circuit.checkWitness(w)); }); it("Check inclussion Adria case", async () => { diff --git a/test/smtverifier_adria.js b/test/smtverifier_adria.js deleted file mode 100644 index 3b93d09..0000000 --- a/test/smtverifier_adria.js +++ /dev/null @@ -1,98 +0,0 @@ -const path = require("path"); -const snarkjs = require("snarkjs"); -const compiler = require("circom"); -const fs = require("fs") - -const bigInt = snarkjs.bigInt; -const smt = require("../src/smt.js"); - -const circuitSource = ` -include "../circuits/smt/smtverifier.circom"; -template SMT(nLevels) { - signal input root; - signal input mtp[nLevels]; - signal input hi; - signal input hv; - - component smtClaimExists = SMTVerifier(nLevels); - smtClaimExists.enabled <== 1; - smtClaimExists.fnc <== 0; - smtClaimExists.root <== root; - for (var i=0; i { - circuitFileName = path.join(__dirname, ".", "rawsmt3.circom"); - fs.writeFileSync(circuitFileName,circuitSource); - }); - - const levels = 4; - async function testsmt3(e1, e2) { - let tree = await smt.newMemEmptyTrie(); - - // insert e1, e2 - await tree.insert(e1.hi, e1.hv); - await tree.insert(e2.hi, e2.hv); - - // generate proof for e1 - const findInfo = await tree.find(e1.hi); - const siblings = findInfo.siblings; - while (siblings.length < levels) siblings.push(bigInt(0)); - - const input = { - root: tree.root, - mtp: siblings, - hi: e1.hi, - hv: e1.hv, - }; - - const compiledCircuit = await compiler( - circuitFileName, - { reduceConstraints: false } - ); - - const circuit = new snarkjs.Circuit(compiledCircuit); - const witness = circuit.calculateWitness(input); - circuit.checkWitness(witness); - } - - it("TestSmts", async () => { - - const e1 = { - hi: bigInt("17124152697573569611556136390143205198134245887034837071647643529178599000839"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - const e2ok = { - hi: bigInt("16498254692537945203721083102154618658340563351558973077349594629411025251262"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - const e2fail = { - hi: bigInt("17195092312975762537892237130737365903429674363577646686847513978084990105579"), - hv: bigInt("19650379996168153643111744440707177573540245771926102415571667548153444658179"), - }; - - console.log("test e1, e2ok"); - await testsmt3(e1, e2ok); - - console.log("test e1, e2fail"); - await testsmt3(e1, e2fail); - }); -}); - From 7a6b0eda6e03e0207a3828ae2eb83a3a6fda6b8c Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Mon, 16 Dec 2019 21:35:52 +0100 Subject: [PATCH 08/15] All testst finished with c_build --- test/babyjub.js | 7 +++---- test/binsum.js | 10 +++++----- test/eddsa.js | 4 +--- test/eddsamimc.js | 9 +++++---- test/eddsaposeidon.js | 6 ++---- test/escalarmul.js | 9 +++------ test/escalarmulany.js | 6 ++---- test/escalarmulfix.js | 15 +++++---------- test/mimccircuit.js | 3 +-- test/mimcspongecircuit.js | 6 ++---- test/multiplexer.js | 14 ++++---------- test/point2bits.js | 6 ++---- test/poseidoncircuit.js | 6 ++---- test/smtprocessor.js | 12 ++++-------- test/smtverifier.js | 14 +++++++------- 15 files changed, 48 insertions(+), 79 deletions(-) diff --git a/test/babyjub.js b/test/babyjub.js index d41c039..e8a84a0 100644 --- a/test/babyjub.js +++ b/test/babyjub.js @@ -77,8 +77,8 @@ describe("Baby Jub test", function () { it("Should check (0,1) is a valid poiny", async() => { const w = await circuitTest.calculateWitness({x: 0, y:1}); - // TODO Check constraints - // assert(circuitTest.checkWitness(w)); + + await circuitTest.checkConstraints(w); }); it("Should check (1,0) is an invalid point", async() => { @@ -106,8 +106,7 @@ describe("Baby Jub test", function () { await circuitPbk.assertOut(w, {Ax : A[0], Ay: A[1]}); - // TODO Check constraints - // assert(circuitPbk.checkWitness(w)); + await circuitPbk.checkConstraints(w); }); }); diff --git a/test/binsum.js b/test/binsum.js index 32408f1..c0e94a8 100644 --- a/test/binsum.js +++ b/test/binsum.js @@ -9,13 +9,13 @@ const assert = chai.assert; describe("Sum test", function () { - this.timeout(100000); + this.timeout(100000000); it("Should create a constant circuit", async () => { const circuit = await tester(path.join(__dirname, "circuits", "constants_test.circom")); + await circuit.loadConstraints(); - // TODO - // assert.equal(cirDef.nVars, 2); + assert.equal(circuit.nWires, 2); const witness = await circuit.calculateWitness({ "in": bigInt("d807aa98", 16)}); @@ -24,9 +24,9 @@ describe("Sum test", function () { }); it("Should create a sum circuit", async () => { const circuit = await tester(path.join(__dirname, "circuits", "sum_test.circom")); + await circuit.loadConstraints(); - // TODO - // assert.equal(cirDef.nVars, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) + assert.equal(circuit.nWires, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }); diff --git a/test/eddsa.js b/test/eddsa.js index 81f79f0..c74ebe9 100644 --- a/test/eddsa.js +++ b/test/eddsa.js @@ -62,8 +62,6 @@ describe("EdDSA test", function () { const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); - // TODO - // assert(circuit.checkWitness(w)); - + await circuit.checkConstraints(w); }); }); diff --git a/test/eddsamimc.js b/test/eddsamimc.js index 62f202e..bdb56fc 100644 --- a/test/eddsamimc.js +++ b/test/eddsamimc.js @@ -37,8 +37,9 @@ describe("EdDSA MiMC test", function () { S: signature.S, M: msg}); - // TODO - // assert(circuit.checkWitness(w)); + + await circuit.checkConstraints(w); + }); it("Detect Invalid signature", async () => { @@ -89,7 +90,7 @@ describe("EdDSA MiMC test", function () { S: signature.S, M: msg}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); + }); }); diff --git a/test/eddsaposeidon.js b/test/eddsaposeidon.js index 2360cd7..bcd12e5 100644 --- a/test/eddsaposeidon.js +++ b/test/eddsaposeidon.js @@ -38,8 +38,7 @@ describe("EdDSA Poseidon test", function () { S: signature.S, M: msg}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Detect Invalid signature", async () => { @@ -90,7 +89,6 @@ describe("EdDSA Poseidon test", function () { S: signature.S, M: msg}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/escalarmul.js b/test/escalarmul.js index 955057b..ec60597 100644 --- a/test/escalarmul.js +++ b/test/escalarmul.js @@ -20,8 +20,7 @@ describe("Exponentioation test", function () { const w = await circuit.calculateWitness({in: 1}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); let g = [ bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), @@ -48,8 +47,7 @@ describe("Exponentioation test", function () { const w = await circuit.calculateWitness({in: 1}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); let g = [ bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), @@ -80,8 +78,7 @@ describe("Exponentioation test", function () { const w = await circuit.calculateWitness({"in": 31}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); let g = [ bigInt("5299619240641551281634865583518297030282874472190772894086521144482721001553"), diff --git a/test/escalarmulany.js b/test/escalarmulany.js index a3e5973..ef3dfc9 100644 --- a/test/escalarmulany.js +++ b/test/escalarmulany.js @@ -25,8 +25,7 @@ describe("Escalarmul test", function () { const w = await circuitEMulAny.calculateWitness({"e": 1, "p": g}); - // TODO - // assert(circuitEMulAny.checkWitness(w)); + await circuitEMulAny.checkConstraints(w); await circuitEMulAny.assertOut(w, {out: g}); @@ -37,8 +36,7 @@ describe("Escalarmul test", function () { const r = bigInt("2736030358979909402780800718157159386076813972158567259200215660948447373041"); const w = await circuitEMulAny.calculateWitness({"e": r, "p": g}); - // TODO - // assert(circuitEMulAny.checkWitness(w)); + await circuitEMulAny.checkConstraints(w); await circuitEMulAny.assertOut(w, {out: [0,1]}); diff --git a/test/escalarmulfix.js b/test/escalarmulfix.js index 28f4769..2d0a35c 100644 --- a/test/escalarmulfix.js +++ b/test/escalarmulfix.js @@ -23,8 +23,7 @@ describe("Escalarmul test", function () { const w = await circuit.calculateWitness({"e": 0}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: [0,1]}); @@ -34,8 +33,7 @@ describe("Escalarmul test", function () { const w = await circuit.calculateWitness({"e": 1}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: babyjub.Base8}); @@ -51,8 +49,7 @@ describe("Escalarmul test", function () { const w = await circuit.calculateWitness({"e": s}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); const expectedRes = babyjub.mulPointEscalar(base8, s); @@ -72,8 +69,7 @@ describe("Escalarmul test", function () { const w = await circuit.calculateWitness({"e": s}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); const expectedRes = babyjub.mulPointEscalar(base8, s); @@ -85,8 +81,7 @@ describe("Escalarmul test", function () { const w = await circuit.calculateWitness({"e": babyjub.subOrder }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: [0,1]}); }); diff --git a/test/mimccircuit.js b/test/mimccircuit.js index d579650..ae14125 100644 --- a/test/mimccircuit.js +++ b/test/mimccircuit.js @@ -20,7 +20,6 @@ describe("MiMC Circuit test", function () { await circuit.assertOut(w, {out: res2}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/mimcspongecircuit.js b/test/mimcspongecircuit.js index 405f153..3205534 100644 --- a/test/mimcspongecircuit.js +++ b/test/mimcspongecircuit.js @@ -19,8 +19,7 @@ describe("MiMC Sponge Circuit test", function () { await circuit.assertOut(w, {xL_out: out2.xL, xR_out: out2.xR}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); @@ -33,7 +32,6 @@ describe("MiMC Sponge Circuit test", function () { await circuit.assertOut(w, {outs: out2}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/multiplexer.js b/test/multiplexer.js index 0f14c3d..67b1975 100644 --- a/test/multiplexer.js +++ b/test/multiplexer.js @@ -4,7 +4,6 @@ const tester = require("circom").tester; describe("Mux4 test", function() { this.timeout(100000); - it("Should create a constant multiplexer 4", async () => { const circuit = await tester(path.join(__dirname, "circuits", "mux4_1.circom")); @@ -31,11 +30,9 @@ describe("Mux4 test", function() { for (let i=0; i<16; i++) { const w = await circuit.calculateWitness({ "selector": i }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: ct16[i]}); - } }); @@ -57,8 +54,7 @@ describe("Mux4 test", function() { for (let i=0; i<8; i++) { const w = await circuit.calculateWitness({ "selector": i }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: ct8[i]}); } @@ -77,8 +73,7 @@ describe("Mux4 test", function() { for (let i=0; i<4; i++) { const w = await circuit.calculateWitness({ "selector": i }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: ct4[i]}); } @@ -95,8 +90,7 @@ describe("Mux4 test", function() { for (let i=0; i<2; i++) { const w = await circuit.calculateWitness({ "selector": i }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {out: ct2[i]}); } diff --git a/test/point2bits.js b/test/point2bits.js index c86d46e..48eb88e 100644 --- a/test/point2bits.js +++ b/test/point2bits.js @@ -13,13 +13,11 @@ describe("Point 2 bits test", function() { it("Should do the both convertions for 8Base", async () => { const w = await circuit.calculateWitness({ in: babyJub.Base8}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Should do the both convertions for Zero point", async () => { const w = await circuit.calculateWitness({ in: [0, 1]}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/poseidoncircuit.js b/test/poseidoncircuit.js index 0d7654e..f1799aa 100644 --- a/test/poseidoncircuit.js +++ b/test/poseidoncircuit.js @@ -37,8 +37,7 @@ describe("Poseidon Circuit test", function () { await circuit.assertOut(w, {out : res2}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); it("Should check constrain of hash([3, 4])", async () => { @@ -51,7 +50,6 @@ describe("Poseidon Circuit test", function () { await circuit.assertOut(w, {out : res2}); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); }); }); diff --git a/test/smtprocessor.js b/test/smtprocessor.js index a1caf96..10b9beb 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -28,8 +28,7 @@ async function testInsert(tree, key, value, circuit, log ) { newValue: value }, log); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {newRoot: res.newRoot}); @@ -51,8 +50,7 @@ async function testDelete(tree, key, circuit) { newValue: res.delValue }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {newRoot: res.newRoot}); } @@ -73,8 +71,7 @@ async function testUpdate(tree, key, newValue, circuit) { newValue: res.newValue }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); await circuit.assertOut(w, {newRoot: res.newRoot}); } @@ -190,8 +187,7 @@ describe("SMT test", function () { const root1 = w[circuit.symbols["main.oldRoot"].idxWit]; const root2 = w[circuit.symbols["main.newRoot"].idxWit]; - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); assert(root1.equals(root2)); }); diff --git a/test/smtverifier.js b/test/smtverifier.js index 9432f47..475dd4d 100644 --- a/test/smtverifier.js +++ b/test/smtverifier.js @@ -31,8 +31,8 @@ async function testInclusion(tree, key, circuit) { value: res.foundValue }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); + } async function testExclusion(tree, key, circuit) { @@ -54,11 +54,11 @@ async function testExclusion(tree, key, circuit) { value: 0 }); - // TODO - // assert(circuit.checkWitness(w)); + await circuit.checkConstraints(w); + } -describe("SMT test", function () { +describe("SMT Verifier test", function () { let circuit; let tree; @@ -105,8 +105,8 @@ describe("SMT test", function () { value: 0 }); - // TODO - // assert(circuit.checkWitness(w)); + + await circuit.checkConstraints(w); }); it("Check inclussion Adria case", async () => { From bc0fb60f89090f8c9a2424348854b08ce7b19eb3 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Tue, 17 Dec 2019 17:12:29 +0100 Subject: [PATCH 09/15] SMT test title better explained --- test/smtprocessor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/smtprocessor.js b/test/smtprocessor.js index 10b9beb..8b418e5 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -77,7 +77,7 @@ async function testUpdate(tree, key, newValue, circuit) { } -describe("SMT test", function () { +describe("SMT Processor test", function () { let circuit; let tree; From 756f1f51e58db0b891b971e2fe63991a64fe2760 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Fri, 20 Dec 2019 21:55:07 +0100 Subject: [PATCH 10/15] Multithread --- test/circuits/in.json | 3 ++- test/eddsaposeidon.js | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/test/circuits/in.json b/test/circuits/in.json index ee2ba8c..89d127c 100644 --- a/test/circuits/in.json +++ b/test/circuits/in.json @@ -1 +1,2 @@ -{ "in": ["0", "0"]} +{"enabled":1,"Ax":"13277427435165878497778222415993513565335242147425444199013288855685581939618","Ay":"13622229784656158136036771217484571176836296686641868549125388198837476602820","R8x":"11220723668893468001994760120794694848178115379170651044669708829805665054484","R8y":"2367470421002446880004241260470975644531657398480773647535134774673409612366","S":"1307100909096544936550139783786226891472336052773077686618468233418583414320","M":"1234"} + diff --git a/test/eddsaposeidon.js b/test/eddsaposeidon.js index bcd12e5..3cc2f6e 100644 --- a/test/eddsaposeidon.js +++ b/test/eddsaposeidon.js @@ -2,6 +2,7 @@ const chai = require("chai"); const path = require("path"); const bigInt = require("big-integer"); const tester = require("circom").tester; +const utils = require("../src/utils"); const eddsa = require("../src/eddsa.js"); @@ -29,14 +30,19 @@ describe("EdDSA Poseidon test", function () { assert(eddsa.verifyPoseidon(msg, signature, pubKey)); - const w = await circuit.calculateWitness({ + const input = { enabled: 1, Ax: pubKey[0], Ay: pubKey[1], R8x: signature.R8[0], R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg + }; + + // console.log(JSON.stringify(utils.stringifyBigInts(input))); + + const w = await circuit.calculateWitness(input); await circuit.checkConstraints(w); }); From 4f11565ca483c1ca14fdb0ead67c01f6d01cb8ad Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Mon, 23 Dec 2019 19:36:26 +0100 Subject: [PATCH 11/15] Adapted circuits to the construction fase refactorization --- circuits/babyjub.circom | 2 +- circuits/eddsa.circom | 2 +- circuits/eddsamimc.circom | 2 +- circuits/eddsamimcsponge.circom | 2 +- circuits/eddsaposeidon.circom | 2 +- circuits/escalarmul.circom | 2 +- circuits/escalarmulw4table.circom | 2 +- circuits/mimc.circom | 2 +- circuits/mimcsponge.circom | 2 +- circuits/pedersen.circom | 2 +- circuits/pedersen_old.circom | 2 +- circuits/poseidon.circom | 4 ++-- circuits/sha256/constants.circom | 4 ++-- src/poseidon.js | 2 +- test/binsum.js | 2 +- test/circuits/escalarmul_test.circom | 2 +- test/circuits/escalarmul_test_min.circom | 4 ++-- test/circuits/escalarmulfix_test.circom | 4 ++-- test/circuits/escalarmulw4table.circom | 2 +- test/circuits/escalarmulw4table_test.circom | 4 ++-- test/circuits/escalarmulw4table_test3.circom | 6 +++--- 21 files changed, 28 insertions(+), 28 deletions(-) diff --git a/circuits/babyjub.circom b/circuits/babyjub.circom index 73cb84c..537b1a0 100644 --- a/circuits/babyjub.circom +++ b/circuits/babyjub.circom @@ -87,7 +87,7 @@ template BabyPbk() { signal output Ax; signal output Ay; - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsa.circom b/circuits/eddsa.circom index 1026774..bf126a7 100644 --- a/circuits/eddsa.circom +++ b/circuits/eddsa.circom @@ -122,7 +122,7 @@ template EdDSAVerifier(n) { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsamimc.circom b/circuits/eddsamimc.circom index aef5df5..5f0917a 100644 --- a/circuits/eddsamimc.circom +++ b/circuits/eddsamimc.circom @@ -100,7 +100,7 @@ template EdDSAMiMCVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsamimcsponge.circom b/circuits/eddsamimcsponge.circom index af38d57..8b2577d 100644 --- a/circuits/eddsamimcsponge.circom +++ b/circuits/eddsamimcsponge.circom @@ -100,7 +100,7 @@ template EdDSAMiMCSpongeVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/eddsaposeidon.circom b/circuits/eddsaposeidon.circom index 0d9faa0..5ed63c9 100644 --- a/circuits/eddsaposeidon.circom +++ b/circuits/eddsaposeidon.circom @@ -99,7 +99,7 @@ template EdDSAPoseidonVerifier() { // Calculate left side of equation left = S*B8 - var BASE8 = [ + var BASE8[2] = [ 5299619240641551281634865583518297030282874472190772894086521144482721001553, 16950150798460657717958625567821834550301663161624707787222815936182638968203 ]; diff --git a/circuits/escalarmul.circom b/circuits/escalarmul.circom index b3cc806..9cd13f7 100644 --- a/circuits/escalarmul.circom +++ b/circuits/escalarmul.circom @@ -71,7 +71,7 @@ template EscalarMulWindow(base, k) { signal input sel[4]; signal output out[2]; - var table; + var table[16][2]; component mux; component adder; diff --git a/circuits/escalarmulw4table.circom b/circuits/escalarmulw4table.circom index d056e66..83498fb 100644 --- a/circuits/escalarmulw4table.circom +++ b/circuits/escalarmulw4table.circom @@ -33,7 +33,7 @@ function EscalarMulW4Table(base, k) { var i; var p[2]; - var dbl = base; + var dbl[2] = base; for (i=0; i { for (let i=0; i Date: Thu, 23 Jan 2020 07:23:17 +0700 Subject: [PATCH 12/15] remove pows and shifts for optimization --- circuits/binsum.circom | 11 +- circuits/bitify.circom | 8 +- test/circuits/in.json | 260 ++++++++++++++++++++++++++++++++++++++++- 3 files changed, 273 insertions(+), 6 deletions(-) diff --git a/circuits/binsum.circom b/circuits/binsum.circom index 3783e26..6fd79ad 100644 --- a/circuits/binsum.circom +++ b/circuits/binsum.circom @@ -72,19 +72,26 @@ template BinSum(n, ops) { var k; var j; + var e2; + + e2 = 1; for (k=0; k> k) & 1; // Ensure out is binary out[k] * (out[k] - 1) === 0; - lout += out[k] * 2**k; + lout += out[k] * e2; + + e2 = e2+e2; } // Ensure the sum; diff --git a/circuits/bitify.circom b/circuits/bitify.circom index 2050e13..60fb89c 100644 --- a/circuits/bitify.circom +++ b/circuits/bitify.circom @@ -26,10 +26,12 @@ template Num2Bits(n) { signal output out[n]; var lc1=0; + var e2=1; for (var i = 0; i> i) & 1; out[i] * (out[i] -1 ) === 0; - lc1 += out[i] * 2**i; + lc1 += out[i] * e2; + e2 = e2+e2; } lc1 === in; @@ -54,8 +56,10 @@ template Bits2Num(n) { signal output out; var lc1=0; + var e2 = 1; for (var i = 0; i out; diff --git a/test/circuits/in.json b/test/circuits/in.json index 89d127c..2ebe0d5 100644 --- a/test/circuits/in.json +++ b/test/circuits/in.json @@ -1,2 +1,258 @@ -{"enabled":1,"Ax":"13277427435165878497778222415993513565335242147425444199013288855685581939618","Ay":"13622229784656158136036771217484571176836296686641868549125388198837476602820","R8x":"11220723668893468001994760120794694848178115379170651044669708829805665054484","R8y":"2367470421002446880004241260470975644531657398480773647535134774673409612366","S":"1307100909096544936550139783786226891472336052773077686618468233418583414320","M":"1234"} - +{ + "in": [ + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1", + "1" + ] +} \ No newline at end of file From cf6d1f0bb16b141891ed52aef890661b32653a0c Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Tue, 4 Feb 2020 19:19:11 +0100 Subject: [PATCH 13/15] Test name changed on comparators --- test/comparators.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/comparators.js b/test/comparators.js index 4d763cc..da6c8d8 100644 --- a/test/comparators.js +++ b/test/comparators.js @@ -7,7 +7,7 @@ const bigInt = require("big-integer"); const assert = chai.assert; -describe("Sum test", function () { +describe("Comparators test", function () { this.timeout(100000); From 273ab7966526a7be7821d18e96c49acc4973a087 Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Mon, 16 Mar 2020 20:41:11 +0100 Subject: [PATCH 14/15] Negative numbers and fix in comparator --- circuits/compconstant.circom | 7 +++---- circuits/pointbits.circom | 2 +- test/smtprocessor.js | 3 --- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/circuits/compconstant.circom b/circuits/compconstant.circom index 96a6f1b..e7fb3f0 100644 --- a/circuits/compconstant.circom +++ b/circuits/compconstant.circom @@ -46,12 +46,11 @@ template CompConstant(ct) { slsb = in[i*2]; smsb = in[i*2+1]; - - if ((cmsb==0)&(clsb==0)) { + if ((cmsb==0)&&(clsb==0)) { parts[i] <== -b*smsb*slsb + b*smsb + b*slsb; - } else if ((cmsb==0)&(clsb==1)) { + } else if ((cmsb==0)&&(clsb==1)) { parts[i] <== a*smsb*slsb - a*slsb + b*smsb - a*smsb + a; - } else if ((cmsb==1)&(clsb==0)) { + } else if ((cmsb==1)&&(clsb==0)) { parts[i] <== b*smsb*slsb - a*smsb + a; } else { parts[i] <== -a*smsb*slsb + a; diff --git a/circuits/pointbits.circom b/circuits/pointbits.circom index ec4d2e7..9084a8e 100644 --- a/circuits/pointbits.circom +++ b/circuits/pointbits.circom @@ -61,7 +61,7 @@ function sqrt(n) { r = r*b; } - if (r > ((-1) >> 1)) { + if (r < 0 ) { r = -r; } diff --git a/test/smtprocessor.js b/test/smtprocessor.js index 8b418e5..8467073 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -104,8 +104,6 @@ describe("SMT Processor test", function () { await testInsert(tree, key, value, circuit); }); - - it("Should remove an element", async () => { await testDelete(tree, 111, circuit); await testDelete(tree, 333, circuit); @@ -207,5 +205,4 @@ describe("SMT Processor test", function () { await testUpdate(tree1, 9, 999, circuit); await testUpdate(tree1, 32, 323232, circuit); }); - }); From e240605642598eccaa7046bf9b68a0bdaf6a36bb Mon Sep 17 00:00:00 2001 From: Jordi Baylina Date: Thu, 26 Mar 2020 19:24:20 +0100 Subject: [PATCH 15/15] pre 0.5 all working --- .eslintrc.js | 6 +- package-lock.json | 6219 ++++++++++++++++++--------------------- package.json | 10 +- src/babyjub.js | 2 +- src/mimc7.js | 2 +- src/mimcsponge.js | 2 +- src/poseidon.js | 2 +- test/aliascheck.js | 11 +- test/babyjub.js | 14 +- test/binsub.js | 2 +- test/binsum.js | 9 +- test/comparators.js | 72 +- test/eddsa.js | 2 +- test/eddsamimc.js | 6 +- test/eddsaposeidon.js | 7 +- test/escalarmulany.js | 4 +- test/escalarmulfix.js | 10 +- test/mimccircuit.js | 2 +- test/montgomery.js | 36 +- test/multiplexer.js | 8 +- test/pedersen.js | 10 +- test/pedersen2.js | 4 +- test/point2bits.js | 4 +- test/poseidoncircuit.js | 4 +- test/sha256.js | 8 +- test/sign.js | 14 +- test/smtprocessor.js | 10 +- test/smtverifier.js | 2 +- 28 files changed, 2982 insertions(+), 3500 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 2f45ad9..ce75c5c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,4 @@ module.exports = { - "plugins": [ - "mocha" - ], "env": { "es6": true, "node": true, @@ -27,7 +24,6 @@ module.exports = { "semi": [ "error", "always" - ], - "mocha/no-exclusive-tests": "error" + ] } }; diff --git a/package-lock.json b/package-lock.json index 44007c5..f2b62af 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,53 +5,120 @@ "requires": true, "dependencies": { "@babel/code-frame": { - "version": "7.5.5", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz", - "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==", + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz", + "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==", "requires": { - "@babel/highlight": "^7.0.0" + "@babel/highlight": "^7.8.3" } }, + "@babel/helper-validator-identifier": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.0.tgz", + "integrity": "sha512-6G8bQKjOh+of4PV/ThDm/rRqlU7+IGoJuofpagU5GlEl29Vv0RGqqt86ZGRV8ZuSOY3o+8yXl5y782SMcG7SHw==" + }, "@babel/highlight": { - "version": "7.5.0", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz", - "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==", + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz", + "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==", "requires": { + "@babel/helper-validator-identifier": "^7.9.0", "chalk": "^2.0.0", - "esutils": "^2.0.2", "js-tokens": "^4.0.0" } }, - "@babel/runtime": { - "version": "7.5.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.1.tgz", - "integrity": "sha512-g+hmPKs16iewFSmW57NkH9xpPkuYD1RV3UE2BCkXx9j+nhhRb9hsiSxPmEa67j35IecTQdn4iyMtHMbt5VoREg==", + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "requires": { - "regenerator-runtime": "^0.13.2" + "defer-to-connect": "^1.0.1" } }, "@types/bn.js": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.5.tgz", - "integrity": "sha512-AEAZcIZga0JgVMHNtl1CprA/hXX7/wPt79AgR4XqaDt7jyj3QWYw6LPoOiznPtugDmlubUnAahMs2PFxGcQrng==", + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", "requires": { "@types/node": "*" } }, + "@types/color-name": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz", + "integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==" + }, "@types/node": { - "version": "10.14.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.12.tgz", - "integrity": "sha512-QcAKpaO6nhHLlxWBvpc4WeLrTvPqlHOvaj0s5GriKkA1zq+bsFBPpfYCvQhLqLgYlIko8A9YrPdaMHCo5mBcpg==" + "version": "12.12.31", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.12.31.tgz", + "integrity": "sha512-T+wnJno8uh27G9c+1T+a1/WYCHzLeDqtsGJkoEdSp2X8RTh3oOCZQcUnjAx90CS8cmmADX51O0FI/tu9s0yssg==" + }, + "@web3-js/scrypt-shim": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@web3-js/scrypt-shim/-/scrypt-shim-0.1.0.tgz", + "integrity": "sha512-ZtZeWCc/s0nMcdx/+rZwY1EcuRdemOK9ag21ty9UsHkFxsNb/AaoucUz0iPuyGe0Ku+PFuRmWZG7Z7462p9xPw==", + "requires": { + "scryptsy": "^2.1.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "@web3-js/websocket": { + "version": "1.0.30", + "resolved": "https://registry.npmjs.org/@web3-js/websocket/-/websocket-1.0.30.tgz", + "integrity": "sha512-fDwrD47MiDrzcJdSeTLF75aCcxVVt8B1N74rA+vh2XCAvFy4tEWJjtnUtj2QG7/zlQ6g9cQ88bZFBxwd9/FmtA==", + "requires": { + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "nan": "^2.14.0", + "typedarray-to-buffer": "^3.1.5", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } }, "acorn": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.3.0.tgz", - "integrity": "sha512-/czfa8BwS88b9gWQVhc8eknunSA2DoJpJyTQkhheIf5E48u1N0R4q/YxxsAeqRrmK9TQ/uYfgLDfZo91UlANIA==" + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==" }, "acorn-jsx": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.2.tgz", - "integrity": "sha512-tiNTrP1MP0QrChmD2DdupCr6HWSFeKVw5d/dHTu4Y7rkAkRhU/Dt7dphAfIUyxtHpl/eBVip5uTNSpQJHylpAw==" + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.2.0.tgz", + "integrity": "sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ==" }, "aes-js": { "version": "3.0.0", @@ -59,76 +126,39 @@ "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=" }, "ajv": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", - "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", "requires": { - "fast-deep-equal": "^2.0.1", + "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", "json-schema-traverse": "^0.4.1", "uri-js": "^4.2.2" } }, - "ansi-colors": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", - "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", - "requires": { - "ansi-wrap": "^0.1.0" - } - }, "ansi-escapes": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" }, - "ansi-gray": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/ansi-gray/-/ansi-gray-0.1.1.tgz", - "integrity": "sha1-KWLPVOyXksSFEKPetSRDaGHvclE=", - "requires": { - "ansi-wrap": "0.1.0" - } - }, "ansi-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", - "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" }, "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", + "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", "requires": { - "color-convert": "^1.9.0" + "@types/color-name": "^1.1.1", + "color-convert": "^2.0.1" } }, - "ansi-wrap": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", - "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=" - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "append-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", - "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", - "requires": { - "buffer-equal": "^1.0.0" - } - }, - "archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=" }, "argparse": { "version": "1.0.10", @@ -138,224 +168,86 @@ "sprintf-js": "~1.0.2" } }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=" + "array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "arr-filter": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/arr-filter/-/arr-filter-1.1.2.tgz", - "integrity": "sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4=", + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", "requires": { - "make-iterator": "^1.0.0" + "safer-buffer": "~2.1.0" } }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==" - }, - "arr-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/arr-map/-/arr-map-2.0.2.tgz", - "integrity": "sha1-Onc0X/wc814qkYJWAfnljy4kysQ=", + "asn1.js": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { - "make-iterator": "^1.0.0" + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=" - }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=" - }, - "array-initial": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-initial/-/array-initial-1.1.0.tgz", - "integrity": "sha1-L6dLJnOTccOUe9enrcc74zSz15U=", - "requires": { - "array-slice": "^1.0.0", - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, - "array-last": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/array-last/-/array-last-1.3.0.tgz", - "integrity": "sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg==", - "requires": { - "is-number": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", - "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==" - } - } - }, - "array-slice": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz", - "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" - }, - "array-sort": { + "assert-plus": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-sort/-/array-sort-1.0.0.tgz", - "integrity": "sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg==", - "requires": { - "default-compare": "^1.0.0", - "get-value": "^2.0.6", - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=" + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=" }, "assertion-error": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=" - }, "astral-regex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==" }, - "async-done": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/async-done/-/async-done-1.3.2.tgz", - "integrity": "sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.2", - "process-nextick-args": "^2.0.0", - "stream-exhaust": "^1.0.1" - } + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==" + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" }, - "async-settle": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-settle/-/async-settle-1.0.0.tgz", - "integrity": "sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs=", - "requires": { - "async-done": "^1.2.2" - } + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=" }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==" - }, - "bach": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bach/-/bach-1.2.0.tgz", - "integrity": "sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA=", - "requires": { - "arr-filter": "^1.1.1", - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "array-each": "^1.0.0", - "array-initial": "^1.0.0", - "array-last": "^1.1.1", - "async-done": "^1.2.2", - "async-settle": "^1.0.0", - "now-and-later": "^2.0.0" - } + "aws4": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==" }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } + "tweetnacl": "^0.14.3" } }, "big-integer": { - "version": "1.6.46", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.46.tgz", - "integrity": "sha512-Vj2TNtZ8Y0XaL6HCkzJiEqfykjtv/9wVCWIutMe+QVIXLPe2tCLEzULtYvcX9WRtmNIj3Jqi5tNjIsR0N4QOsg==" - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==" + "version": "1.6.48", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", + "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" }, "bindings": { "version": "1.5.0", @@ -373,6 +265,15 @@ "safe-buffer": "^5.0.1" } }, + "bl": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz", + "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==", + "requires": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } + }, "blake-hash": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/blake-hash/-/blake-hash-1.1.0.tgz", @@ -400,11 +301,48 @@ "nanoassert": "^1.0.0" } }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + }, "bn.js": { "version": "4.11.8", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, + "body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -414,33 +352,6 @@ "concat-map": "0.0.1" } }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", @@ -486,15 +397,61 @@ "safe-buffer": "^5.1.2" } }, - "buffer-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-1.0.0.tgz", - "integrity": "sha1-WWFrSYME1Var1GaWayLu2j7KX74=" + "browserify-rsa": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", + "requires": { + "bn.js": "^4.1.0", + "randombytes": "^2.0.1" + } }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + "browserify-sign": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", + "requires": { + "bn.js": "^4.1.1", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.2", + "elliptic": "^6.0.0", + "inherits": "^2.0.1", + "parse-asn1": "^5.0.0" + } + }, + "buffer": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.5.0.tgz", + "integrity": "sha512-9FTEDjLjwoAkEwyMGDjYJQN2gfRgOKBKRfiglhvibGbpeeU/pQn1bJxQqm32OD/AIeEuHxU9roxXxg34Byp/Ww==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", + "requires": { + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" + } + }, + "buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw=" }, "buffer-to-arraybuffer": { "version": "0.0.5", @@ -506,20 +463,38 @@ "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.1.0.tgz", + "integrity": "sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } } }, "callsites": { @@ -532,6 +507,11 @@ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" + }, "chai": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", @@ -553,6 +533,29 @@ "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", "supports-color": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + } } }, "chardet": { @@ -565,31 +568,10 @@ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" }, - "chokidar": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.6.tgz", - "integrity": "sha512-V2jUo67OKkc6ySiRpJrjlpJKl9kDuG+Xb8VgsGzb+aEouhgS1D0weyPU4lEzdAcsCAvrih2J2BqyXqHWvVLw5g==", - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - } - } + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==" }, "cipher-base": { "version": "1.0.4", @@ -601,34 +583,29 @@ } }, "circom": { - "version": "0.0.35", - "resolved": "https://registry.npmjs.org/circom/-/circom-0.0.35.tgz", - "integrity": "sha512-MWsJPYPH+s9wN2I5abEHUIAyFVsgTCy+UzJh///WnflXfh3c1tlbv8zt1VV+YHHREpyS+WF5ZBr7TujpaVFu5g==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/circom/-/circom-0.5.2.tgz", + "integrity": "sha512-AahZ3nvmUac/r7hQ3Cd/VHnDdxLNG39abZeBU3smNQYc4ytU4JmzmxcwTRHAl06SLt0BuFckomhzM8S5hnZu9w==", "requires": { "big-integer": "^1.6.32", - "optimist": "^0.6.1", - "yargs": "^12.0.2" + "chai": "^4.2.0", + "circom_runtime": "0.0.3", + "ffiasm": "0.0.2", + "ffjavascript": "0.0.3", + "ffwasm": "0.0.5", + "fnv-plus": "^1.3.1", + "r1csfile": "0.0.2", + "tmp-promise": "^2.0.2", + "wasmbuilder": "0.0.9" } }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "circom_runtime": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/circom_runtime/-/circom_runtime-0.0.3.tgz", + "integrity": "sha512-z4ypbs9cTQn7+2FHZNTnccMj6kQCcKT2agYqCrm2kdLBJh9LDoxU1JVu5mSnVuOtgc7BclQ7r0xclG0zP2rxhw==", "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } + "big-integer": "^1.6.48", + "fnv-plus": "^1.3.1" } }, "cli-cursor": { @@ -645,38 +622,21 @@ "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=" }, "cliui": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", - "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "clone": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", - "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" - }, - "clone-buffer": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-buffer/-/clone-buffer-1.0.0.tgz", - "integrity": "sha1-4+JbIHrE5wGvch4staFnksrD3Fg=" - }, - "clone-stats": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/clone-stats/-/clone-stats-1.0.0.tgz", - "integrity": "sha1-s3gt/4u1R04Yuba/D9/ngvh3doA=" - }, - "cloneable-readable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/cloneable-readable/-/cloneable-readable-1.1.3.tgz", - "integrity": "sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==", + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "requires": { - "inherits": "^2.0.1", - "process-nextick-args": "^2.0.0", - "readable-stream": "^2.3.5" + "mimic-response": "^1.0.0" } }, "code-point-at": { @@ -684,76 +644,46 @@ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" }, - "collection-map": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-map/-/collection-map-1.0.0.tgz", - "integrity": "sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw=", - "requires": { - "arr-map": "^2.0.2", - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } }, "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.8.1.tgz", + "integrity": "sha1-Br42f+v9oMMwqh4qBy09yXYkJdQ=", + "requires": { + "graceful-readlink": ">= 1.0.0" + } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "content-disposition": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "convert-source-map": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz", - "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==", - "requires": { - "safe-buffer": "~5.1.1" + "safe-buffer": "5.1.2" }, "dependencies": { "safe-buffer": { @@ -763,30 +693,49 @@ } } }, + "content-type": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", + "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" + }, + "cookie": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz", + "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==" + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" + }, "cookiejar": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.2.tgz", "integrity": "sha512-Mw+adcfzPxcPeI+0WlvRrr/3lGVO0bD75SxX6811cxSh1Wbxx7xZBGK1eVtDf6si8rg2lhnUjsVLMFMfbRIuwA==" }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=" - }, - "copy-props": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz", - "integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==", - "requires": { - "each-props": "^1.3.0", - "is-plain-object": "^2.0.1" - } - }, "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, "create-hash": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", @@ -824,6 +773,24 @@ "which": "^1.2.9" } }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, "d": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", @@ -833,6 +800,14 @@ "type": "^1.0.1" } }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "requires": { + "assert-plus": "^1.0.0" + } + }, "debug": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", @@ -851,6 +826,21 @@ "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=" }, + "decompress": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.0.tgz", + "integrity": "sha1-eu3YVCflqS2s/lVnSnxQXpbQH50=", + "requires": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + } + }, "decompress-response": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", @@ -859,6 +849,72 @@ "mimic-response": "^1.0.0" } }, + "decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "requires": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + } + }, + "decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "requires": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "dependencies": { + "file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==" + } + } + }, + "decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "requires": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + } + }, + "decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha1-3qrM39FK6vhVePczroIQ+bSEj2k=", + "requires": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "dependencies": { + "file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha1-JXoHg4TR24CHvESdEH1SpSZyuek=" + }, + "get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha1-Xzj5PzRgCWZu4BUKBUFn+Rvdld4=", + "requires": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + } + } + } + }, "deep-eql": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", @@ -872,84 +928,34 @@ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" }, - "default-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/default-compare/-/default-compare-1.0.0.tgz", - "integrity": "sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ==", - "requires": { - "kind-of": "^5.0.2" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "default-resolution": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/default-resolution/-/default-resolution-2.0.0.tgz", - "integrity": "sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ=" - }, - "define-properties": { + "defer-to-connect": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "requires": { - "object-keys": "^1.0.12" - } + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" }, "des.js": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", - "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" } }, - "detect-file": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz", - "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=" + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" }, "diff": { "version": "3.5.0", @@ -957,6 +963,16 @@ "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", "dev": true }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, "doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -980,30 +996,34 @@ "create-hmac": "^1.1.4" } }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "each-props": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/each-props/-/each-props-1.3.2.tgz", - "integrity": "sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA==", - "requires": { - "is-plain-object": "^2.0.1", - "object.defaults": "^1.1.0" - } + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "ejs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.0.1.tgz", + "integrity": "sha512-cuIMtJwxvzumSAkqaaoGY/L6Fc/t6YvoP9/VIaK0V/CyqKLEQ8sqODmYfy/cjXEdZ9+OOL8TecbJu+1RsofGDw==" }, "elliptic": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.0.tgz", - "integrity": "sha512-eFOJTMyCYb7xtE/caJ6JJu+bhi67WCYNbkGSknu20pmM8Ke/bqOfdnZWxyoGN26JgfxTbXrsCkEw4KheCT/KGg==", + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.2.tgz", + "integrity": "sha512-f4x70okzZbIQl/NSRLkI/+tteV/9WqL98zx+SQ69KbXxmVrmjwsNUPn/gYJJ0sHvEak24cZgHIPegRePAtA/xw==", "requires": { "bn.js": "^4.4.0", "brorand": "^1.0.1", @@ -1015,57 +1035,31 @@ } }, "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "end-of-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz", - "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "requires": { "once": "^1.4.0" } }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz", - "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==", - "requires": { - "es-to-primitive": "^1.2.0", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "is-callable": "^1.1.4", - "is-regex": "^1.0.4", - "object-keys": "^1.0.12" - } - }, - "es-to-primitive": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz", - "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, "es5-ext": { - "version": "0.10.50", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.50.tgz", - "integrity": "sha512-KMzZTPBkeQV/JcSQhI5/z6d9VWJ3EnQ194USTUwIYZ2ZbpN8+SGXQKt1h68EX44+qt+Fzr8DO17vnxrw7c3agw==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -1079,24 +1073,18 @@ } }, "es6-symbol": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", - "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { - "d": "1", - "es5-ext": "~0.10.14" + "d": "^1.0.1", + "ext": "^1.1.2" } }, - "es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "requires": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" }, "escape-string-regexp": { "version": "1.0.5", @@ -1104,55 +1092,238 @@ "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", - "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.8.0.tgz", + "integrity": "sha512-K+Iayyo2LtyYhDSYwz5D5QdWw0hCacNzyq1Y821Xna2xSJj7cijoLLYmLxTQgcgZ9mC61nryMy9S7GRbYpI5Ig==", + "dev": true, "requires": { "@babel/code-frame": "^7.0.0", - "ajv": "^6.9.1", + "ajv": "^6.10.0", "chalk": "^2.1.0", "cross-spawn": "^6.0.5", "debug": "^4.0.1", "doctrine": "^3.0.0", - "eslint-scope": "^4.0.3", - "eslint-utils": "^1.3.1", - "eslint-visitor-keys": "^1.0.0", - "espree": "^5.0.1", + "eslint-scope": "^5.0.0", + "eslint-utils": "^1.4.3", + "eslint-visitor-keys": "^1.1.0", + "espree": "^6.1.2", "esquery": "^1.0.1", "esutils": "^2.0.2", "file-entry-cache": "^5.0.1", "functional-red-black-tree": "^1.0.1", - "glob": "^7.1.2", - "globals": "^11.7.0", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", "ignore": "^4.0.6", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", - "inquirer": "^6.2.2", - "js-yaml": "^3.13.0", + "inquirer": "^7.0.0", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", "json-stable-stringify-without-jsonify": "^1.0.1", "levn": "^0.3.0", - "lodash": "^4.17.11", + "lodash": "^4.17.14", "minimatch": "^3.0.4", "mkdirp": "^0.5.1", "natural-compare": "^1.4.0", - "optionator": "^0.8.2", - "path-is-inside": "^1.0.2", + "optionator": "^0.8.3", "progress": "^2.0.0", "regexpp": "^2.0.1", - "semver": "^5.5.1", - "strip-ansi": "^4.0.0", - "strip-json-comments": "^2.0.1", + "semver": "^6.1.2", + "strip-ansi": "^5.2.0", + "strip-json-comments": "^3.0.1", "table": "^5.2.3", - "text-table": "^0.2.0" - } - }, - "eslint-plugin-mocha": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-mocha/-/eslint-plugin-mocha-5.3.0.tgz", - "integrity": "sha512-3uwlJVLijjEmBeNyH60nzqgA1gacUWLUmcKV8PIGNvj1kwP/CTgAWQHn2ayyJVwziX+KETkr9opNwT1qD/RZ5A==", - "dev": true, - "requires": { - "ramda": "^0.26.1" + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + }, + "dependencies": { + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "eslint-scope": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz", + "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "espree": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-6.2.1.tgz", + "integrity": "sha512-ysCxRQY3WaXJz9tdbWOwuWr5Y/XrPTGX9Kiz3yoUXwW0VZ4w30HTkQLaGx/+ttFjF8i+ACbArnB4ce68a9m5hw==", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.1.0" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "inquirer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.1.0.tgz", + "integrity": "sha512-5fJMWEmikSYu0nv/flMc475MhGbB7TSPd/2IpFV4I4rMklboCH2rQjYY5kKiYGHqUF9gvaambupcJFFG9dvReg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^3.0.0", + "cli-cursor": "^3.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.15", + "mute-stream": "0.0.8", + "run-async": "^2.4.0", + "rxjs": "^6.5.3", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "onetime": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.0.tgz", + "integrity": "sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + }, + "strip-json-comments": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz", + "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==", + "dev": true + }, + "supports-color": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz", + "integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } } }, "eslint-scope": { @@ -1165,11 +1336,11 @@ } }, "eslint-utils": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.2.tgz", - "integrity": "sha512-eAZS2sEUMlIeCjBeubdj45dmBHQwPHWyBcT1VSYB7o9x9WRRqKxyUoiXlRjyAwzN7YEzHJlYg0NmzDRWx6GP4Q==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", "requires": { - "eslint-visitor-keys": "^1.0.0" + "eslint-visitor-keys": "^1.1.0" } }, "eslint-visitor-keys": { @@ -1193,11 +1364,18 @@ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" }, "esquery": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz", - "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.2.0.tgz", + "integrity": "sha512-weltsSqdeWIX9G2qQZz7KlTRJdkkOCTPgLYJUz1Hacf48R4YOwGPHO3+ORfWedqJKbq5WQmsgK90n+pFLIKt/Q==", "requires": { - "estraverse": "^4.0.0" + "estraverse": "^5.0.0" + }, + "dependencies": { + "estraverse": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.0.0.tgz", + "integrity": "sha512-j3acdrMzqrxmJTNj5dbr1YbjacrYgAxVMeF0gK16E3j494mOe7xygM/ZLIguEQ0ETwAg2hlJCtHRGav+y0Ny5A==" + } } }, "esrecurse": { @@ -1218,6 +1396,11 @@ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, "eth-ens-namehash": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", @@ -1225,50 +1408,68 @@ "requires": { "idna-uts46-hx": "^2.3.1", "js-sha3": "^0.5.7" + }, + "dependencies": { + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + } } }, "eth-lib": { - "version": "0.2.8", - "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", - "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", + "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", "requires": { "bn.js": "^4.11.6", "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", "xhr-request-promise": "^0.1.2" } }, - "ethereum-common": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/ethereum-common/-/ethereum-common-0.0.18.tgz", - "integrity": "sha1-L9w1dvIykDNYl26znaeDIT/5Uj8=" + "ethereum-bloom-filters": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.6.tgz", + "integrity": "sha512-dE9CGNzgOOsdh7msZirvv8qjHtnHpvBlKe2647kM8v+yeF71IRso55jpojemvHV+jMjr48irPWxMRaHuOWzAFA==", + "requires": { + "js-sha3": "^0.8.0" + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/ethereumjs-common/-/ethereumjs-common-1.5.0.tgz", + "integrity": "sha512-SZOjgK1356hIY7MRj3/ma5qtfr/4B5BL+G4rP/XSMYr2z1H5el4RX5GReYCKmQmYI/nSBmRnwrZ17IfHuG0viQ==" }, "ethereumjs-tx": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-1.3.7.tgz", - "integrity": "sha512-wvLMxzt1RPhAQ9Yi3/HKZTn0FZYpnsmQdbKYfUUpi4j1SEIcbkd9tndVjcPrufY3V7j2IebOpC00Zp2P/Ay2kA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ethereumjs-tx/-/ethereumjs-tx-2.1.2.tgz", + "integrity": "sha512-zZEK1onCeiORb0wyCXUvg94Ve5It/K6GD1K+26KfFKodiBiS6d9lfCXlUKGBBdQ+bv7Day+JK0tj1K+BeNFRAw==", "requires": { - "ethereum-common": "^0.0.18", - "ethereumjs-util": "^5.0.0" + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" } }, "ethereumjs-util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.0.tgz", - "integrity": "sha512-CJAKdI0wgMbQFLlLRtZKGcy/L6pzVRgelIZqRqNbuVFM3K9VEnyfbcvz0ncWMRNCe4kaHWjwRYQcYMucmwsnWA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.0.tgz", + "integrity": "sha512-vb0XN9J2QGdZGIEKG2vXM+kUdEivUfU6Wmi5y0cg+LRhDYKnXIZ/Lz7XjFbHRR9VIKq2lVGLzGBkA++y2nOdOQ==", "requires": { + "@types/bn.js": "^4.11.3", "bn.js": "^4.11.0", "create-hash": "^1.1.2", - "ethjs-util": "^0.1.3", - "keccak": "^1.0.2", - "rlp": "^2.0.0", - "safe-buffer": "^5.1.1", + "ethjs-util": "0.1.6", + "keccak": "^2.0.0", + "rlp": "^2.2.3", "secp256k1": "^3.0.1" } }, "ethers": { - "version": "4.0.32", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.32.tgz", - "integrity": "sha512-r0k2tBNF6MYEsvwmINeP3VPppD/7eAZyiOk/ifDDawXGCKqr3iEQkPq6OZSDVD+4Jie38WPteS9thXzpn2+A5Q==", + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-4.0.0-beta.3.tgz", + "integrity": "sha512-YYPogooSknTwvHg3+Mv71gM/3Wcrx+ZpCzarBj3mqs9njjRkrOo2/eufzhHloOCo3JSoNI4TQJJ6yU5ABm3Uog==", "requires": { "@types/node": "^10.3.2", "aes-js": "3.0.0", @@ -1276,12 +1477,17 @@ "elliptic": "6.3.3", "hash.js": "1.1.3", "js-sha3": "0.5.7", - "scrypt-js": "2.0.4", + "scrypt-js": "2.0.3", "setimmediate": "1.0.4", "uuid": "2.0.1", "xmlhttprequest": "1.8.0" }, "dependencies": { + "@types/node": { + "version": "10.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz", + "integrity": "sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==" + }, "elliptic": { "version": "6.3.3", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.3.3.tgz", @@ -1301,6 +1507,21 @@ "inherits": "^2.0.3", "minimalistic-assert": "^1.0.0" } + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + }, + "setimmediate": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", + "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + }, + "uuid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", + "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" } } }, @@ -1330,9 +1551,9 @@ } }, "eventemitter3": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.0.tgz", - "integrity": "sha512-ivIvhpq/Y0uSjcHDcOIccjmYjGLcP09MFGE7ysAwkAvkXfpZlC985pH2/ui64DKazbTW/4kN3yqozUxlXzI6cA==" + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==" }, "evp_bytestokey": { "version": "1.0.3", @@ -1357,18 +1578,41 @@ "strip-eof": "^1.0.0" } }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "express": { + "version": "4.17.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz", + "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==", "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "dependencies": { "debug": { @@ -1379,35 +1623,31 @@ "ms": "2.0.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" } } }, - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", "requires": { - "homedir-polyfill": "^1.0.1" + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } } }, "extend": { @@ -1415,25 +1655,6 @@ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, "external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -1442,105 +1663,80 @@ "chardet": "^0.7.0", "iconv-lite": "^0.4.24", "tmp": "^0.0.33" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" }, "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" + "os-tmpdir": "~1.0.2" } } } }, - "fancy-log": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/fancy-log/-/fancy-log-1.3.3.tgz", - "integrity": "sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw==", - "requires": { - "ansi-gray": "^0.1.1", - "color-support": "^1.1.3", - "parse-node-version": "^1.0.0", - "time-stamp": "^1.0.0" - } + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=" }, "fast-deep-equal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz", - "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=" + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==" }, "fast-json-stable-stringify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", - "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "fast-levenshtein": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" }, - "fflib": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/fflib/-/fflib-0.0.1.tgz", - "integrity": "sha512-bWTudSfCjkNkOOeSNQf8DmBidxxuzqyjeIdZBfY38T7R+jt381sdx1SYpyve5MQdDlQg1k7UHeb0L/J8WWFWYA==", + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "ffiasm": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/ffiasm/-/ffiasm-0.0.2.tgz", + "integrity": "sha512-o/CL7F4IodB7eRHCOQL1SrqN2DIPHrQbEwjPY7NIyeBRdnB3G0xo6b6Mj44SKiWFnvpQMb3n4N7acjD3vv4NVQ==", + "requires": { + "big-integer": "^1.6.48", + "ejs": "^3.0.1", + "yargs": "^15.3.1" + } + }, + "ffjavascript": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/ffjavascript/-/ffjavascript-0.0.3.tgz", + "integrity": "sha512-uXbiC7cNbFzNJCdkGlbQf2d7GciY1ICMcBeAA7+D8RHPr9Y5zYiDRWtU5etjAV8TplE7eZQ9Iqd9ieFi0ARJLA==", "requires": { "big-integer": "^1.6.48" + } + }, + "ffwasm": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/ffwasm/-/ffwasm-0.0.5.tgz", + "integrity": "sha512-biz1jK3TjxpwigoBLWzvBNtuQAC6WBVzlI1sw2BQp3RqTei66OhJ6E2G+zSk2SubUVWlrgTN+WfE+Fmn3qdtgg==", + "requires": { + "big-integer": "^1.6.48", + "wasmbuilder": "0.0.8" }, "dependencies": { - "big-integer": { - "version": "1.6.48", - "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.48.tgz", - "integrity": "sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w==" + "wasmbuilder": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.8.tgz", + "integrity": "sha512-d63cIsDmHnybA5hTlRRLadgys5r3Tl4W8SbcBRh13FauEPOo48dqjgzdL1xefpZkpKKybDRlFqgm+9cX04B3+w==", + "requires": { + "big-integer": "^1.6.43" + } } } }, @@ -1560,68 +1756,54 @@ "flat-cache": "^2.0.1" } }, + "file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha1-LdvqfHP/42No365J3DOMBYwritY=" + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "requires": { - "is-extendable": "^0.1.0" + "ms": "2.0.0" } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "requires": { - "locate-path": "^3.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" } }, - "findup-sync": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz", - "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "fined": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.2.0.tgz", - "integrity": "sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng==", - "requires": { - "expand-tilde": "^2.0.2", - "is-plain-object": "^2.0.3", - "object.defaults": "^1.1.0", - "object.pick": "^1.2.0", - "parse-filepath": "^1.0.1" - } - }, - "flagged-respawn": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-1.0.1.tgz", - "integrity": "sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q==" - }, "flat-cache": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", @@ -1630,6 +1812,16 @@ "flatted": "^2.0.0", "rimraf": "2.6.3", "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "requires": { + "glob": "^7.1.3" + } + } } }, "flatted": { @@ -1637,51 +1829,57 @@ "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.1.tgz", "integrity": "sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg==" }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "fnv-plus": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/fnv-plus/-/fnv-plus-1.3.1.tgz", + "integrity": "sha512-Gz1EvfOneuFfk4yG458dJ3TLJ7gV19q3OM/vVvvHf7eT02Hm1DleB4edsia6ahbKgAYxO9gvyQ1ioWZR+a00Yw==" + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=" + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" } }, - "for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "requires": { - "is-callable": "^1.1.3" - } + "forwarded": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=" + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" }, - "for-own": { + "fs-constants": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, + "fs-extra": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", + "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", "requires": { - "for-in": "^1.0.1" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" } }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", "requires": { - "map-cache": "^0.2.2" - } - }, - "fs-mkdirp-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", - "integrity": "sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes=", - "requires": { - "graceful-fs": "^4.1.11", - "through2": "^2.0.3" + "minipass": "^2.6.0" } }, "fs.realpath": { @@ -1689,549 +1887,154 @@ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", - "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", - "optional": true, - "requires": { - "nan": "^2.12.1", - "node-pre-gyp": "^0.12.0" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.1", - "bundled": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "debug": { - "version": "4.1.1", - "bundled": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.5", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.3", - "bundled": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "bundled": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "optional": true - }, - "minipass": { - "version": "2.3.5", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.2.1", - "bundled": true, - "optional": true, - "requires": { - "minipass": "^2.2.1" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.1", - "bundled": true, - "optional": true - }, - "needle": { - "version": "2.3.0", - "bundled": true, - "optional": true, - "requires": { - "debug": "^4.1.0", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.12.0", - "bundled": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.0.6", - "bundled": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.1", - "bundled": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.6.3", - "bundled": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "optional": true - }, - "semver": { - "version": "5.7.0", - "bundled": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "optional": true - }, - "tar": { - "version": "4.4.8", - "bundled": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.3.4", - "minizlib": "^1.1.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.2" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "optional": true - }, - "yallist": { - "version": "3.0.3", - "bundled": true, - "optional": true - } - } - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, "functional-red-black-tree": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=" }, "ganache-cli": { - "version": "6.4.4", - "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.4.4.tgz", - "integrity": "sha512-JWygbyZuM2GQl2ZvU7tBkjpgJaKE/XEtB99ech17XTouuqLU5rBcyO3sMb/L83wAtzr0gBnTgenIBl+OeREpJw==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/ganache-cli/-/ganache-cli-6.9.1.tgz", + "integrity": "sha512-VPBumkNUZzXDRQwVOby5YyQpd5t1clkr06xMgB28lZdEIn5ht1GMwUskOTFOAxdkQ4J12IWP0gdeacVRGowqbA==", "dev": true, "requires": { - "bn.js": "4.11.8", - "source-map-support": "0.5.9", - "yargs": "11.1.0" + "ethereumjs-util": "6.1.0", + "source-map-support": "0.5.12", + "yargs": "13.2.4" }, "dependencies": { "ansi-regex": { - "version": "3.0.0", + "version": "4.1.0", "bundled": true, "dev": true }, + "ansi-styles": { + "version": "3.2.1", + "bundled": true, + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "bindings": { + "version": "1.5.0", + "bundled": true, + "dev": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bip66": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, "bn.js": { "version": "4.11.8", "bundled": true, "dev": true }, + "brorand": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "buffer-from": { "version": "1.1.1", "bundled": true, "dev": true }, - "camelcase": { - "version": "4.1.0", + "buffer-xor": { + "version": "1.0.3", "bundled": true, "dev": true }, - "cliui": { - "version": "4.1.0", + "camelcase": { + "version": "5.3.1", + "bundled": true, + "dev": true + }, + "cipher-base": { + "version": "1.0.4", "bundled": true, "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0", - "wrap-ansi": "^2.0.0" + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true - }, - "cross-spawn": { - "version": "5.1.0", + "cliui": { + "version": "5.0.0", "bundled": true, "dev": true, "requires": { - "lru-cache": "^4.0.1", + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "color-convert": { + "version": "1.9.3", + "bundled": true, + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "bundled": true, + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", "shebang-command": "^1.2.0", "which": "^1.2.9" } @@ -2241,13 +2044,82 @@ "bundled": true, "dev": true }, - "execa": { - "version": "0.7.0", + "drbg.js": { + "version": "1.0.1", "bundled": true, "dev": true, "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" + } + }, + "elliptic": { + "version": "6.5.0", + "bundled": true, + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "bundled": true, + "dev": true + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "ethereumjs-util": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "ethjs-util": "0.1.6", + "keccak": "^1.0.2", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1", + "secp256k1": "^3.0.1" + } + }, + "ethjs-util": { + "version": "0.1.6", + "bundled": true, + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "evp_bytestokey": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", "is-stream": "^1.1.0", "npm-run-path": "^2.0.0", "p-finally": "^1.0.0", @@ -2255,26 +2127,67 @@ "strip-eof": "^1.0.0" } }, + "file-uri-to-path": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "find-up": { - "version": "2.1.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "locate-path": "^2.0.0" + "locate-path": "^3.0.0" } }, "get-caller-file": { - "version": "1.0.3", + "version": "2.0.5", "bundled": true, "dev": true }, "get-stream": { - "version": "3.0.0", + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "hash-base": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "hash.js": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "inherits": { + "version": "2.0.4", "bundled": true, "dev": true }, "invert-kv": { - "version": "1.0.0", + "version": "2.0.0", "bundled": true, "dev": true }, @@ -2283,6 +2196,11 @@ "bundled": true, "dev": true }, + "is-hex-prefixed": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "is-stream": { "version": "1.1.0", "bundled": true, @@ -2293,42 +2211,84 @@ "bundled": true, "dev": true }, - "lcid": { - "version": "1.0.0", + "keccak": { + "version": "1.4.0", "bundled": true, "dev": true, "requires": { - "invert-kv": "^1.0.0" + "bindings": "^1.2.1", + "inherits": "^2.0.3", + "nan": "^2.2.1", + "safe-buffer": "^5.1.0" } }, - "locate-path": { + "lcid": { "version": "2.0.0", "bundled": true, "dev": true, "requires": { - "p-locate": "^2.0.0", + "invert-kv": "^2.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", "path-exists": "^3.0.0" } }, - "lru-cache": { - "version": "4.1.4", + "map-age-cleaner": { + "version": "0.1.3", "bundled": true, "dev": true, "requires": { - "pseudomap": "^1.0.2", - "yallist": "^3.0.2" + "p-defer": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, "mem": { - "version": "1.1.0", + "version": "4.3.0", "bundled": true, "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" } }, "mimic-fn": { - "version": "1.2.0", + "version": "2.1.0", + "bundled": true, + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "nan": { + "version": "2.14.0", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", "bundled": true, "dev": true }, @@ -2340,44 +2300,57 @@ "path-key": "^2.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true - }, - "os-locale": { - "version": "2.1.0", + "once": { + "version": "1.4.0", "bundled": true, "dev": true, "requires": { - "execa": "^0.7.0", - "lcid": "^1.0.0", - "mem": "^1.1.0" + "wrappy": "1" } }, + "os-locale": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, "p-finally": { "version": "1.0.0", "bundled": true, "dev": true }, + "p-is-promise": { + "version": "2.1.0", + "bundled": true, + "dev": true + }, "p-limit": { - "version": "1.3.0", + "version": "2.2.0", "bundled": true, "dev": true, "requires": { - "p-try": "^1.0.0" + "p-try": "^2.0.0" } }, "p-locate": { - "version": "2.0.0", + "version": "3.0.0", "bundled": true, "dev": true, "requires": { - "p-limit": "^1.1.0" + "p-limit": "^2.0.0" } }, "p-try": { - "version": "1.0.0", + "version": "2.2.0", "bundled": true, "dev": true }, @@ -2391,10 +2364,14 @@ "bundled": true, "dev": true }, - "pseudomap": { - "version": "1.0.2", + "pump": { + "version": "3.0.0", "bundled": true, - "dev": true + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } }, "require-directory": { "version": "2.1.1", @@ -2402,7 +2379,50 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "ripemd160": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.3", + "bundled": true, + "dev": true, + "requires": { + "bn.js": "^4.11.1", + "safe-buffer": "^5.1.1" + } + }, + "safe-buffer": { + "version": "5.2.0", + "bundled": true, + "dev": true + }, + "secp256k1": { + "version": "3.7.1", + "bundled": true, + "dev": true, + "requires": { + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" + } + }, + "semver": { + "version": "5.7.0", "bundled": true, "dev": true }, @@ -2411,6 +2431,15 @@ "bundled": true, "dev": true }, + "sha.js": { + "version": "2.4.11", + "bundled": true, + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, "shebang-command": { "version": "1.2.0", "bundled": true, @@ -2435,7 +2464,7 @@ "dev": true }, "source-map-support": { - "version": "0.5.9", + "version": "0.5.12", "bundled": true, "dev": true, "requires": { @@ -2444,20 +2473,21 @@ } }, "string-width": { - "version": "2.1.1", + "version": "3.1.0", "bundled": true, "dev": true, "requires": { + "emoji-regex": "^7.0.1", "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" + "strip-ansi": "^5.1.0" } }, "strip-ansi": { - "version": "4.0.0", + "version": "5.2.0", "bundled": true, "dev": true, "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^4.1.0" } }, "strip-eof": { @@ -2465,6 +2495,14 @@ "bundled": true, "dev": true }, + "strip-hex-prefix": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, "which": { "version": "1.3.1", "bundled": true, @@ -2479,90 +2517,58 @@ "dev": true }, "wrap-ansi": { - "version": "2.1.0", + "version": "5.1.0", "bundled": true, "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" } }, - "y18n": { - "version": "3.2.1", + "wrappy": { + "version": "1.0.2", "bundled": true, "dev": true }, - "yallist": { - "version": "3.0.2", + "y18n": { + "version": "4.0.0", "bundled": true, "dev": true }, "yargs": { - "version": "11.1.0", + "version": "13.2.4", "bundled": true, "dev": true, "requires": { - "cliui": "^4.0.0", - "decamelize": "^1.1.1", - "find-up": "^2.1.0", - "get-caller-file": "^1.0.1", - "os-locale": "^2.0.0", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "os-locale": "^3.1.0", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^3.0.0", "which-module": "^2.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^9.0.2" + "y18n": "^4.0.0", + "yargs-parser": "^13.1.0" } }, "yargs-parser": { - "version": "9.0.2", + "version": "13.1.1", "bundled": true, "dev": true, "requires": { - "camelcase": "^4.1.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "get-func-name": { "version": "2.0.0", @@ -2577,15 +2583,18 @@ "pump": "^3.0.0" } }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=" + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "requires": { + "assert-plus": "^1.0.0" + } }, "glob": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", - "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -2596,52 +2605,12 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "glob-stream": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/glob-stream/-/glob-stream-6.1.0.tgz", - "integrity": "sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ=", - "requires": { - "extend": "^3.0.0", - "glob": "^7.1.1", - "glob-parent": "^3.1.0", - "is-negated-glob": "^1.0.0", - "ordered-read-streams": "^1.0.0", - "pumpify": "^1.3.5", - "readable-stream": "^2.1.5", - "remove-trailing-separator": "^1.0.1", - "to-absolute-glob": "^2.0.0", - "unique-stream": "^2.0.2" - } - }, - "glob-watcher": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/glob-watcher/-/glob-watcher-5.0.3.tgz", - "integrity": "sha512-8tWsULNEPHKQ2MR4zXuzSmqbdyV5PtwwCaWSGQ1WwHsJ07ilNeN1JB8ntxhckbnpSHaf9dXFUHzIWvm1I13dsg==", - "requires": { - "anymatch": "^2.0.0", - "async-done": "^1.2.0", - "chokidar": "^2.0.0", - "is-negated-glob": "^1.0.0", - "just-debounce": "^1.0.0", - "object.defaults": "^1.1.0" + "is-glob": "^4.0.1" } }, "global": { @@ -2653,45 +2622,38 @@ "process": "~0.5.1" } }, - "global-modules": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", - "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", - "requires": { - "global-prefix": "^1.0.1", - "is-windows": "^1.0.1", - "resolve-dir": "^1.0.0" - } - }, - "global-prefix": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", - "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=", - "requires": { - "expand-tilde": "^2.0.2", - "homedir-polyfill": "^1.0.1", - "ini": "^1.3.4", - "is-windows": "^1.0.1", - "which": "^1.2.14" - } - }, "globals": { "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" }, - "glogg": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/glogg/-/glogg-1.0.2.tgz", - "integrity": "sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA==", + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "requires": { - "sparkles": "^1.0.0" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" } }, "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==" + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.3.tgz", + "integrity": "sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ==" + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha1-TK+tdrxi8C+gObL5Tpo906ORpyU=" }, "growl": { "version": "1.10.5", @@ -2699,163 +2661,18 @@ "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", "dev": true }, - "gulp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/gulp/-/gulp-4.0.2.tgz", - "integrity": "sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA==", - "requires": { - "glob-watcher": "^5.0.3", - "gulp-cli": "^2.2.0", - "undertaker": "^1.2.1", - "vinyl-fs": "^3.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=" - }, - "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", - "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" - } - }, - "gulp-cli": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/gulp-cli/-/gulp-cli-2.2.0.tgz", - "integrity": "sha512-rGs3bVYHdyJpLqR0TUBnlcZ1O5O++Zs4bA0ajm+zr3WFCfiSLjGwoCBqFs18wzN+ZxahT9DkOK5nDf26iDsWjA==", - "requires": { - "ansi-colors": "^1.0.1", - "archy": "^1.0.0", - "array-sort": "^1.0.0", - "color-support": "^1.1.3", - "concat-stream": "^1.6.0", - "copy-props": "^2.0.1", - "fancy-log": "^1.3.2", - "gulplog": "^1.0.0", - "interpret": "^1.1.0", - "isobject": "^3.0.1", - "liftoff": "^3.1.0", - "matchdep": "^2.0.0", - "mute-stdout": "^1.0.0", - "pretty-hrtime": "^1.0.0", - "replace-homedir": "^1.0.0", - "semver-greatest-satisfied-range": "^1.1.0", - "v8flags": "^3.0.1", - "yargs": "^7.1.0" - } - }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "requires": { - "invert-kv": "^1.0.0" - } - }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "requires": { - "lcid": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=" - }, - "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=" - }, - "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", - "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", - "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" - } - }, - "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", - "requires": { - "camelcase": "^3.0.0" - } - } - } + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=" }, - "gulplog": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gulplog/-/gulplog-1.0.0.tgz", - "integrity": "sha1-4oxNRdBey77YGDY86PnFkmIp/+U=", + "har-validator": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz", + "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==", "requires": { - "glogg": "^1.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "requires": { - "function-bind": "^1.1.1" + "ajv": "^6.5.5", + "har-schema": "^2.0.0" } }, "has-flag": { @@ -2863,38 +2680,17 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=" + "has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==" }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "has-symbol-support-x": "^1.4.1" } }, "hash-base": { @@ -2931,18 +2727,44 @@ "minimalistic-crypto-utils": "^1.0.1" } }, - "homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "http-errors": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", + "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", "requires": { - "parse-passwd": "^1.0.0" + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" + } } }, - "hosted-git-info": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz", - "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==" + "http-https": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", + "integrity": "sha1-L5CN1fHbQGjAWM1ubUzjkskTOJs=" + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } }, "iconv-lite": { "version": "0.4.24", @@ -2967,15 +2789,20 @@ } } }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, "ignore": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" }, "import-fresh": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.1.0.tgz", - "integrity": "sha512-PpuksHKGt8rXfWEr9m9EHIpgyyaltBy8+eF6GJM0QCAxMgxCfucMF3mjecK2QsJr0amJW7gTqh5/wht0z2UhEQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", "requires": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3000,11 +2827,6 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" - }, "inquirer": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", @@ -3026,9 +2848,33 @@ }, "dependencies": { "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + } + } }, "strip-ansi": { "version": "5.2.0", @@ -3036,124 +2882,37 @@ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "requires": { "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + } } } } }, - "interpret": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", - "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==" - }, "invert-kv": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==" }, - "is-absolute": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-1.0.0.tgz", - "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", - "requires": { - "is-relative": "^1.0.0", - "is-windows": "^1.0.1" - } - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" - }, - "is-callable": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", - "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==" - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=" - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==" - } - } - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=" + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" }, "is-function": { "version": "1.0.1", @@ -3164,6 +2923,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -3173,99 +2933,41 @@ "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=" }, - "is-negated-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-negated-glob/-/is-negated-glob-1.0.0.tgz", - "integrity": "sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI=" + "is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha1-q5124dtM7VHjXeDHLr7PCfc0zeg=" }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "is-object": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.1.tgz", + "integrity": "sha1-iVJojF7C/9awPsyF52ngKQMINHA=" }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "requires": { - "isobject": "^3.0.1" - } + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" }, "is-promise": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz", "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, - "is-regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", - "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", - "requires": { - "has": "^1.0.1" - } - }, - "is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", - "requires": { - "is-unc-path": "^1.0.0" - } + "is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==" }, "is-stream": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=" }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "requires": { - "has-symbols": "^1.0.0" - } - }, "is-typedarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" }, - "is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", - "requires": { - "unc-path-regex": "^0.1.2" - } - }, - "is-utf8": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", - "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=" - }, - "is-valid-glob": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-1.0.0.tgz", - "integrity": "sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao=" - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -3276,15 +2978,24 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" + }, + "isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } }, "js-sha3": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", - "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=" + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==" }, "js-tokens": { "version": "4.0.0", @@ -3300,6 +3011,21 @@ "esprima": "^4.0.0" } }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=" + }, "json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3310,42 +3036,47 @@ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" }, - "just-debounce": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/just-debounce/-/just-debounce-1.0.0.tgz", - "integrity": "sha1-h/zPrv/AtozRnVX2cilD+SnqNeo=" + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=" + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } }, "keccak": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-1.4.0.tgz", - "integrity": "sha512-eZVaCpblK5formjPjeTBik7TAg+pqnDrMHIffSvi9Lh7PQgM1+hSzakUeZFCk9DVVG0dacZJuaz2ntwlzZUIBw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.1.0.tgz", + "integrity": "sha512-m1wbJRTo+gWbctZWay9i26v5fFnYkOn7D5PCxJ3fZUGUEb49dE1Pm4BREUYCt/aoO6di7jeoGmhvqN9Nzylm3Q==", "requires": { - "bindings": "^1.2.1", - "inherits": "^2.0.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "bindings": "^1.5.0", + "inherits": "^2.0.4", + "nan": "^2.14.0", + "safe-buffer": "^5.2.0" } }, - "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==" - }, - "last-run": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/last-run/-/last-run-1.1.1.tgz", - "integrity": "sha1-RblpQsF7HHnHchmCWbqUO+v4yls=", + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "requires": { - "default-resolution": "^2.0.0", - "es6-weak-map": "^2.0.1" - } - }, - "lazystream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.0.tgz", - "integrity": "sha1-9plf4PggOS9hOWvolGJAe7dxaOQ=", - "requires": { - "readable-stream": "^2.0.5" + "json-buffer": "3.0.0" } }, "lcid": { @@ -3356,14 +3087,6 @@ "invert-kv": "^2.0.0" } }, - "lead": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lead/-/lead-1.0.0.tgz", - "integrity": "sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI=", - "requires": { - "flush-write-stream": "^1.0.2" - } - }, "levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", @@ -3373,40 +3096,12 @@ "type-check": "~0.3.2" } }, - "liftoff": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-3.1.0.tgz", - "integrity": "sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog==", - "requires": { - "extend": "^3.0.0", - "findup-sync": "^3.0.0", - "fined": "^1.0.1", - "flagged-respawn": "^1.0.0", - "is-plain-object": "^2.0.4", - "object.map": "^1.0.0", - "rechoir": "^0.6.2", - "resolve": "^1.1.7" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^2.2.0", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "strip-bom": "^2.0.0" - } - }, "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" + "p-locate": "^4.1.0" } }, "lodash": { @@ -3414,12 +3109,24 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" }, - "make-iterator": { + "lowercase-keys": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/make-iterator/-/make-iterator-1.0.1.tgz", - "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", "requires": { - "kind-of": "^6.0.2" + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" + } } }, "map-age-cleaner": { @@ -3430,51 +3137,6 @@ "p-defer": "^1.0.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=" - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "requires": { - "object-visit": "^1.0.0" - } - }, - "matchdep": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/matchdep/-/matchdep-2.0.0.tgz", - "integrity": "sha1-xvNINKDY28OzfCfui7yyfHd1WC4=", - "requires": { - "findup-sync": "^2.0.0", - "micromatch": "^3.0.4", - "resolve": "^1.4.0", - "stack-trace": "0.0.10" - }, - "dependencies": { - "findup-sync": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-2.0.0.tgz", - "integrity": "sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw=", - "requires": { - "detect-file": "^1.0.0", - "is-glob": "^3.1.0", - "micromatch": "^3.0.4", - "resolve-dir": "^1.0.1" - } - }, - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -3485,6 +3147,11 @@ "safe-buffer": "^5.1.2" } }, + "media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" + }, "mem": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", @@ -3502,24 +3169,41 @@ } } }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==" + }, + "mime-types": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", + "requires": { + "mime-db": "1.43.0" } }, "mimic-fn": { @@ -3559,35 +3243,41 @@ } }, "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "requires": { - "is-plain-object": "^2.0.4" - } - } + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "requires": { + "minipass": "^2.9.0" } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.4.tgz", + "integrity": "sha512-iG9AK/dJLtJ0XNgTuDbSyNS3zECqDlAhnQW4CsNxBG3LQJBbHmRX1egw39DmtOdCAqY+dKXV+sgPgilNWUKMVw==", "requires": { - "minimist": "0.0.8" + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "requires": { + "mkdirp": "*" } }, "mocha": { @@ -3609,6 +3299,12 @@ "supports-color": "5.4.0" }, "dependencies": { + "commander": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", + "dev": true + }, "debug": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", @@ -3632,6 +3328,21 @@ "path-is-absolute": "^1.0.0" } }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", @@ -3649,16 +3360,16 @@ } } }, + "mock-fs": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.11.0.tgz", + "integrity": "sha512-Yp4o3/ZA15wsXqJTT+R+9w2AYIkD1i80Lds47wDbuUhOvQvm+O2EfjFZSz0pMgZZSPHRhGxgcd2+GL4+jZMtdw==" + }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "mute-stdout": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", - "integrity": "sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg==" - }, "mute-stream": { "version": "0.0.7", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", @@ -3669,34 +3380,26 @@ "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==" }, + "nano-json-stream-parser": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", + "integrity": "sha1-DMj20OK2IrR5xA1JnEbWS3Vcb18=" + }, "nanoassert": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/nanoassert/-/nanoassert-1.1.0.tgz", "integrity": "sha1-TzFS4JVA/eKMdvRLGbvNHVpCR40=" }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, "natural-compare": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, "next-tick": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", @@ -3707,32 +3410,10 @@ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "now-and-later": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", - "integrity": "sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==", - "requires": { - "once": "^1.3.2" - } + "normalize-url": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.0.tgz", + "integrity": "sha512-2s47yzUxdexf1OhyRi4Em83iQk0aPvwTddtFz4hnSSw9dCEsLEGf6SwIO8ss/19S9iBb5sJaOuTvTGDeZI00BQ==" }, "npm-run-path": { "version": "2.0.2", @@ -3763,98 +3444,30 @@ } } }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==" + }, "object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "oboe": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.4.tgz", + "integrity": "sha1-IMiM2wwVNxuwQRklfU/dNLCqSfY=", "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } + "http-https": "^1.0.0" } }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "requires": { - "array-each": "^1.0.1", - "array-slice": "^1.0.0", - "for-own": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "object.map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.map/-/object.map-1.0.1.tgz", - "integrity": "sha1-z4Plncj8wK1fQlDh94s7gb2AHTc=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "requires": { - "isobject": "^3.0.1" - } - }, - "object.reduce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object.reduce/-/object.reduce-1.0.1.tgz", - "integrity": "sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60=", - "requires": { - "for-own": "^1.0.0", - "make-iterator": "^1.0.0" + "ee-first": "1.1.1" } }, "once": { @@ -3873,41 +3486,17 @@ "mimic-fn": "^1.0.0" } }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "requires": { "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", + "fast-levenshtein": "~2.0.6", "levn": "~0.3.0", "prelude-ls": "~1.1.2", "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "ordered-read-streams": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz", - "integrity": "sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4=", - "requires": { - "readable-stream": "^2.0.1" + "word-wrap": "~1.2.3" } }, "os-locale": { @@ -3925,6 +3514,11 @@ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, "p-defer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", @@ -3941,19 +3535,27 @@ "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==" }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "requires": { "p-try": "^2.0.0" } }, "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "requires": { - "p-limit": "^2.0.0" + "p-limit": "^2.2.0" + } + }, + "p-timeout": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-1.2.1.tgz", + "integrity": "sha1-XrOzU7f86Z8QGhA4iAuwVOu+o4Y=", + "requires": { + "p-finally": "^1.0.0" } }, "p-try": { @@ -3969,57 +3571,33 @@ "callsites": "^3.0.0" } }, - "parse-filepath": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.2.tgz", - "integrity": "sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE=", + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", "requires": { - "is-absolute": "^1.0.0", - "map-cache": "^0.2.0", - "path-root": "^0.1.1" + "asn1.js": "^4.0.0", + "browserify-aes": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" } }, "parse-headers": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz", - "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==", - "requires": { - "for-each": "^0.3.3", - "string.prototype.trim": "^1.1.2" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==" }, - "parse-json": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", - "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", - "requires": { - "error-ex": "^1.2.0" - } - }, - "parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==" - }, - "parse-passwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", - "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=" - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=" - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=" + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" }, "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" }, "path-is-absolute": { "version": "1.0.1", @@ -4036,33 +3614,10 @@ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=" }, - "path-parse": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", - "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" - }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "requires": { - "path-root-regex": "^0.1.0" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=" - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "requires": { - "graceful-fs": "^4.1.2", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - } + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" }, "pathval": { "version": "1.1.0", @@ -4081,6 +3636,16 @@ "sha.js": "^2.4.8" } }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=" + }, "pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -4099,20 +3664,15 @@ "pinkie": "^2.0.0" } }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=" - }, "prelude-ls": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" }, - "pretty-hrtime": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", - "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" }, "process": { "version": "0.5.2", @@ -4129,6 +3689,33 @@ "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" }, + "proxy-addr": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", + "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, "pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -4138,32 +3725,16 @@ "once": "^1.3.1" } }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, + "qs": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", + "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==" + }, "query-string": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", @@ -4174,16 +3745,13 @@ "strict-uri-encode": "^1.0.0" } }, - "querystringify": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.1.tgz", - "integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==" - }, - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true + "r1csfile": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/r1csfile/-/r1csfile-0.0.2.tgz", + "integrity": "sha512-H1aR5NYRJ/RUrHWR/PNEivFEDkLV4R0+4SlKo2eq/fyiWxwgZNapOkjnJXsy5TZn40uFVrud0uOxGyVWgm9rDg==", + "requires": { + "big-integer": "^1.6.48" + } }, "randombytes": { "version": "2.1.0", @@ -4193,48 +3761,35 @@ "safe-buffer": "^5.1.0" } }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { - "load-json-file": "^1.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^1.0.0" + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" } }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "raw-body": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", + "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", "requires": { - "find-up": "^1.0.0", - "read-pkg": "^1.0.0" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "requires": { - "path-exists": "^2.0.0", - "pinkie-promise": "^2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "requires": { - "pinkie-promise": "^2.0.0" - } - } + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "requires": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -4252,90 +3807,43 @@ } } }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", - "requires": { - "resolve": "^1.1.6" - } - }, - "regenerator-runtime": { - "version": "0.13.2", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.2.tgz", - "integrity": "sha512-S/TQAZJO+D3m9xeN1WTI8dLKBBiRgXBlTJvbWjCThHWZj9EvHK70Ff50/tYj2J/fvBY6JtFVwRuazHN2E7M9BA==" - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, "regexpp": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==" }, - "remove-bom-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz", - "integrity": "sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==", + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "requires": { - "is-buffer": "^1.1.5", - "is-utf8": "^0.2.1" - } - }, - "remove-bom-stream": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz", - "integrity": "sha1-BfGlk/FuQuH7kOv1nejlaVJflSM=", - "requires": { - "remove-bom-buffer": "^3.0.0", - "safe-buffer": "^5.1.0", - "through2": "^2.0.3" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=" - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" - }, - "replace-ext": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.0.tgz", - "integrity": "sha1-3mMSg3P8v3w8z6TeWkgMRaZ5WOs=" - }, - "replace-homedir": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/replace-homedir/-/replace-homedir-1.0.0.tgz", - "integrity": "sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw=", - "requires": { - "homedir-polyfill": "^1.0.1", - "is-absolute": "^1.0.0", - "remove-trailing-separator": "^1.1.0" + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==" + } } }, "require-directory": { @@ -4344,50 +3852,23 @@ "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" - }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-dir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", - "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=", - "requires": { - "expand-tilde": "^2.0.0", - "global-modules": "^1.0.0" - } + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" }, - "resolve-options": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-options/-/resolve-options-1.1.0.tgz", - "integrity": "sha1-MrueOcBtZzONyTeMDW1gdFZq0TE=", + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", "requires": { - "value-or-function": "^3.0.0" + "lowercase-keys": "^1.0.0" } }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=" - }, "restore-cursor": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", @@ -4397,15 +3878,10 @@ "signal-exit": "^3.0.2" } }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==" - }, "rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", "requires": { "glob": "^7.1.3" } @@ -4420,26 +3896,25 @@ } }, "rlp": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.3.tgz", - "integrity": "sha512-l6YVrI7+d2vpW6D6rS05x2Xrmq8oW7v3pieZOJKBEdjuTF4Kz/iwk55Zyh1Zaz+KOB2kC8+2jZlp2u9L4tTzCQ==", + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.4.tgz", + "integrity": "sha512-fdq2yYCWpAQBhwkZv+Z8o/Z4sPmYm1CUq6P7n6lVTOdb949CnqA0sndXal5C1NleSVSZm6q5F3iEbauyVln/iw==", "requires": { - "bn.js": "^4.11.1", - "safe-buffer": "^5.1.1" + "bn.js": "^4.11.1" } }, "run-async": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.3.0.tgz", - "integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.0.tgz", + "integrity": "sha512-xJTbh/d7Lm7SBhc1tNvTpeCHaEzoyxPrqNlvSdMfBTYwaY++UJFyXUOxAtsRUXjlqOfj8luNaR9vjCh4KeV+pg==", "requires": { "is-promise": "^2.1.0" } }, "rxjs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.2.tgz", - "integrity": "sha512-HUb7j3kvb7p7eCUHE3FqjoDsC1xfZQ4AHFWfTKSpZ+sAhhz5X1WX0ZuUqWbzB2QhSLp3DoLUG+hMdEDKqWo2Zg==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.4.tgz", + "integrity": "sha512-naMQXcgEo3csAEGvw/NydRA0fuS2nDZJiw1YUWFKU7aPPAPGZEsD4Iimit96qwCieH6y614MCLYwdkrWx7z/7Q==", "requires": { "tslib": "^1.9.0" } @@ -4449,76 +3924,112 @@ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.0.tgz", "integrity": "sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg==" }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "requires": { - "ret": "~0.1.10" - } - }, "safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, - "scrypt": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/scrypt/-/scrypt-6.0.3.tgz", - "integrity": "sha1-BOAUpWgrU/pQwtXM4WfXGcBthw0=", - "optional": true, - "requires": { - "nan": "^2.0.8" - } - }, "scrypt-js": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.4.tgz", - "integrity": "sha512-4KsaGcPnuhtCZQCxFxN3GVYIhKFPTdLd8PLC552XwbMndtD0cjRFAhDuuydXQ0h08ZfPgzqe6EKHozpuH74iDw==" - }, - "scrypt.js": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/scrypt.js/-/scrypt.js-0.3.0.tgz", - "integrity": "sha512-42LTc1nyFsyv/o0gcHtDztrn+aqpkaCNt5Qh7ATBZfhEZU7IC/0oT/qbBH+uRNoAPvs2fwiOId68FDEoSRA8/A==", - "requires": { - "scrypt": "^6.0.2", - "scryptsy": "^1.2.1" - } + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-2.0.3.tgz", + "integrity": "sha1-uwBAvgMEPamgEqLOqfyfhSz8h9Q=" }, "scryptsy": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-1.2.1.tgz", - "integrity": "sha1-oyJfpLJST4AnAHYeKFW987LZIWM=", - "requires": { - "pbkdf2": "^3.0.3" - } + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/scryptsy/-/scryptsy-2.1.0.tgz", + "integrity": "sha512-1CdSqHQowJBnMAFyPEBRfqag/YP9OF394FV+4YREIJX4ljD7OxvQRDayyoyyCk+senRjSkP6VnUNQmVQqB6g7w==" }, "secp256k1": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", - "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.8.0.tgz", + "integrity": "sha512-k5ke5avRZbtl9Tqx/SA7CbY3NF6Ro+Sj9cZxezFzuBlLDmyqPiL8hJJ+EmzD8Ig4LUDByHJ3/iPOVoRixs/hmw==", "requires": { "bindings": "^1.5.0", "bip66": "^1.1.5", "bn.js": "^4.11.8", "create-hash": "^1.2.0", "drbg.js": "^1.0.1", - "elliptic": "^6.4.1", + "elliptic": "^6.5.2", "nan": "^2.14.0", "safe-buffer": "^5.1.2" } }, - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==" - }, - "semver-greatest-satisfied-range": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz", - "integrity": "sha1-E+jCZYq5aRywzXEJMkAoDTb3els=", + "seek-bzip": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.5.tgz", + "integrity": "sha1-z+kXyz0nS8/6x5J1ivUxc+sfq9w=", "requires": { - "sver-compat": "^1.5.0" + "commander": "~2.8.1" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "send": { + "version": "0.17.1", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz", + "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==" + } + } + }, + "serve-static": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", + "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", + "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" } }, "set-blocking": { @@ -4526,31 +4037,15 @@ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, "setimmediate": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.4.tgz", - "integrity": "sha1-IOgd5iLUoCWIzgyNqJc8vPHTE48=" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==" }, "sha.js": { "version": "2.4.11", @@ -4602,115 +4097,33 @@ "ansi-styles": "^3.2.0", "astral-regex": "^1.0.0", "is-fullwidth-code-point": "^2.0.0" - } - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "requires": { - "ms": "2.0.0" + "color-convert": "^1.9.0" } }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "requires": { - "is-descriptor": "^0.1.0" + "color-name": "1.1.3" } }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "requires": { - "is-extendable": "^0.1.0" - } + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, - "ms": { + "is-fullwidth-code-point": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" } } }, @@ -4727,120 +4140,223 @@ "yargs": "^12.0.5" }, "dependencies": { - "keccak": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-2.0.0.tgz", - "integrity": "sha512-rKe/lRr0KGhjoz97cwg+oeT1Rj/Y4cjae6glArioUC8JBF9ROGZctwIaaruM7d7naovME4Q8WcQSO908A8qcyQ==", + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=" + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", "requires": { - "bindings": "^1.2.1", - "inherits": "^2.0.3", - "nan": "^2.2.1", - "safe-buffer": "^5.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "requires": { + "p-limit": "^2.0.0" + } + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=" + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=" + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "yargs": { + "version": "12.0.5", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", + "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", + "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" } } } }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" - }, - "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", - "requires": { - "atob": "^2.1.1", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-url": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", - "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=" - }, - "sparkles": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sparkles/-/sparkles-1.0.1.tgz", - "integrity": "sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw==" - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==" - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz", - "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==" - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "requires": { - "extend-shallow": "^3.0.0" - } - }, "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" }, - "stack-trace": { - "version": "0.0.10", - "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz", - "integrity": "sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA=" - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "requires": { - "is-descriptor": "^0.1.0" - } - } + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" } }, - "stream-exhaust": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/stream-exhaust/-/stream-exhaust-1.0.2.tgz", - "integrity": "sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw==" - }, - "stream-shift": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz", - "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=" + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" }, "strict-uri-encode": { "version": "1.1.0", @@ -4848,22 +4364,13 @@ "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=" }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - } - }, - "string.prototype.trim": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.1.2.tgz", - "integrity": "sha1-0E3iyJ4Tf019IG8Ia17S+ua+jOo=", - "requires": { - "define-properties": "^1.1.2", - "es-abstract": "^1.5.0", - "function-bind": "^1.0.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" } }, "string_decoder": { @@ -4882,19 +4389,19 @@ } }, "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", "requires": { - "ansi-regex": "^3.0.0" + "ansi-regex": "^5.0.0" } }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", "requires": { - "is-utf8": "^0.2.0" + "is-natural-number": "^4.0.1" } }, "strip-eof": { @@ -4923,13 +4430,69 @@ "has-flag": "^3.0.0" } }, - "sver-compat": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/sver-compat/-/sver-compat-1.5.0.tgz", - "integrity": "sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg=", + "swarm-js": { + "version": "0.1.39", + "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.39.tgz", + "integrity": "sha512-QLMqL2rzF6n5s50BptyD6Oi0R1aWlJC5Y17SRIVXRj6OR1DRIPM7nepvrxxkjA1zNzFz6mUOMjfeqeDaWB7OOg==", "requires": { - "es6-iterator": "^2.0.1", - "es6-symbol": "^3.1.1" + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "decompress": "^4.0.0", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request-promise": "^0.1.2" + }, + "dependencies": { + "get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=" + }, + "got": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/got/-/got-7.1.0.tgz", + "integrity": "sha512-Y5WMo7xKKq1muPsxD+KmrR8DH5auG7fBdDVueZwETwV6VytKyU9OX/ddpq2/1hp1vIPvVb4T81dKQz3BivkNLw==", + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "p-cancelable": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.3.0.tgz", + "integrity": "sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==" + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=" + }, + "url-parse-lax": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz", + "integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=", + "requires": { + "prepend-http": "^1.0.1" + } + } } }, "table": { @@ -4948,6 +4511,16 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==" + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=" + }, "string-width": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", @@ -4968,6 +4541,34 @@ } } }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "requires": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + } + }, "text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", @@ -4978,106 +4579,73 @@ "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "through2-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/through2-filter/-/through2-filter-3.0.0.tgz", - "integrity": "sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==", - "requires": { - "through2": "~2.0.0", - "xtend": "~4.0.0" - } - }, - "time-stamp": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-1.1.0.tgz", - "integrity": "sha1-dkpaEa9QVhkhsTPztE5hhofg9cM=" - }, "timed-out": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=" }, "tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", + "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", "requires": { - "os-tmpdir": "~1.0.2" + "rimraf": "^2.6.3" } }, - "to-absolute-glob": { + "tmp-promise": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz", - "integrity": "sha1-GGX0PZ50sIItufFFt4z/fQ98hJs=", + "resolved": "https://registry.npmjs.org/tmp-promise/-/tmp-promise-2.0.2.tgz", + "integrity": "sha512-zl71nFWjPKW2KXs+73gEk8RmqvtAeXPxhWDkTUoa3MSMkjq3I+9OeknjF178MQoMYsdqL730hfzvNfEkePxq9Q==", "requires": { - "is-absolute": "^1.0.0", - "is-negated-glob": "^1.0.0" + "tmp": "0.1.0" } }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, - "to-through": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-through/-/to-through-2.0.0.tgz", - "integrity": "sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY=", + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "requires": { - "through2": "^2.0.3" + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==" + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==" + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=" }, "type": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/type/-/type-1.0.1.tgz", - "integrity": "sha512-MAM5dBMJCJNKs9E7JXo4CXRAansRfG0nlJxW7Wf6GZzSOvH31zClSaHdIMWLehe/EGMBkqeC55rrkaOr5Oo7Nw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" }, "type-check": { "version": "0.3.2", @@ -5092,10 +4660,20 @@ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } }, "typedarray-to-buffer": { "version": "3.1.5", @@ -5105,92 +4683,34 @@ "is-typedarray": "^1.0.0" } }, - "unc-path-regex": { + "ultron": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", + "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==" + }, + "unbzip2-stream": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.3.3.tgz", + "integrity": "sha512-fUlAF7U9Ah1Q6EieQ4x4zLNejrRvDWUYmxXUpN3uziFYCHapjWFaCAnreY9bGgxzaMCFAPPpYNng57CypwJVhg==", + "requires": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "underscore": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz", + "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==" + }, + "universalify": { "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=" + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" }, - "undertaker": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/undertaker/-/undertaker-1.2.1.tgz", - "integrity": "sha512-71WxIzDkgYk9ZS+spIB8iZXchFhAdEo2YU8xYqBYJ39DIUIqziK78ftm26eecoIY49X0J2MLhG4hr18Yp6/CMA==", - "requires": { - "arr-flatten": "^1.0.1", - "arr-map": "^2.0.0", - "bach": "^1.0.0", - "collection-map": "^1.0.0", - "es6-weak-map": "^2.0.1", - "last-run": "^1.1.0", - "object.defaults": "^1.0.0", - "object.reduce": "^1.0.0", - "undertaker-registry": "^1.0.0" - } - }, - "undertaker-registry": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/undertaker-registry/-/undertaker-registry-1.0.1.tgz", - "integrity": "sha1-XkvaMI5KiirlhPm5pDWaSZglzFA=" - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "unique-stream": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/unique-stream/-/unique-stream-2.3.1.tgz", - "integrity": "sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==", - "requires": { - "json-stable-stringify-without-jsonify": "^1.0.1", - "through2-filter": "^3.0.0" - } - }, - "unset-value": { + "unpipe": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=" - } - } - }, - "upath": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.1.2.tgz", - "integrity": "sha512-kXpym8nmDmlCBr7nKdIx8P2jNBa+pBpIUFRnKJ4dr8htyYGJFokkr2ZvERRtUN+9SY+JqXouNgUPtv6JQva/2Q==" + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "uri-js": { "version": "4.2.2", @@ -5200,18 +4720,12 @@ "punycode": "^2.1.0" } }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=" - }, - "url-parse": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz", - "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==", + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", "requires": { - "querystringify": "^2.0.0", - "requires-port": "^1.0.0" + "prepend-http": "^2.0.0" } }, "url-set-query": { @@ -5219,220 +4733,218 @@ "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=" }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" + "url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha1-FQWgOiiaSMvXpDTvuu7FBV9WM6k=" }, "utf8": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/utf8/-/utf8-2.1.1.tgz", - "integrity": "sha1-LgHbAvfY0JRPdxBPFgnrDDBM92g=" + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==" }, "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" + }, "uuid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.1.tgz", - "integrity": "sha1-wqMN7bPlNdcsz4LjQ5QaULqFM6w=" + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "v8flags": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-3.1.3.tgz", - "integrity": "sha512-amh9CCg3ZxkzQ48Mhcb8iX7xpAfYJgePHxWMQCBWECpOSqJUXgY26ncA61UTV0BkPqfhcy6mzwCIoP4ygxpW8w==", + "v8-compile-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.0.tgz", + "integrity": "sha512-usZBT3PW+LOjM25wbqIlZwPeJV+3OSz3M1k1Ws8snlW39dZyYL9lOGC5FgPVHfk0jKmjiDV8Z0mIbVQPiwFs7g==", + "dev": true + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", "requires": { - "homedir-polyfill": "^1.0.1" + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" } }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "wasmbuilder": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/wasmbuilder/-/wasmbuilder-0.0.9.tgz", + "integrity": "sha512-QJ550VwQvN6P4oW0d+/tCfo3i+1GBuuFX906r8QpDRryYXmXvdRZWJM0qkHgOfhg8G47SfgJVYNl3fyLfkxaPw==", "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "value-or-function": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/value-or-function/-/value-or-function-3.0.0.tgz", - "integrity": "sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM=" - }, - "vinyl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/vinyl/-/vinyl-2.2.0.tgz", - "integrity": "sha512-MBH+yP0kC/GQ5GwBqrTPTzEfiiLjta7hTtvQtbxBgTeSXsmKQRQecjibMbxIXzVT3Y9KJK+drOz1/k+vsu8Nkg==", - "requires": { - "clone": "^2.1.1", - "clone-buffer": "^1.0.0", - "clone-stats": "^1.0.0", - "cloneable-readable": "^1.0.0", - "remove-trailing-separator": "^1.0.1", - "replace-ext": "^1.0.0" - } - }, - "vinyl-fs": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vinyl-fs/-/vinyl-fs-3.0.3.tgz", - "integrity": "sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==", - "requires": { - "fs-mkdirp-stream": "^1.0.0", - "glob-stream": "^6.1.0", - "graceful-fs": "^4.0.0", - "is-valid-glob": "^1.0.0", - "lazystream": "^1.0.0", - "lead": "^1.0.0", - "object.assign": "^4.0.4", - "pumpify": "^1.3.5", - "readable-stream": "^2.3.3", - "remove-bom-buffer": "^3.0.0", - "remove-bom-stream": "^1.2.0", - "resolve-options": "^1.1.0", - "through2": "^2.0.0", - "to-through": "^2.0.0", - "value-or-function": "^3.0.0", - "vinyl": "^2.0.0", - "vinyl-sourcemap": "^1.1.0" - } - }, - "vinyl-sourcemap": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz", - "integrity": "sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY=", - "requires": { - "append-buffer": "^1.0.2", - "convert-source-map": "^1.5.0", - "graceful-fs": "^4.1.6", - "normalize-path": "^2.1.1", - "now-and-later": "^2.0.0", - "remove-bom-buffer": "^3.0.0", - "vinyl": "^2.0.0" + "big-integer": "^1.6.48" } }, "web3": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.0.0-beta.55.tgz", - "integrity": "sha512-yJpwy4IUA3T/F9hWzYQVn0GbJCrAaZ0KTIO3iuqkhaYH0Y09KV7k4GzFi4hN7hT4cFTj4yIKaeVCwQ5kzvi2Vg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.2.6.tgz", + "integrity": "sha512-tpu9fLIComgxGrFsD8LUtA4s4aCZk7px8UfcdEy6kS2uDi/ZfR07KJqpXZMij7Jvlq+cQrTAhsPSiBVvoMaivA==", + "requires": { + "@types/node": "^12.6.1", + "web3-bzz": "1.2.6", + "web3-core": "1.2.6", + "web3-eth": "1.2.6", + "web3-eth-personal": "1.2.6", + "web3-net": "1.2.6", + "web3-shh": "1.2.6", + "web3-utils": "1.2.6" + } + }, + "web3-bzz": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.2.6.tgz", + "integrity": "sha512-9NiHLlxdI1XeFtbPJAmi2jnnIHVF+GNy517wvOS72P7ZfuJTPwZaSNXfT01vWgPPE9R96/uAHDWHOg+T4WaDQQ==", "requires": { - "@babel/runtime": "^7.3.1", "@types/node": "^10.12.18", - "web3-core": "1.0.0-beta.55", - "web3-eth": "1.0.0-beta.55", - "web3-eth-personal": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-shh": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "got": "9.6.0", + "swarm-js": "0.1.39", + "underscore": "1.9.1" + }, + "dependencies": { + "@types/node": { + "version": "10.17.17", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.17.tgz", + "integrity": "sha512-gpNnRnZP3VWzzj5k3qrpRC6Rk3H/uclhAVo1aIvwzK5p5cOrs9yEyQ8H/HBsBY0u5rrWxXEiVPQ0dEB6pkjE8Q==" + } } }, "web3-core": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.0.0-beta.55.tgz", - "integrity": "sha512-AMMp7TLEtE7u8IJAu/THrRhBTZyZzeo7Y6GiWYNwb5+KStC9hIGLr9cI1KX9R6ZioTOLRHrqT7awDhnJ1ku2mg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.2.6.tgz", + "integrity": "sha512-y/QNBFtr5cIR8vxebnotbjWJpOnO8LDYEAzZjeRRUJh2ijmhjoYk7dSNx9ExgC0UCfNFRoNCa9dGRu/GAxwRlw==", "requires": { - "@babel/runtime": "^7.3.1", "@types/bn.js": "^4.11.4", - "@types/node": "^10.12.18", - "lodash": "^4.17.11", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "@types/node": "^12.6.1", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-requestmanager": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-core-helpers": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.0.0-beta.55.tgz", - "integrity": "sha512-suj9Xy/lIqajaYLJTEjr2rlFgu6hGYwChHmf8+qNrC2luZA6kirTamtB9VThWMxbywx7p0bqQFjW6zXogAgWhg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.2.6.tgz", + "integrity": "sha512-gYKWmC2HmO7RcDzpo4L1K8EIoy5L8iubNDuTC6q69UxczwqKF/Io0kbK/1Z10Av++NlzOSiuyGp2gc4t4UOsDw==", "requires": { - "@babel/runtime": "^7.3.1", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-eth-iban": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-eth-iban": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-core-method": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.0.0-beta.55.tgz", - "integrity": "sha512-w1cW/s2ji9qGELHk2uMJCn1ooay0JJLVoPD1nvmsW6OTRWcVjxa62nJrFQhe6P5lEb83Xk9oHgmCxZoVUHibOw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.2.6.tgz", + "integrity": "sha512-r2dzyPEonqkBg7Mugq5dknhV5PGaZTHBZlS/C+aMxNyQs3T3eaAsCTqlQDitwNUh/sUcYPEGF0Vo7ahYK4k91g==", "requires": { - "@babel/runtime": "^7.3.1", - "eventemitter3": "3.1.0", - "lodash": "^4.17.11", - "rxjs": "^6.4.0", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-utils": "1.2.6" + } + }, + "web3-core-promievent": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.2.6.tgz", + "integrity": "sha512-km72kJef/qtQNiSjDJJVHIZvoVOm6ytW3FCYnOcCs7RIkviAb5JYlPiye0o4pJOLzCXYID7DK7Q9bhY8qWb1lw==", + "requires": { + "any-promise": "1.3.0", + "eventemitter3": "3.1.2" + } + }, + "web3-core-requestmanager": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.2.6.tgz", + "integrity": "sha512-QU2cbsj9Dm0r6om40oSwk8Oqbp3wTa08tXuMpSmeOTkGZ3EMHJ1/4LiJ8shwg1AvPMrKVU0Nri6+uBNCdReZ+g==", + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6", + "web3-providers-http": "1.2.6", + "web3-providers-ipc": "1.2.6", + "web3-providers-ws": "1.2.6" } }, "web3-core-subscriptions": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.0.0-beta.55.tgz", - "integrity": "sha512-pb3oQbUzK7IoyXwag8TYInQddg0rr7BHxKc+Pbs/92hVNQ5ps4iGMVJKezdrjlQ1IJEEUiDIglXl4LZ1hIuMkw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.2.6.tgz", + "integrity": "sha512-M0PzRrP2Ct13x3wPulFtc5kENH4UtnPxO9YxkfQlX2WRKENWjt4Rfq+BCVGYEk3rTutDfWrjfzjmqMRvXqEY5Q==", "requires": { - "@babel/runtime": "^7.3.1", - "eventemitter3": "^3.1.0", - "lodash": "^4.17.11" + "eventemitter3": "3.1.2", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" } }, "web3-eth": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.0.0-beta.55.tgz", - "integrity": "sha512-F3zJ9I1gOgQdNGfi2Dy2lmj6OqCMJoRN01XHhQZagq0HY1JYMfObtfMi5E3L+qsegsSddHbqp4YY57tKx6uxpA==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.2.6.tgz", + "integrity": "sha512-ROWlDPzh4QX6tlGGGlAK6X4kA2n0/cNj/4kb0nNVWkRouGmYO0R8k6s47YxYHvGiXt0s0++FUUv5vAbWovtUQw==", "requires": { - "@babel/runtime": "^7.3.1", - "ethereumjs-tx": "^1.3.7", - "rxjs": "^6.4.0", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-eth-contract": "1.0.0-beta.55", - "web3-eth-ens": "1.0.0-beta.55", - "web3-eth-iban": "1.0.0-beta.55", - "web3-eth-personal": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-eth-accounts": "1.2.6", + "web3-eth-contract": "1.2.6", + "web3-eth-ens": "1.2.6", + "web3-eth-iban": "1.2.6", + "web3-eth-personal": "1.2.6", + "web3-net": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-abi": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.0.0-beta.55.tgz", - "integrity": "sha512-3h1xnm/vYmKUXTOYAOP0OsB5uijQV76pNNRGKOB6Dq6GR1pbcbD3WrB/4I643YA8l91t5FRzFzUiA3S77R2iqw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.2.6.tgz", + "integrity": "sha512-w9GAyyikn8nSifSDZxAvU9fxtQSX+W2xQWMmrtTXmBGCaE4/ywKOSPAO78gq8AoU4Wq5yqVGKZLLbfpt7/sHlA==", "requires": { - "@babel/runtime": "^7.3.1", - "ethers": "^4.0.27", - "lodash": "^4.17.11", - "web3-utils": "1.0.0-beta.55" + "ethers": "4.0.0-beta.3", + "underscore": "1.9.1", + "web3-utils": "1.2.6" } }, "web3-eth-accounts": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.0.0-beta.55.tgz", - "integrity": "sha512-VfzvwpSDHXqRVelIxsBVhgbV9BkFvhJ/q+bKhnVUUXV0JAhMK/7uC92TsqKk4EBYuqpHyZ1jjqrL4n03fMU7zw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.2.6.tgz", + "integrity": "sha512-cDVtonHRgzqi/ZHOOf8kfCQWFEipcfQNAMzXIaKZwc0UUD9mgSI5oJrN45a89Ze+E6Lz9m77cDG5Ax9zscSkcw==", "requires": { - "@babel/runtime": "^7.3.1", - "browserify-cipher": "^1.0.1", - "eth-lib": "0.2.8", - "lodash": "^4.17.11", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "scrypt.js": "0.3.0", + "@web3-js/scrypt-shim": "^0.1.0", + "any-promise": "1.3.0", + "crypto-browserify": "3.12.0", + "eth-lib": "^0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "underscore": "1.9.1", "uuid": "3.3.2", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-utils": "1.2.6" }, "dependencies": { + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, "uuid": { "version": "3.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", @@ -5441,155 +4953,132 @@ } }, "web3-eth-contract": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.0.0-beta.55.tgz", - "integrity": "sha512-v6oB1wfH039/A5sTb4ZTKX++fcBTHEkuQGpq50ATIDoxP/UTz2+6S+iL+3sCJTsByPw2/Bni/HM7NmLkXqzg/Q==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.2.6.tgz", + "integrity": "sha512-ak4xbHIhWgsbdPCkSN+HnQc1SH4c856y7Ly+S57J/DQVzhFZemK5HvWdpwadJrQTcHET3ZeId1vq3kmW7UYodw==", "requires": { - "@babel/runtime": "^7.3.1", "@types/bn.js": "^4.11.4", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-ens": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.0.0-beta.55.tgz", - "integrity": "sha512-jEL17coO0FJXb7KYq4+7DhVXj0Rh+wHfZ86jOvFUvJsRaUHfqK2TlMatuhD2mbrmxpBYb6oMPnXVnNK9bnD5Rg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.2.6.tgz", + "integrity": "sha512-8UEqt6fqR/dji/jBGPFAyBs16OJjwi0t2dPWXPyGXmty/fH+osnXwWXE4HRUyj4xuafiM5P1YkXMsPhKEadjiw==", "requires": { - "@babel/runtime": "^7.3.1", "eth-ens-namehash": "2.0.8", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-eth-abi": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-eth-contract": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "underscore": "1.9.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-promievent": "1.2.6", + "web3-eth-abi": "1.2.6", + "web3-eth-contract": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-eth-iban": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.0.0-beta.55.tgz", - "integrity": "sha512-a2Fxsb5Mssa+jiXgjUdIzJipE0175IcQXJbZLpKft2+zeSJWNTbaa3PQD2vPPpIM4W789q06N+f9Zc0Fyls+1g==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.2.6.tgz", + "integrity": "sha512-TPMc3BW9Iso7H+9w+ytbqHK9wgOmtocyCD3PaAe5Eie50KQ/j7ThA60dGJnxItVo6yyRv5pZAYxPVob9x/fJlg==", "requires": { - "@babel/runtime": "^7.3.1", "bn.js": "4.11.8", - "web3-utils": "1.0.0-beta.55" + "web3-utils": "1.2.6" } }, "web3-eth-personal": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.0.0-beta.55.tgz", - "integrity": "sha512-H0mahLQx6Oj7lpgTamKAswr3rHChRUZijeWAar2Hj7BABQlLRKwx8n09nYhxggvvLYQNQS90JjvQue7rAo2LQQ==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.2.6.tgz", + "integrity": "sha512-T2NUkh1plY8d7wePXSoHnaiKOd8dLNFaQfgBl9JHU6S7IJrG9jnYD9bVxLEgRUfHs9gKf9tQpDf7AcPFdq/A8g==", "requires": { - "@babel/runtime": "^7.3.1", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-eth-accounts": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "@types/node": "^12.6.1", + "web3-core": "1.2.6", + "web3-core-helpers": "1.2.6", + "web3-core-method": "1.2.6", + "web3-net": "1.2.6", + "web3-utils": "1.2.6" } }, "web3-net": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.0.0-beta.55.tgz", - "integrity": "sha512-do2WY8+/GArJSWX7k/zZ7nBnV9Y3n6LhPYkwT3LeFqDzD515bKwlomaNC8hOaTc6UQyXIoPprYTK2FevL7jrZw==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.2.6.tgz", + "integrity": "sha512-hsNHAPddrhgjWLmbESW0KxJi2GnthPcow0Sqpnf4oB6+/+ZnQHU9OsIyHb83bnC1OmunrK2vf9Ye2mLPdFIu3A==", "requires": { - "@babel/runtime": "^7.3.1", - "lodash": "^4.17.11", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "web3-core": "1.2.6", + "web3-core-method": "1.2.6", + "web3-utils": "1.2.6" } }, - "web3-providers": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-providers/-/web3-providers-1.0.0-beta.55.tgz", - "integrity": "sha512-MNifc7W+iF6rykpbDR1MuX152jshWdZXHAU9Dk0Ja2/23elhIs4nCWs7wOX9FHrKgdrQbscPoq0uy+0aGzyWVQ==", + "web3-providers-http": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.2.6.tgz", + "integrity": "sha512-2+SaFCspb5f82QKuHB3nEPQOF9iSWxRf7c18fHtmnLNVkfG9SwLN1zh67bYn3tZGUdOI3gj8aX4Uhfpwx9Ezpw==", "requires": { - "@babel/runtime": "^7.3.1", - "@types/node": "^10.12.18", - "eventemitter3": "3.1.0", - "lodash": "^4.17.11", - "url-parse": "1.4.4", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55", - "websocket": "^1.0.28", + "web3-core-helpers": "1.2.6", "xhr2-cookies": "1.1.0" } }, - "web3-shh": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.0.0-beta.55.tgz", - "integrity": "sha512-lGP2HQ/1ThNnfoU8677aL48KsTx4Ht+2KQIn39dGpxVZqysQmovQIltbymVnAr4h8wofwcEz46iNHGa+PAyNzA==", + "web3-providers-ipc": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.2.6.tgz", + "integrity": "sha512-b0Es+/GTZyk5FG3SgUDW+2/mBwJAXWt5LuppODptiOas8bB2khLjG6+Gm1K4uwOb+1NJGPt5mZZ8Wi7vibtQ+A==", "requires": { - "@babel/runtime": "^7.3.1", - "web3-core": "1.0.0-beta.55", - "web3-core-helpers": "1.0.0-beta.55", - "web3-core-method": "1.0.0-beta.55", - "web3-core-subscriptions": "1.0.0-beta.55", - "web3-net": "1.0.0-beta.55", - "web3-providers": "1.0.0-beta.55", - "web3-utils": "1.0.0-beta.55" + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" + } + }, + "web3-providers-ws": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.2.6.tgz", + "integrity": "sha512-20waSYX+gb5M5yKhug5FIwxBBvkKzlJH7sK6XEgdOx6BZ9YYamLmvg9wcRVtnSZO8hV/3cWenO/tRtTrHVvIgQ==", + "requires": { + "@web3-js/websocket": "^1.0.29", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.6" + } + }, + "web3-shh": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.2.6.tgz", + "integrity": "sha512-rouWyOOM6YMbLQd65grpj8BBezQfgNeRRX+cGyW4xsn6Xgu+B73Zvr6OtA/ftJwwa9bqHGpnLrrLMeWyy4YLUw==", + "requires": { + "web3-core": "1.2.6", + "web3-core-method": "1.2.6", + "web3-core-subscriptions": "1.2.6", + "web3-net": "1.2.6" } }, "web3-utils": { - "version": "1.0.0-beta.55", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.0.0-beta.55.tgz", - "integrity": "sha512-ASWqUi8gtWK02Tp8ZtcoAbHenMpQXNvHrakgzvqTNNZn26wgpv+Q4mdPi0KOR6ZgHFL8R/9b5BBoUTglS1WPpg==", + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.2.6.tgz", + "integrity": "sha512-8/HnqG/l7dGmKMgEL9JeKPTtjScxOePTzopv5aaKFExPfaBrYRkgoMqhoowCiAl/s16QaTn4DoIF1QC4YsT7Mg==", "requires": { - "@babel/runtime": "^7.3.1", - "@types/bn.js": "^4.11.4", - "@types/node": "^10.12.18", "bn.js": "4.11.8", - "eth-lib": "0.2.8", - "ethjs-unit": "^0.1.6", - "lodash": "^4.17.11", + "eth-lib": "0.2.7", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", - "utf8": "2.1.1" - } - }, - "websocket": { - "version": "1.0.29", - "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.29.tgz", - "integrity": "sha512-WhU8jKXC8sTh6ocLSqpZRlOKMNYGwUvjA5+XcIgIk/G3JCaDfkZUr0zA19sVSxJ0TEvm0i5IBzr54RZC4vzW7g==", - "requires": { - "debug": "^2.2.0", - "gulp": "^4.0.2", - "nan": "^2.11.0", - "typedarray-to-buffer": "^3.1.5", - "yaeti": "^0.0.6" + "underscore": "1.9.1", + "utf8": "3.0.0" }, "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "eth-lib": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.7.tgz", + "integrity": "sha1-L5Pxex4jrsN1nNSj/iDBKGo/wco=", "requires": { - "ms": "2.0.0" + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" } } }, @@ -5606,51 +5095,19 @@ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "requires": { - "ansi-regex": "^2.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "wrappy": { @@ -5666,6 +5123,23 @@ "mkdirp": "^0.5.1" } }, + "ws": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", + "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + } + } + }, "xhr": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.5.0.tgz", @@ -5727,33 +5201,46 @@ "resolved": "https://registry.npmjs.org/yaeti/-/yaeti-0.0.6.tgz", "integrity": "sha1-8m9ITXJoTPQr7ft2lwqhYI+/lXc=" }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + }, "yargs": { - "version": "12.0.5", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-12.0.5.tgz", - "integrity": "sha512-Lhz8TLaYnxq/2ObqHDql8dX8CJi97oHxrjUcYtzKbbykPtVW9WB+poxI+NM2UIzsMgNCZTIf0AQwsjK5yMAqZw==", + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.3.1.tgz", + "integrity": "sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA==", "requires": { - "cliui": "^4.0.0", + "cliui": "^6.0.0", "decamelize": "^1.2.0", - "find-up": "^3.0.0", - "get-caller-file": "^1.0.1", - "os-locale": "^3.0.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^2.0.0", + "string-width": "^4.2.0", "which-module": "^2.0.0", - "y18n": "^3.2.1 || ^4.0.0", - "yargs-parser": "^11.1.1" + "y18n": "^4.0.0", + "yargs-parser": "^18.1.1" } }, "yargs-parser": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-11.1.1.tgz", - "integrity": "sha512-C6kB/WJDiaxONLJQnF8ccx9SEeoTTLek8RVbaOIsrAUS8VrBEXfmeSnCZxygc+XC2sNMBIwOOnfcxiynjHsVSQ==", + "version": "18.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.2.tgz", + "integrity": "sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ==", "requires": { "camelcase": "^5.0.0", "decamelize": "^1.2.0" } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } } } } diff --git a/package.json b/package.json index 6861042..c4a5722 100644 --- a/package.json +++ b/package.json @@ -26,15 +26,15 @@ "dependencies": { "blake-hash": "^1.1.0", "blake2b": "^2.1.3", - "circom": "0.0.35", - "fflib": "0.0.1", + "circom": "0.5.2", + "ffjavascript": "0.0.3", "snarkjs": "^0.1.20", "typedarray-to-buffer": "^3.1.5", - "web3": "^1.0.0-beta.55" + "web3": "^1.2.6" }, "devDependencies": { - "eslint-plugin-mocha": "^5.2.0", - "ganache-cli": "^6.4.4", + "eslint": "^6.8.0", + "ganache-cli": "^6.9.1", "mocha": "^5.2.0" } } diff --git a/src/babyjub.js b/src/babyjub.js index fe3b27d..38c60d9 100644 --- a/src/babyjub.js +++ b/src/babyjub.js @@ -1,5 +1,5 @@ const bigInt = require("big-integer"); -const ZqField = require("fflib").ZqField; +const ZqField = require("ffjavascript").ZqField; const utils = require("./utils.js"); exports.addPoint = addPoint; diff --git a/src/mimc7.js b/src/mimc7.js index 5cfb421..6ae1a8f 100644 --- a/src/mimc7.js +++ b/src/mimc7.js @@ -1,5 +1,5 @@ const bigInt = require("big-integer"); -const ZqField = require("fflib").ZqField; +const ZqField = require("ffjavascript").ZqField; const Web3Utils = require("web3-utils"); const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); diff --git a/src/mimcsponge.js b/src/mimcsponge.js index 2b3bf6e..6b5e4db 100644 --- a/src/mimcsponge.js +++ b/src/mimcsponge.js @@ -1,6 +1,6 @@ const bigInt = require("big-integer"); const Web3Utils = require("web3-utils"); -const ZqField = require("fflib").ZqField; +const ZqField = require("ffjavascript").ZqField; const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); const SEED = "mimcsponge"; diff --git a/src/poseidon.js b/src/poseidon.js index 479e51c..bbdcf8a 100644 --- a/src/poseidon.js +++ b/src/poseidon.js @@ -1,7 +1,7 @@ const bigInt = require("big-integer"); const blake2b = require("blake2b"); const assert = require("assert"); -const ZqField = require("fflib").ZqField; +const ZqField = require("ffjavascript").ZqField; const utils = require("./utils"); const F = new ZqField(bigInt("21888242871839275222246405745257275088548364400416034343698204186575808495617")); diff --git a/test/aliascheck.js b/test/aliascheck.js index aff1de0..2ec8700 100644 --- a/test/aliascheck.js +++ b/test/aliascheck.js @@ -1,6 +1,5 @@ const chai = require("chai"); const path = require("path"); -const compiler = require("circom"); const assert = chai.assert; @@ -37,23 +36,23 @@ describe("Aliascheck test", function () { it("Satisfy the aliastest 0", async () => { const inp = getBits(bigInt.zero, 254); - await cir.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); }); it("Satisfy the aliastest 3", async () => { const inp = getBits(bigInt(3), 254); - await cir.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); }); it("Satisfy the aliastest q-1", async () => { const inp = getBits(q.minus(bigInt.one), 254); - await cir.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); }); it("Should not satisfy an input of q", async () => { const inp = getBits(q, 254); try { - await cir.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); @@ -64,7 +63,7 @@ describe("Aliascheck test", function () { const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt.one), 254); try { - await cir.calculateWitness({in: inp}); + await cir.calculateWitness({in: inp}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); diff --git a/test/babyjub.js b/test/babyjub.js index e8a84a0..4a89cc8 100644 --- a/test/babyjub.js +++ b/test/babyjub.js @@ -34,7 +34,7 @@ describe("Baby Jub test", function () { y2: bigInt(1) }; - const w = await circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input, true); await circuitAdd.assertOut(w, {xout: bigInt(0), yout: bigInt(1)}); }); @@ -48,7 +48,7 @@ describe("Baby Jub test", function () { y2: bigInt("2626589144620713026669568689430873010625803728049924121243784502389097019475") }; - const w = await circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input, true); await circuitAdd.assertOut(w, { xout: bigInt("6890855772600357754907169075114257697580319025794532037257385534741338397365"), @@ -66,7 +66,7 @@ describe("Baby Jub test", function () { y2: bigInt("20819045374670962167435360035096875258406992893633759881276124905556507972311") }; - const w = await circuitAdd.calculateWitness(input); + const w = await circuitAdd.calculateWitness(input, true); await circuitAdd.assertOut(w, { xout: bigInt("7916061937171219682591368294088513039687205273691143098332585753343424131937"), @@ -75,15 +75,15 @@ describe("Baby Jub test", function () { }); - it("Should check (0,1) is a valid poiny", async() => { - const w = await circuitTest.calculateWitness({x: 0, y:1}); + it("Should check (0,1) is a valid point", async() => { + const w = await circuitTest.calculateWitness({x: 0, y:1}, true); await circuitTest.checkConstraints(w); }); it("Should check (1,0) is an invalid point", async() => { try { - await circuitTest.calculateWitness({x: 1, y: 0}); + await circuitTest.calculateWitness({x: 1, y: 0}, true); assert(false, "Should be a valid point"); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)168700\s!=\s1/.test(err.message) ); @@ -102,7 +102,7 @@ describe("Baby Jub test", function () { in : S }; - const w = await circuitPbk.calculateWitness(input); + const w = await circuitPbk.calculateWitness(input, true); await circuitPbk.assertOut(w, {Ax : A[0], Ay: A[1]}); diff --git a/test/binsub.js b/test/binsub.js index 1e85d22..972f1db 100644 --- a/test/binsub.js +++ b/test/binsub.js @@ -12,7 +12,7 @@ async function checkSub(_a,_b, circuit) { let b=bigInt(_b); if (a.lesser(bigInt.zero)) a = a.add(bigInt.one.shiftLeft(16)); if (b.lesser(bigInt.zero)) b = b.add(bigInt.one.shiftLeft(16)); - const w = await circuit.calculateWitness({a: a, b: b}); + const w = await circuit.calculateWitness({a: a, b: b}, true); let res = a.minus(b); if (res.lesser(bigInt.zero)) res = res.add(bigInt.one.shiftLeft(16)); diff --git a/test/binsum.js b/test/binsum.js index 92f04f6..54d7500 100644 --- a/test/binsum.js +++ b/test/binsum.js @@ -15,9 +15,10 @@ describe("Binary sum test", function () { const circuit = await tester(path.join(__dirname, "circuits", "constants_test.circom")); await circuit.loadConstraints(); - assert.equal(circuit.nWires, 2); + assert.equal(circuit.nVars, 2); + assert.equal(circuit.constraints.length, 1); - const witness = await circuit.calculateWitness({ "in": bigInt("d807aa98", 16)}); + const witness = await circuit.calculateWitness({ "in": bigInt("d807aa98", 16)}, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt("d807aa98", 16))); @@ -26,9 +27,9 @@ describe("Binary sum test", function () { const circuit = await tester(path.join(__dirname, "circuits", "sum_test.circom")); await circuit.loadConstraints(); - assert.equal(circuit.nWires, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) + assert.equal(circuit.constraints.length, 97); // 32 (in1) + 32(in2) + 32(out) + 1 (carry) - const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }); + const witness = await circuit.calculateWitness({ "a": "111", "b": "222" }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt("333"))); diff --git a/test/comparators.js b/test/comparators.js index da6c8d8..ea263e0 100644 --- a/test/comparators.js +++ b/test/comparators.js @@ -15,11 +15,11 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "iszero.circom")); let witness; - witness = await circuit.calculateWitness({ "in": 111}); + witness = await circuit.calculateWitness({ "in": 111}, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": 0 }); + witness = await circuit.calculateWitness({ "in": 0 }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); }); @@ -27,11 +27,11 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "isequal.circom")); let witness; - witness = await circuit.calculateWitness({ "in": [111,222] }); + witness = await circuit.calculateWitness({ "in": [111,222] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [444,444] }); + witness = await circuit.calculateWitness({ "in": [444,444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); }); @@ -39,35 +39,35 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "lessthan.circom")); let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }); + witness = await circuit.calculateWitness({ "in": [333,444] }), true; assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in":[1,1] }); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [661, 660] }); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 1] }); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 444] }); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [1, 0] }); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [555, 0] }); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 0] }); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); }); @@ -76,35 +76,35 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "lesseqthan.circom")); let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in":[1,1] }); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [661, 660] }); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 1] }); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 444] }); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [1, 0] }); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [555, 0] }); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 0] }); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); }); @@ -113,35 +113,35 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "greaterthan.circom")); let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in":[1,1] }); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [661, 660] }); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 1] }); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 444] }); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [1, 0] }); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [555, 0] }); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 0] }); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); }); @@ -149,35 +149,35 @@ describe("Comparators test", function () { const circuit = await tester(path.join(__dirname, "circuits", "greatereqthan.circom")); let witness; - witness = await circuit.calculateWitness({ "in": [333,444] }); + witness = await circuit.calculateWitness({ "in": [333,444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in":[1,1] }); + witness = await circuit.calculateWitness({ "in":[1,1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [661, 660] }); + witness = await circuit.calculateWitness({ "in": [661, 660] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 1] }); + witness = await circuit.calculateWitness({ "in": [0, 1] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [0, 444] }); + witness = await circuit.calculateWitness({ "in": [0, 444] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(0))); - witness = await circuit.calculateWitness({ "in": [1, 0] }); + witness = await circuit.calculateWitness({ "in": [1, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [555, 0] }); + witness = await circuit.calculateWitness({ "in": [555, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); - witness = await circuit.calculateWitness({ "in": [0, 0] }); + witness = await circuit.calculateWitness({ "in": [0, 0] }, true); assert(witness[0].equals(bigInt(1))); assert(witness[1].equals(bigInt(1))); }); diff --git a/test/eddsa.js b/test/eddsa.js index c74ebe9..7d2e02f 100644 --- a/test/eddsa.js +++ b/test/eddsa.js @@ -60,7 +60,7 @@ describe("EdDSA test", function () { const sBits = buffer2bits(pSignature.slice(32, 64)); const aBits = buffer2bits(pPubKey); - const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}); + const w = await circuit.calculateWitness({A: aBits, R8: r8Bits, S: sBits, msg: msgBits}, true); await circuit.checkConstraints(w); }); diff --git a/test/eddsamimc.js b/test/eddsamimc.js index bdb56fc..6e14fd6 100644 --- a/test/eddsamimc.js +++ b/test/eddsamimc.js @@ -35,7 +35,7 @@ describe("EdDSA MiMC test", function () { R8x: signature.R8[0], R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); await circuit.checkConstraints(w); @@ -61,7 +61,7 @@ describe("EdDSA MiMC test", function () { R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); @@ -88,7 +88,7 @@ describe("EdDSA MiMC test", function () { R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); await circuit.checkConstraints(w); diff --git a/test/eddsaposeidon.js b/test/eddsaposeidon.js index 3cc2f6e..31fad9c 100644 --- a/test/eddsaposeidon.js +++ b/test/eddsaposeidon.js @@ -2,7 +2,6 @@ const chai = require("chai"); const path = require("path"); const bigInt = require("big-integer"); const tester = require("circom").tester; -const utils = require("../src/utils"); const eddsa = require("../src/eddsa.js"); @@ -42,7 +41,7 @@ describe("EdDSA Poseidon test", function () { // console.log(JSON.stringify(utils.stringifyBigInts(input))); - const w = await circuit.calculateWitness(input); + const w = await circuit.calculateWitness(input, true); await circuit.checkConstraints(w); }); @@ -66,7 +65,7 @@ describe("EdDSA Poseidon test", function () { R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); assert(false); } catch(err) { assert(/Constraint\sdoesn't\smatch(.*)1\s!=\s0/.test(err.message) ); @@ -93,7 +92,7 @@ describe("EdDSA Poseidon test", function () { R8x: signature.R8[0].add(bigInt(1)), R8y: signature.R8[1], S: signature.S, - M: msg}); + M: msg}, true); await circuit.checkConstraints(w); }); diff --git a/test/escalarmulany.js b/test/escalarmulany.js index ef3dfc9..3a831d0 100644 --- a/test/escalarmulany.js +++ b/test/escalarmulany.js @@ -27,7 +27,7 @@ describe("Escalarmul test", function () { await circuitEMulAny.checkConstraints(w); - await circuitEMulAny.assertOut(w, {out: g}); + await circuitEMulAny.assertOut(w, {out: g}, true); }); @@ -38,7 +38,7 @@ describe("Escalarmul test", function () { await circuitEMulAny.checkConstraints(w); - await circuitEMulAny.assertOut(w, {out: [0,1]}); + await circuitEMulAny.assertOut(w, {out: [0,1]}, true); }); diff --git a/test/escalarmulfix.js b/test/escalarmulfix.js index 2d0a35c..2486695 100644 --- a/test/escalarmulfix.js +++ b/test/escalarmulfix.js @@ -25,13 +25,13 @@ describe("Escalarmul test", function () { await circuit.checkConstraints(w); - await circuit.assertOut(w, {out: [0,1]}); + await circuit.assertOut(w, {out: [0,1]}, true); }); it("Should generate Same escalar mul", async () => { - const w = await circuit.calculateWitness({"e": 1}); + const w = await circuit.calculateWitness({"e": 1}, true); await circuit.checkConstraints(w); @@ -47,7 +47,7 @@ describe("Escalarmul test", function () { bigInt("16950150798460657717958625567821834550301663161624707787222815936182638968203") ]; - const w = await circuit.calculateWitness({"e": s}); + const w = await circuit.calculateWitness({"e": s}, true); await circuit.checkConstraints(w); @@ -67,7 +67,7 @@ describe("Escalarmul test", function () { for (let i=0; i<50; i++) { const s = bigInt(i); - const w = await circuit.calculateWitness({"e": s}); + const w = await circuit.calculateWitness({"e": s}, true); await circuit.checkConstraints(w); @@ -79,7 +79,7 @@ describe("Escalarmul test", function () { it("If multiply by order should return 0", async () => { - const w = await circuit.calculateWitness({"e": babyjub.subOrder }); + const w = await circuit.calculateWitness({"e": babyjub.subOrder }, true); await circuit.checkConstraints(w); diff --git a/test/mimccircuit.js b/test/mimccircuit.js index ae14125..5601811 100644 --- a/test/mimccircuit.js +++ b/test/mimccircuit.js @@ -14,7 +14,7 @@ describe("MiMC Circuit test", function () { }); it("Should check constrain", async () => { - const w = await circuit.calculateWitness({x_in: 1, k: 2}); + const w = await circuit.calculateWitness({x_in: 1, k: 2}, true); const res2 = mimcjs.hash(1,2,91); diff --git a/test/montgomery.js b/test/montgomery.js index 50aea4c..d53fa5a 100644 --- a/test/montgomery.js +++ b/test/montgomery.js @@ -33,17 +33,17 @@ describe("Montgomery test", function () { it("Convert Edwards to Montgomery and back again", async () => { let w, xout, yout; - w = await circuitE2M.calculateWitness({ in: g}); + w = await circuitE2M.calculateWitness({ in: g}, true); - xout = w[circuitE2M.symbols["main.out[0]"].idxWit]; - yout = w[circuitE2M.symbols["main.out[1]"].idxWit]; + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; mg = [xout, yout]; - w = await circuitM2E.calculateWitness({ in: [xout, yout]}); + w = await circuitM2E.calculateWitness({ in: [xout, yout]}, true); - xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; - yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g[0])); assert(yout.equals(g[1])); @@ -53,17 +53,17 @@ describe("Montgomery test", function () { g2 = babyJub.addPoint(g,g); - w = await circuitMDouble.calculateWitness({ in: mg}); + w = await circuitMDouble.calculateWitness({ in: mg}, true); - xout = w[circuitE2M.symbols["main.out[0]"].idxWit]; - yout = w[circuitE2M.symbols["main.out[1]"].idxWit]; + xout = w[circuitE2M.symbols["main.out[0]"].varIdx]; + yout = w[circuitE2M.symbols["main.out[1]"].varIdx]; mg2 = [xout, yout]; - w = await circuitM2E.calculateWitness({ in: mg2}); + w = await circuitM2E.calculateWitness({ in: mg2}, true); - xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; - yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g2[0])); assert(yout.equals(g2[1])); @@ -73,17 +73,17 @@ describe("Montgomery test", function () { g3 = babyJub.addPoint(g,g2); - w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}); + w = await circuitMAdd.calculateWitness({ in1: mg, in2: mg2}, true); - xout = w[circuitMAdd.symbols["main.out[0]"].idxWit]; - yout = w[circuitMAdd.symbols["main.out[1]"].idxWit]; + xout = w[circuitMAdd.symbols["main.out[0]"].varIdx]; + yout = w[circuitMAdd.symbols["main.out[1]"].varIdx]; mg3 = [xout, yout]; - w = await circuitM2E.calculateWitness({ in: mg3}); + w = await circuitM2E.calculateWitness({ in: mg3}, true); - xout = w[circuitM2E.symbols["main.out[0]"].idxWit]; - yout = w[circuitM2E.symbols["main.out[1]"].idxWit]; + xout = w[circuitM2E.symbols["main.out[0]"].varIdx]; + yout = w[circuitM2E.symbols["main.out[1]"].varIdx]; assert(xout.equals(g3[0])); assert(yout.equals(g3[1])); diff --git a/test/multiplexer.js b/test/multiplexer.js index 67b1975..01a8338 100644 --- a/test/multiplexer.js +++ b/test/multiplexer.js @@ -28,7 +28,7 @@ describe("Mux4 test", function() { ]; for (let i=0; i<16; i++) { - const w = await circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); await circuit.checkConstraints(w); @@ -52,7 +52,7 @@ describe("Mux4 test", function() { ]; for (let i=0; i<8; i++) { - const w = await circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); await circuit.checkConstraints(w); @@ -71,7 +71,7 @@ describe("Mux4 test", function() { ]; for (let i=0; i<4; i++) { - const w = await circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); await circuit.checkConstraints(w); @@ -88,7 +88,7 @@ describe("Mux4 test", function() { ]; for (let i=0; i<2; i++) { - const w = await circuit.calculateWitness({ "selector": i }); + const w = await circuit.calculateWitness({ "selector": i }, true); await circuit.checkConstraints(w); diff --git a/test/pedersen.js b/test/pedersen.js index 8308987..5de9276 100644 --- a/test/pedersen.js +++ b/test/pedersen.js @@ -27,7 +27,7 @@ describe("Double Pedersen test", function() { let w; - w = await circuit.calculateWitness({ in: ["0", "0"]}); + w = await circuit.calculateWitness({ in: ["0", "0"]}, true); await circuit.assertOut(w, {out: [0,1]}); @@ -35,7 +35,7 @@ describe("Double Pedersen test", function() { it("Should pedersen at one first generator", async () => { let w; - w = await circuit.calculateWitness({ in: ["1", "0"]}); + w = await circuit.calculateWitness({ in: ["1", "0"]}, true); await circuit.assertOut(w, {out: PBASE[0]}); @@ -43,14 +43,14 @@ describe("Double Pedersen test", function() { it("Should pedersen at one second generator", async () => { let w; - w = await circuit.calculateWitness({ in: ["0", "1"]}); + w = await circuit.calculateWitness({ in: ["0", "1"]}, true); await circuit.assertOut(w, {out: PBASE[1]}); }); it("Should pedersen at mixed generators", async () => { let w; - w = await circuit.calculateWitness({ in: ["3", "7"]}); + w = await circuit.calculateWitness({ in: ["3", "7"]}, true); const r = babyJub.addPoint( babyJub.mulPointEscalar(PBASE[0], 3), @@ -64,7 +64,7 @@ describe("Double Pedersen test", function() { let w; const allOnes = bigInt("1").shiftLeft(250).minus(bigInt("1")); - w = await circuit.calculateWitness({ in: [allOnes, allOnes]}); + w = await circuit.calculateWitness({ in: [allOnes, allOnes]}, true); const r2 = babyJub.addPoint( diff --git a/test/pedersen2.js b/test/pedersen2.js index 9632374..9a9712d 100644 --- a/test/pedersen2.js +++ b/test/pedersen2.js @@ -18,7 +18,7 @@ describe("Pedersen test", function() { let w; - w = await circuit.calculateWitness({ in: 0}); + w = await circuit.calculateWitness({ in: 0}, true); const b = Buffer.alloc(32); @@ -34,7 +34,7 @@ describe("Pedersen test", function() { const n = bigInt.one.shiftLeft(253).minus(bigInt.one); - w = await circuit.calculateWitness({ in: n}); + w = await circuit.calculateWitness({ in: n}, true); const b = Buffer.alloc(32); for (let i=0; i<31; i++) b[i] = 0xFF; diff --git a/test/point2bits.js b/test/point2bits.js index 48eb88e..f0697a1 100644 --- a/test/point2bits.js +++ b/test/point2bits.js @@ -11,12 +11,12 @@ describe("Point 2 bits test", function() { circuit = await tester(path.join(__dirname, "circuits", "pointbits_loopback.circom")); }); it("Should do the both convertions for 8Base", async () => { - const w = await circuit.calculateWitness({ in: babyJub.Base8}); + const w = await circuit.calculateWitness({ in: babyJub.Base8}, true); await circuit.checkConstraints(w); }); it("Should do the both convertions for Zero point", async () => { - const w = await circuit.calculateWitness({ in: [0, 1]}); + const w = await circuit.calculateWitness({ in: [0, 1]}, true); await circuit.checkConstraints(w); }); diff --git a/test/poseidoncircuit.js b/test/poseidoncircuit.js index f1799aa..88f078a 100644 --- a/test/poseidoncircuit.js +++ b/test/poseidoncircuit.js @@ -28,7 +28,7 @@ describe("Poseidon Circuit test", function () { }); it("Should check constrain of hash([1, 2])", async () => { - const w = await circuit.calculateWitness({inputs: [1, 2]}); + const w = await circuit.calculateWitness({inputs: [1, 2]}, true); const hash = poseidon.createHash(6, 8, 57); @@ -41,7 +41,7 @@ describe("Poseidon Circuit test", function () { }); it("Should check constrain of hash([3, 4])", async () => { - const w = await circuit.calculateWitness({inputs: [3, 4]}); + const w = await circuit.calculateWitness({inputs: [3, 4]}, true); const hash = poseidon.createHash(6, 8, 57); diff --git a/test/sha256.js b/test/sha256.js index 3b1cd62..e734490 100644 --- a/test/sha256.js +++ b/test/sha256.js @@ -46,13 +46,13 @@ describe("SHA256 test", function () { const a = buffer2bitArray(b); const b2 = bitArray2buffer(a); - assert.equal(b.toString("hex"), b2.toString("hex")); + assert.equal(b.toString("hex"), b2.toString("hex"), true); }); it("Should calculate a hash of 1 compressor", async () => { const cir = await tester(path.join(__dirname, "circuits", "sha256_2_test.circom")); - const witness = await cir.calculateWitness({ "a": "1", "b": "2" }); + const witness = await cir.calculateWitness({ "a": "1", "b": "2" }, true); const b = new Buffer.alloc(54); b[26] = 1; @@ -83,7 +83,7 @@ describe("SHA256 test", function () { .digest("hex"); const arrIn = buffer2bitArray(b); - const witness = await cir.calculateWitness({ "in": arrIn }); + const witness = await cir.calculateWitness({ "in": arrIn }, true); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); @@ -104,7 +104,7 @@ describe("SHA256 test", function () { const arrIn = buffer2bitArray(b); - const witness = await cir.calculateWitness({ "in": arrIn }); + const witness = await cir.calculateWitness({ "in": arrIn }, true); const arrOut = witness.slice(1, 257); const hash2 = bitArray2buffer(arrOut).toString("hex"); diff --git a/test/sign.js b/test/sign.js index 49715de..b3e9452 100644 --- a/test/sign.js +++ b/test/sign.js @@ -30,49 +30,49 @@ describe("Sign test", function() { it("Sign of 0", async () => { const inp = getBits(bigInt.zero, 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 0}); }); it("Sign of 3", async () => { const inp = getBits(bigInt(3), 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2", async () => { const inp = getBits(q.shiftRight(bigInt.one), 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 0}); }); it("Sign of q/2+1", async () => { const inp = getBits(q.shiftRight(bigInt.one).add(bigInt.one), 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 1}); }); it("Sign of q-1", async () => { const inp = getBits(q.minus(bigInt.one), 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 1}); }); it("Sign of q", async () => { const inp = getBits(q, 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 1}); }); it("Sign of all ones", async () => { const inp = getBits(bigInt(1).shiftLeft(254).minus(bigInt(1)), 254); - const w = await circuit.calculateWitness({in: inp}); + const w = await circuit.calculateWitness({in: inp}, true); await circuit.assertOut(w, {sign: 1}); }); diff --git a/test/smtprocessor.js b/test/smtprocessor.js index 8467073..e257707 100644 --- a/test/smtprocessor.js +++ b/test/smtprocessor.js @@ -11,7 +11,7 @@ function print(circuit, w, s) { console.log(s + ": " + w[circuit.getSignalIdx(s)]); } -async function testInsert(tree, key, value, circuit, log ) { +async function testInsert(tree, key, value, circuit ) { const res = await tree.insert(key,value); let siblings = res.siblings; @@ -26,7 +26,7 @@ async function testInsert(tree, key, value, circuit, log ) { isOld0: res.isOld0 ? 1 : 0, newKey: key, newValue: value - }, log); + }, true); await circuit.checkConstraints(w); @@ -48,7 +48,7 @@ async function testDelete(tree, key, circuit) { isOld0: res.isOld0 ? 1 : 0, newKey: res.delKey, newValue: res.delValue - }); + }, true); await circuit.checkConstraints(w); @@ -182,8 +182,8 @@ describe("SMT Processor test", function () { newValue: 77 }); - const root1 = w[circuit.symbols["main.oldRoot"].idxWit]; - const root2 = w[circuit.symbols["main.newRoot"].idxWit]; + const root1 = w[circuit.symbols["main.oldRoot"].varIdx]; + const root2 = w[circuit.symbols["main.newRoot"].varIdx]; await circuit.checkConstraints(w); diff --git a/test/smtverifier.js b/test/smtverifier.js index 475dd4d..f5992ad 100644 --- a/test/smtverifier.js +++ b/test/smtverifier.js @@ -29,7 +29,7 @@ async function testInclusion(tree, key, circuit) { isOld0: 0, key: key, value: res.foundValue - }); + }, true); await circuit.checkConstraints(w);